pipedrive-mcp
A full-featured Pipedrive CRM MCP server exposing 93 tools for reading, creating, updating, and deleting CRM data through AI assistants.
Deals: list, get, search, summarize (single deal or pipeline), move stage, create, update, delete
Persons & Organizations: full CRUD plus merge (with confirmation)
Activities: list, get, create, update, mark done/undone, delete, and list activity types
Notes & Comments: full CRUD on notes and their comments (HTML content)
Pipelines & Stages: list and get pipelines and stages
Products: full CRUD, search, variations, and deal-product attachments (add/update/remove)
Leads: list, get, create, update, delete, search
Mail: list/read threads and messages, link threads to deals/leads, archive, delete, and look up mail by deal or person
Files: list, get metadata/download URL, and upload base64 files attached to entities
Users, Filters, Custom Fields, Webhooks: list users/permissions, run saved filters, discover custom fields, manage webhook subscriptions
Shortcuts: user-centric workflows like my open deals, overdue/upcoming activities, pipeline summary, stale deals, and people needing follow-up
Custom fields by name: reference fields like
{"Tier": "Enterprise"}instead of API keysSafety guards: destructive ops require confirm tokens (
DELETE/MERGE/YES) and supportdry_runpreviews; write tools can be disabled entirelyExplicit pagination: cursor-based with configurable limits, no silent truncation
Shared-token support:
as_userparameter resolves teammates by name or email on shortcut tools
Enables error tracking and monitoring by forwarding the MCP server's errors and events to a Sentry project, configurable via a Sentry DSN with environment and release tagging.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pipedrive-mcpfind deals with status 'won' this quarter"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pipedrive-mcp
A Model Context Protocol (MCP) server for Pipedrive CRM. Provides 93 tools covering deals, persons, organizations, activities, notes, pipelines, products, leads, files, mail, users, filters, custom fields, webhooks, and shortcut tools for common CRM workflows.
Why this exists
We use Pipedrive as our primary CRM at Comma Compliance. We wanted a way for our non-developer team members to interact with Pipedrive through AI assistants - searching contacts, updating deals, logging activities - without needing to learn the API or build custom integrations.
We're big fans of MCP as a protocol. APIs are great for structured integrations, but MCP hits a different sweet spot - self-documenting tools, built-in schema validation, and a natural interface for conversational interaction. It makes internal tools accessible to people who would never write a curl command. This is the first of several MCP servers we plan to open source, alongside an open source MCP server management tool we're building internally (coming soon).
The existing open source Pipedrive MCP servers we evaluated had issues: single-file monoliths, hardcoded field keys, silent pagination truncation, no write support, stale v1-only implementations. So we built this one from scratch with proper modular architecture, full CRUD, custom field resolution by name, and safety guards on destructive operations.
We've been running this internally for several weeks against our production Pipedrive instance. The test suite includes integration tests recorded from real API responses (sanitized for publication).
Related MCP server: PipeDrive MCP Server
Features
Full CRUD for deals, persons, organizations, activities, notes, products, leads, mail, and webhooks
Custom field resolution - reference fields by human-readable name (e.g.
{"Tier": "Enterprise"}) instead of API keysExplicit pagination - cursor/offset tokens with no silent truncation
Safety guards - destructive operations require explicit confirmation and support
dry_runpreviewsStructured errors - Claude-friendly error messages with category, guidance, and retryability
Rate limiting - respects Pipedrive's rate limits with automatic backoff
v1/v2 API support - uses v2 where available, falls back to v1 where needed
Quick start
git clone https://github.com/comma-compliance/pipedrive-mcp.git
cd pipedrive-mcp
npm install
npm run buildConfiguration
Copy .env.example to .env and set your Pipedrive credentials:
PIPEDRIVE_API_TOKEN=your-api-token-here
PIPEDRIVE_COMPANY_DOMAIN=yourcompanyFind your API token in Pipedrive under Settings > Personal preferences > API.
Your company domain is the subdomain in your Pipedrive URL (e.g. yourcompany for yourcompany.pipedrive.com).
Optional settings
Variable | Default | Description |
|
| HTTP request timeout |
|
| Default page size |
|
| Maximum page size |
|
| General rate limit per 2s |
|
| Search rate limit per 2s |
|
| Field metadata cache TTL (5 min) |
|
| Set |
|
|
|
| (none) | Sentry DSN to enable error tracking (omit to disable) |
|
| Sentry environment tag |
| (none) | Sentry release tag |
Usage with Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"pipedrive": {
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/pipedrive-mcp",
"env": {
"PIPEDRIVE_API_TOKEN": "your-api-token",
"PIPEDRIVE_COMPANY_DOMAIN": "yourcompany"
}
}
}
}Usage with Codex
Create a codex.json or pass the server config when launching Codex:
{
"mcpServers": {
"pipedrive": {
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/pipedrive-mcp",
"env": {
"PIPEDRIVE_API_TOKEN": "your-api-token",
"PIPEDRIVE_COMPANY_DOMAIN": "yourcompany"
}
}
}
}Or if running via Docker:
{
"mcpServers": {
"pipedrive": {
"type": "stdio",
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "PIPEDRIVE_API_TOKEN=your-api-token", "-e", "PIPEDRIVE_COMPANY_DOMAIN=yourcompany", "pipedrive-mcp"]
}
}
}Usage with Docker
docker build -t pipedrive-mcp .
docker run -e PIPEDRIVE_API_TOKEN=xxx -e PIPEDRIVE_COMPANY_DOMAIN=yourcompany pipedrive-mcpTools
Deals (8 tools)
pipedrive_deals_list pipedrive_deals_get pipedrive_deals_search pipedrive_deals_summary pipedrive_deals_move_stage pipedrive_deals_create pipedrive_deals_update pipedrive_deals_delete
Persons (7 tools)
pipedrive_persons_list pipedrive_persons_get pipedrive_persons_search pipedrive_persons_create pipedrive_persons_update pipedrive_persons_delete pipedrive_persons_merge
Organizations (7 tools)
pipedrive_organizations_list pipedrive_organizations_get pipedrive_organizations_search pipedrive_organizations_create pipedrive_organizations_update pipedrive_organizations_delete pipedrive_organizations_merge
Activities (7 tools)
pipedrive_activities_list pipedrive_activities_get pipedrive_activities_create pipedrive_activities_update pipedrive_activities_mark_done pipedrive_activities_delete pipedrive_activity_types_list
Notes & Comments (10 tools)
pipedrive_notes_list pipedrive_notes_get pipedrive_notes_create pipedrive_notes_update pipedrive_notes_delete pipedrive_note_comments_list pipedrive_note_comments_get pipedrive_note_comments_create pipedrive_note_comments_update pipedrive_note_comments_delete
Pipelines & Stages (4 tools)
pipedrive_pipelines_list pipedrive_pipelines_get pipedrive_stages_list pipedrive_stages_get
Products (15 tools)
pipedrive_products_list pipedrive_products_get pipedrive_products_create pipedrive_products_update pipedrive_products_delete pipedrive_products_search pipedrive_product_variations_list pipedrive_product_variations_create pipedrive_product_variations_update pipedrive_product_variations_delete pipedrive_product_deals_list pipedrive_deal_products_list pipedrive_deal_products_add pipedrive_deal_products_update pipedrive_deal_products_delete
Leads (6 tools)
pipedrive_leads_list pipedrive_leads_get pipedrive_leads_create pipedrive_leads_update pipedrive_leads_delete pipedrive_leads_search
Mail (8 tools)
pipedrive_mail_threads_list pipedrive_mail_threads_get pipedrive_mail_thread_messages_list pipedrive_mail_messages_get pipedrive_mail_threads_update pipedrive_mail_threads_delete pipedrive_deal_mail_messages_list pipedrive_person_mail_messages_list
Read and manage synced email threads and messages from Pipedrive's mailbox. List threads by folder (inbox, drafts, sent, archive), read individual messages with optional body content, link threads to deals or leads, and look up mail associated with a specific deal or person.
Files (3 tools)
pipedrive_files_list pipedrive_files_get pipedrive_files_upload
Users (3 tools)
pipedrive_users_list pipedrive_users_get pipedrive_users_permissions
Filters (3 tools)
pipedrive_filters_list pipedrive_filters_get pipedrive_filters_results
Custom Fields (1 tool)
pipedrive_custom_fields_list
Webhooks (3 tools)
pipedrive_webhooks_list pipedrive_webhooks_create pipedrive_webhooks_delete
Shortcuts (8 tools)
pipedrive_me pipedrive_my_open_deals pipedrive_my_overdue_activities pipedrive_my_upcoming_activities pipedrive_recently_updated pipedrive_my_pipeline_summary pipedrive_stale_deals pipedrive_people_needing_followup
These are opinionated wrappers around the core tools designed for common CRM workflows. They auto-resolve the current user from the API token so you don't need to know your numeric owner ID.
All shortcut tools support an optional as_user parameter for shared API token scenarios (e.g. multiple team members accessing Pipedrive through a single MCP server). Pass a name or email and it resolves against the Pipedrive users list:
{ "name": "pipedrive_my_open_deals", "arguments": { "as_user": "Sasha" } }
{ "name": "pipedrive_my_overdue_activities", "arguments": { "as_user": "sasha@company.com" } }Tool | What it does |
| Show current user profile, or resolve a teammate by name/email |
| Open deals owned by the current user, sorted by recently updated |
| Past-due undone activities |
| Activities in the next N days (default 7) |
| Deals, persons, or orgs updated in the last N days |
| Stage-by-stage breakdown with deal counts and total values |
| Open deals not updated in N+ days (default 30) |
| Contacts with no next activity scheduled |
Custom fields
Reference custom fields by name instead of API key:
{
"name": "pipedrive_deals_update",
"arguments": {
"deal_id": 42,
"custom_fields_by_name": {
"Tier": "Enterprise",
"Expected Revenue": 50000
}
}
}Use pipedrive_custom_fields_list to discover available fields for each entity type.
Safety guards
All destructive operations require explicit confirmation:
Delete tools require
confirm: "DELETE"Merge tools require
confirm: "MERGE"Webhook create/delete require
confirm: "YES"
All destructive tools support dry_run: true to preview what would happen without executing.
Set PIPEDRIVE_ENABLE_WRITE_TOOLS=false to disable all write operations entirely.
Development
npm run dev # Watch mode
npm test # Run tests
npm run test:watch # Watch tests
npm run lint # Type checkTesting
Tests use vitest with nock for HTTP mocking. No live API calls are made during tests.
npm testArchitecture
src/
index.ts # Entry point
server.ts # MCP server setup
config.ts # Environment variable loading
logging.ts # Structured logging
mcp/ # MCP protocol helpers
pipedrive/ # HTTP client, pagination, rate limiting, retries
services/ # Custom fields, summaries, guards, cache
schemas/ # Zod input schemas per entity
tools/ # Tool handlers per entity
presenters/ # Response formattingContributing
Contributions are welcome! Here's how to get started:
Fork the repo and create a feature branch
npm install && npm run buildto verify the buildMake your changes - follow the existing patterns (one file per entity in
src/tools/andsrc/schemas/)Add tests for new functionality
npm testto make sure everything passesnpm run lintto verify typesOpen a PR with a clear description of what you changed and why
A few ground rules:
No
@ts-ignore- fix the types properlyNo hardcoded Pipedrive field keys or option IDs
All destructive tools must require explicit confirmation and support
dry_runUse native
fetch(not axios)Never commit real Pipedrive data - sanitize any test fixtures
License
MIT
Available Tools
93 toolspipedrive_activities_createC
Create a new activity (call, meeting, task, etc). The note field, if supplied, is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | ||
| note | No | Plain HTML markup for the activity note (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. | |
| type | Yes | Activity type key_string. Workspace-defined; common defaults include 'call', 'meeting', 'task', 'deadline', 'email', 'lunch'. Call pipedrive_activity_types_list first if unsure which types are configured for this workspace. | |
| org_id | No | ||
| deal_id | No | ||
| lead_id | No | ||
| subject | Yes | Activity subject | |
| user_id | No | ||
| due_date | No | Due date (YYYY-MM-DD) | |
| due_time | No | Due time (HH:MM) | |
| duration | No | Duration (HH:MM) | |
| location | No | ||
| person_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool, yet it never states side effects (record creation, webhook/notification triggers), auth or scope requirements, or error behavior. Its one behavioral claim — that the note is plain HTML passed without a CDATA wrapper — duplicates the note parameter's schema description rather than adding new context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no filler — effectively sized. The second sentence, however, restates schema content, so one of the two sentences does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter create tool with no annotations, no output schema, and roughly half the parameters undocumented, the description is far too thin to be complete. It gives no linkage semantics (which IDs link the activity to deals/persons/orgs/leads) and no post-creation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 46%, so the description should compensate for the undocumented parameters (org_id, deal_id, lead_id, user_id, location, person_id, duration, etc.). Instead it addresses only 'note' and repeats what the schema already says, leaving most of the 13 parameters unexplained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new activity') and names concrete instances (call, meeting, task), which cleanly separates it from siblings like activities_get, activities_update, activities_list, and activities_mark_done. It stops short of explicitly routing the agent between create vs. update/mark_done, so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance in the description, no prerequisites, and no mention of alternatives such as activities_update or activities_mark_done. The only routing hint ('call pipedrive_activity_types_list first') lives in the schema, not the description, so the description itself offers no contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activities_deleteB
Delete an activity. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| activity_id | Yes | The activity ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does disclose two useful behaviors: the explicit confirmation token gate and a dry-run preview mode. It omits what deletion actually destroys (linked notes, deal associations), permission requirements, and reversibility, which matters for an irreversible mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core action front-loaded and zero filler. It is efficient, though the telegraphic style leaves the confirm/dry_run mentions as bare facts rather than integrated guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description covers the confirmation guard and preview mode but is silent on consequences, permissions, and error behavior. It is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so activity_id, confirm, dry_run and reason are all already documented with types, const, default and notes. The description only restates confirm and dry_run, adding no syntax or meaning beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete an activity") so the agent immediately knows the operation. It does not, however, distinguish itself from nearby siblings such as pipedrive_activities_mark_done or pipedrive_activities_update, which an agent could confuse with deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a guarded destructive workflow (must pass confirm: "DELETE", dry_run available) but never says when to prefer this over mark_done/update or when deletion is appropriate. Usage is inferable from the operation name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activities_getB
Get a single activity by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| activity_id | Yes | The activity ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description should disclose behavioral traits. It only restates the obvious (get by ID), missing info on read-only nature, authentication, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Efficiently conveys the essential information for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get with one parameter and no output schema, the description is mostly sufficient. It could mention that it returns the full activity object, but the agent can infer this from the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter description already present. Description does not add extra meaning beyond the schema. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get', resource 'activity', and qualifier 'single by ID'. It distinguishes from siblings like pipedrive_activities_list which retrieves multiple activities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Lacks context on prerequisites (e.g., needing an existing activity ID) or when to prefer get over list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activities_listC
List activities with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | Filter by done status | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| org_id | No | Filter by organization ID | |
| deal_id | No | Filter by deal ID | |
| lead_id | No | Filter by lead ID | |
| sort_by | No | Field to sort by | |
| user_id | No | Filter by user ID | |
| owner_id | No | User ID of the owner | |
| person_id | No | Filter by person ID | |
| sort_direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only mentions 'pagination' generically and says nothing about permissions, whether results are scoped to the authenticated user, default sort order, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity contributes to the missing guidance rather than being a virtue in itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter list tool with no annotations and no output schema, the description is too thin. It leaves the agent without scope, default behavior, or result-format expectations that annotations or an output schema would otherwise supply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every one of the 11 parameters documented inline (enums, ranges, defaults). The description adds nothing beyond the schema's own 'filters and pagination' framing, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (activities), so the core operation is unambiguous. However, it does nothing to distinguish itself from siblings like pipedrive_my_upcoming_activities or pipedrive_my_overdue_activities, which are also activity lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no indication of when to prefer this over the scoped activity-list siblings. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activities_mark_doneC
Mark an activity as done or undone.
| Name | Required | Description | Default |
|---|---|---|---|
| done | Yes | true to mark done, false to mark undone | |
| activity_id | Yes | The activity ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It only says 'Mark', implying mutation, but omits side effects, permissions, error states, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise but lacks structure. It could be improved by front-loading the core action and adding brief context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle operation, the description misses key details: what happens if activity is already in requested state, required user permissions, and return value. Completeness is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning beyond what the schema already provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Mark) and the resource (activity) with the state change (done/undone). It is specific enough to distinguish from sibling tools like create, delete, get, list, update, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided regarding when to use this tool versus alternatives. The description does not mention prerequisites, context, or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activities_updateC
Update an existing activity. The note field, if supplied, is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| done | No | ||
| note | No | Updated plain HTML markup for the activity note (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. | |
| type | No | Activity type key_string. Workspace-defined; common defaults include 'call', 'meeting', 'task', 'deadline', 'email', 'lunch'. Call pipedrive_activity_types_list first if unsure which types are configured for this workspace. | |
| org_id | No | ||
| deal_id | No | ||
| lead_id | No | ||
| subject | No | ||
| user_id | No | ||
| due_date | No | ||
| due_time | No | ||
| duration | No | ||
| location | No | ||
| person_id | No | ||
| activity_id | Yes | The activity ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the note field is raw HTML with no CDATA wrapper, but says nothing about permission requirements, whether omitted fields are cleared or preserved, reversibility, or rate limits for a mutation endpoint. One behavioral detail is not enough for a 14-parameter write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. The second sentence is arguably redundant with the schema's note description, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation with no annotations, no output schema, and 21% parameter coverage, the description is far too thin. An agent has no basis for deciding which fields to send, what happens to unsent fields, or whether it needs activity-type discovery first.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 21% (activity_id, note, type), leaving 11 parameters (done, org_id, deal_id, lead_id, subject, user_id, due_date, due_time, duration, location, person_id) undocumented in both schema and description. The note/HTML remark in the description largely repeats the schema's own note description, so it adds little compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (an existing activity), so it is distinguishable from pipedrive_activities_create, pipedrive_activities_delete and pipedrive_activities_get. It does not, however, mention how it relates to the overlapping pipedrive_activities_mark_done sibling, whose job overlaps with the `done` parameter here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to update versus mark an activity done, no statement about partial vs. full replacement semantics, and no mention of prerequisites such as needing the activity ID to exist. The only inference available is the implied 'this changes an existing record'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_activity_types_listA
List the activity type key_strings configured for this workspace. Call this before creating an activity if you aren't sure which 'type' values are valid.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. 'List the activity type key_strings configured for this workspace' makes the read-only, non-mutating nature and workspace scoping clear, though it does not explicitly state permissions or that no side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The resource is described first and the usage condition second, which is the correct front-loaded ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless reference-lookup tool with no annotations and no output schema, the description covers what the tool does and when to invoke it. It could add a note on the returned shape (e.g., key_string plus display name), but what is present is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4. There is nothing further to document, and the description's mention of 'key_strings' clarifies what the null-input call consumes and returns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('activity type key_strings'), plus the scope constraint ('configured for this workspace'). It is clearly distinguishable from siblings like pipedrive_activities_list, which returns activity records rather than the type vocabulary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to call it: 'before creating an activity if you aren't sure which "type" values are valid.' This names both the trigger condition and the downstream dependency, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_custom_fields_listA
List field metadata for an entity type. Returns field keys, names, types, and options for enum/set fields. Use this to discover available custom fields before using custom_fields_by_name.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| entity_type | Yes | Entity type to list fields for | |
| refresh_cache | No | Force refresh the field metadata cache | |
| include_options | No | Include enum/set option values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses what is returned (keys, names, types, options) and implies a read-only listing via "List," but says nothing about the metadata caching behavior (refresh_cache), pagination semantics, or rate limits that matter for a paged read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: purpose first, return shape second, routing guidance third. The most actionable information (what it lists and what it returns) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description usefully fills the biggest gap by describing the return payload (keys, names, types, options). Pagination behavior and cache semantics are only covered by the schema, which is acceptable, but a note on when a refresh is warranted would complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters, including the entity_type enum and the limit/cursor/refresh_cache/include_options fields, are already documented in the schema. The description adds no syntax or format detail beyond what the schema provides, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("List field metadata for an entity type") and immediately discloses the returned content (field keys, names, types, enum options). It also names a companion tool, custom_fields_by_name, which an agent can use to distinguish this discovery tool from the consumer tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use condition ("Use this to discover available custom fields before using custom_fields_by_name") and names the alternative tool. It stops short of stating when-not to use it, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deal_mail_messages_listC
List mail messages linked to a deal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| deal_id | Yes | The deal ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read but does not disclose pagination behavior (limit/cursor), result ordering, empty-result handling, or whether mail sync/permissions affect results. For a no-annotation tool this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler and the resource/scoping front-loaded. It is efficient, though its brevity comes at the cost of any routing or behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with fully documented params and no output schema, the description is minimally adequate. It omits the differentiation from sibling mail-message listers and any hints on results, which an agent would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so deal_id, limit, and cursor are already documented in the schema. The description adds no extra semantics (e.g., deal_id format, default paging) beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (mail messages) with a scoping qualifier (linked to a deal), so the agent knows what it returns. It does not distinguish itself from similar siblings like pipedrive_person_mail_messages_list or pipedrive_mail_thread_messages_list, leaving the agent to infer the difference from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisite for how a deal_id is obtained, and no naming of the alternative mail-message listers that would help the agent pick this one. The description simply restates the operation without routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deal_products_addC
Attach a product to a deal with price/quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID | |
| comments | No | ||
| discount | No | ||
| quantity | Yes | Quantity | |
| item_price | Yes | Price per unit | |
| product_id | Yes | The product ID to attach | |
| tax_method | No | ||
| product_variation_id | No | Optional product variation ID (from pipedrive_product_variations_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a mutation ('attach') but never states permission requirements, what happens when a product is already attached, whether the call is idempotent, or what the response contains. For a write tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and no filler. It is efficient, though arguably too terse given the tool's 8-parameter complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 8 parameters, no annotations, and no output schema, the description is far too thin. It leaves undocumented parameters, side effects, and error/return behavior entirely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 63%, and the description adds nothing beyond echoing 'price/quantity'. Optional parameters like discount, tax_method, comments, and product_variation_id are left entirely to the (partially undocumented) schema, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Attach a product to a deal') and hints at the key fields (price/quantity), so an agent immediately knows the operation. It does not, however, distinguish itself from the sibling pipedrive_deal_products_update or explain the relationship to product_variations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus pipedrive_deal_products_update or pipedrive_deal_products_list, nor any stated prerequisites (e.g., the deal and product must already exist). The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deal_products_deleteB
Remove a product from a deal. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| deal_id | Yes | The deal ID | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| deal_product_id | Yes | The deal-product attachment ID to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It does add value by flagging the mandatory confirmation string and dry_run preview, but says nothing about irreversibility, required permissions, or side effects (e.g., deal value recalculation) for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded fragments with no filler — the core action comes first, followed by the two operational caveats. Telegraphic style leaves no wasted words, though it is terse to the point of terseness rather than fully structured prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no annotations and no output schema, the description covers the confirmation and preview mechanics but omits expected return behavior and the consequences of deletion. It is adequate but leaves meaningful gaps for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (confirm, dry_run, deal_id, deal_product_id, reason) is already documented in the schema. The description merely restates confirm and dry_run without adding syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a product from a deal'), which is unambiguous on its own. It doesn't explicitly differentiate from sibling pipedrive_deal_products_update, though the verb 'remove' naturally contrasts with add/update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of 'Requires confirm: "DELETE"' and 'Supports dry_run' implies the intended workflow (confirm first, optionally preview), but there is no explicit when-to-use guidance or routing away from sibling tools like pipedrive_deal_products_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deal_products_listB
List products attached to a deal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| deal_id | Yes | The deal ID | |
| sort_by | No | ||
| sort_direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description says nothing about pagination behavior (cursor/limit), rate limits, permissions, or what the response contains. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It is appropriately sized for a simple list endpoint, though its brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward list tool, the required deal_id and pagination parameters are documented in the schema, and no output schema exists. However, with no annotations and no usage context, the description is minimally adequate but does not help an agent understand when or why to call this tool over its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents most parameters, including limit, cursor, and deal_id; only sort_by lacks a description. The description adds no parameter meaning beyond the one-sentence purpose, so the baseline 3 for high coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('products attached to a deal'), which clearly implies the direction of the relationship versus the sibling pipedrive_product_deals_list. However, it does not explicitly name or differentiate from any sibling tool, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives such as pipedrive_product_deals_list or pipedrive_products_list. It also omits prerequisites like required permissions or whether the deal must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deal_products_updateC
Update a product attachment on a deal.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID | |
| comments | No | ||
| discount | No | ||
| quantity | No | ||
| item_price | No | ||
| tax_method | No | ||
| deal_product_id | Yes | The deal-product attachment ID | |
| product_variation_id | No | Optional product variation ID (from pipedrive_product_variations_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'Update' implies mutation, but nothing is said about partial vs. full update semantics, whether omitted fields are cleared, required permissions, or reversibility. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words, but for an 8-parameter mutation it is under-specified rather than genuinely concise. Brevity here comes at the cost of usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, low schema coverage, no annotations, and no output schema, the description is far too thin. An agent gets no field semantics, no update behavior, and no return expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38% — 6 of 8 parameters (comments, discount, quantity, item_price, tax_method, product_variation_id) lack schema descriptions. The description names no parameters at all, so it fails to compensate for the coverage shortfall on this 8-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (product attachment on a deal), which is distinguishable from siblings like pipedrive_deal_products_add, _delete, and _list. It's clear but does not explicitly name or contrast against those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus pipedrive_deal_products_add, _delete, or pipedrive_deals_update. No prerequisites (e.g., the deal product must already exist) are stated, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_createC
Create a new deal. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Deal title | |
| value | No | ||
| org_id | No | ||
| status | No | ||
| currency | No | ||
| stage_id | No | ||
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| person_id | No | ||
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| pipeline_id | No | ||
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| expected_close_date | No | ||
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no permission/auth requirements, no mention of side effects such as triggering webhooks or affecting deal counts, no deduplication behavior, and no return information. Only 'create' implies mutation; the mutation semantics themselves are undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core action and then the two special-case input mechanisms. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter write tool with no annotations, no output schema, and 38% schema coverage, the description is too thin. An agent still lacks guidance on required companion IDs, visibility/permission implications, and typical success/failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 38% across 13 parameters, so the description should compensate. It adds genuine meaning for custom_fields (key vs human-readable name), custom_fields_by_name, and label_ids (IDs or names, replaces existing labels), but says nothing about value, org_id, status, currency, stage_id, person_id, pipeline_id, visible_to, or expected_close_date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new deal') and immediately scopes the two non-obvious capabilities it supports: custom fields by name or key, and the native Label field via label_ids. It implicitly distinguishes itself from pipedrive_deals_update/deals_get, but never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites (e.g. needing a pipeline/stage or person/org before creating), and no mention of how it relates to pipedrive_deals_update or the search/list siblings. The only routing hint is the note that labels go in label_ids rather than a custom field, which is really a parameter detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_deleteA
Delete a deal. Requires confirm: "DELETE". Supports dry_run for preview.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| deal_id | Yes | The deal ID to delete | |
| dry_run | No | If true, returns a preview of what would happen without executing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the confirmation requirement and dry_run preview behavior, which is useful. But it doesn't state whether deletion is permanent or reversible, what permissions are required, or what happens to associated entities (activities, notes, products). For a destructive operation, these are meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no wasted words, front-loads the action and the required confirmation. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is too thin. It omits critical behavioral facts: permanence, required permissions, side effects on related records, and whether dry_run returns output schema information. The confirmation mechanism is covered, but the overall picture is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters (deal_id, confirm, dry_run, reason). The description adds a high-level summary but doesn't provide additional meaning beyond what the schema already conveys. Baseline 3 is appropriate when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (a deal), immediately distinguishing it from siblings like pipedrive_deals_get, pipedrive_deals_update, or pipedrive_deals_move_stage. No ambiguity about what the operation does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the guardrails (confirm must equal "DELETE", dry_run available for preview), which implies when to use each mode. However, it doesn't mention alternatives (e.g., pipedrive_deals_update for archiving) or when deletion is preferable. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_getA
Get a single deal by ID with full details including resolved custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID to retrieve | |
| include_fields | No | Additional fields to include in the response | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a read-only lookup and 'resolved custom fields' hints at how custom data is returned, but there is no mention of error behavior for invalid/inaccessible IDs, permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action, the key lookup, and the notable return content. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with no output schema, the description conveys what comes back ('full details including resolved custom fields'). It is adequate, though it could note that include_fields/custom_field_keys control the extra response content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so deal_id, include_fields, and custom_field_keys are already documented in the schema. The description only loosely gestures at custom fields and adds no syntax or format detail beyond the structured fields, matching the baseline for fully-covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single deal by ID') and scope ('full details including resolved custom fields'). The 'single deal by ID' phrasing implicitly distinguishes it from the list/search siblings, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is for retrieving one known deal rather than browsing or searching. There is no explicit statement of when to prefer this over pipedrive_deals_list, pipedrive_deals_search, or pipedrive_deals_summary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_listB
List deals with filters and pagination. Returns compact deal summaries with IDs, titles, stages, values, and linked entity IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Filter by deal IDs | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| org_id | No | Filter by linked organization ID | |
| status | No | Filter by deal status | |
| sort_by | No | Field to sort by | |
| owner_id | No | User ID of the owner | |
| stage_id | No | Filter by stage ID | |
| filter_id | No | Pipedrive filter ID to apply | |
| person_id | No | Filter by linked person ID | |
| pipeline_id | No | Filter by pipeline ID | |
| updated_since | No | Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z) | |
| updated_until | No | Filter by update time upper bound (ISO 8601 format) | |
| include_fields | No | Additional fields to include in the response | |
| sort_direction | No | Sort direction | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (compact summaries with IDs, titles, stages, values, linked entity IDs) and implies pagination, but says nothing about authorization scope, rate limits, or whether filtering is server-side. For a 16-parameter read tool with zero annotation coverage this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and it front-loads the core action and the return contract. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 optional parameters, no output schema, and no annotations, the description covers the basics (listing, filtering, pagination, return fields) but leaves the agent without routing guidance versus sibling list/search/summary tools and without any filter-combination or empty-result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 16 parameters are already documented in the schema. The description adds no filter-specific semantics or interaction rules (e.g. how ids combines with status, or how filter_id interacts with other filters), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List deals') plus the two operational dimensions (filters, pagination) and the return shape. It is clear and not tautological, but it never distinguishes itself from close siblings like pipedrive_deals_search, pipedrive_deals_summary, or pipedrive_my_open_deals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. With sibling tools such as pipedrive_deals_search, pipedrive_my_open_deals, and pipedrive_stale_deals in the same family, the description gives the agent no condition for choosing this tool over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_move_stageC
Move a deal to a different stage (and optionally pipeline).
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The deal ID to move | |
| stage_id | Yes | The target stage ID | |
| pipeline_id | No | Target pipeline ID (if moving across pipelines) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only says 'move'. It does not disclose whether the operation is reversible, whether it requires write permissions, whether it triggers stage-change automations or activity logging, or what the response contains. For a mutation tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the optional-pipeline caveat is parenthetically scoped rather than buried. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description omits permissions, side effects, reversibility, and the relationship between stage_id and pipeline_id. It is not complete enough for an agent to invoke it confidently in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: deal_id, stage_id and pipeline_id are each documented in the schema. The description's '(and optionally pipeline)' adds a mild hint about pipeline_id being conditional, matching the schema, but nothing beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('move') and resource ('a deal') plus the target attribute ('stage', optionally 'pipeline'), so an agent knows exactly what operation is performed. It does not differentiate itself from the sibling pipedrive_deals_update, which could also plausibly alter a deal's stage, leaving the boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this specialized move tool versus the generic pipedrive_deals_update, nor any mention of prerequisites such as needing a valid stage_id from pipedrive_stages_list or that the stage must belong to the target pipeline. The agent must infer all of this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_searchB
Search deals by term. Returns matching deals with relevance scoring.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term | |
| limit | No | Number of search results per page (default 10, max 50) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| fields | No | Fields to search in (e.g. 'title,custom_fields') | |
| status | No | Filter by deal status | |
| person_id | No | Filter by person ID | |
| exact_match | No | Whether to do an exact match | |
| include_fields | No | Additional fields to include in the search results | |
| organization_id | No | Filter by organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose return behavior beyond the schema ('matching deals with relevance scoring'), which is useful, and the verb 'search/returns' implies a safe read. It says nothing about permissions, rate limits, or pagination semantics (cursor handling), which the schema only partially covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and zero filler. It is efficient, though arguably too terse given the tool's 9-parameter surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with no output schema, the description is only partially complete: it gestures at the return shape (relevance-scored matches) but omits pagination behavior and any hint that filtering by status/person/organization is supported. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 9 parameters, so the schema already documents term, limit, cursor, fields, status, person_id, exact_match, include_fields, and organization_id. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (deals) plus the search mode ('by term'), so the agent knows this is keyword search rather than a full listing. However, it does not distinguish itself from close siblings such as pipedrive_deals_list, pipedrive_deals_get, or pipedrive_deals_summary, so sibling disambiguation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Search deals by term' implies usage (use when you have a keyword to match), but there is no explicit when-to-use, when-not-to-use, or named alternative among the many deal siblings. An agent must guess between this and deals_list/deals_get for retrieval tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_summaryB
Get a Claude-friendly deal or pipeline snapshot. Pass deal_id for a single deal summary with optional activities/notes/products. Omit deal_id for a pipeline overview with stage counts.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | ||
| status | No | ||
| deal_id | No | Get summary for a specific deal | |
| owner_id | No | User ID of the owner | |
| stage_id | No | ||
| person_id | No | ||
| pipeline_id | No | ||
| include_notes | No | ||
| include_products | No | ||
| include_recent_activities | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Get' implies a read, and it discloses what each mode returns (stage counts; optional activities/notes/products), but says nothing about permissions, rate limits, pagination, or result size for a 10-parameter aggregation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the tool's purpose before the mode-switching detail. Every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no annotations and no output schema, the description explains the two modes and the optional includes but leaves most filter parameters and the response shape unaddressed. Adequate minimum, but gaps remain that an agent must probe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so six-plus parameters (org_id, status, stage_id, person_id, pipeline_id, include_recent_activities) have no documentation anywhere. The description adds meaning for deal_id and the include_* flags ('with optional activities/notes/products'), partially compensating, but the filter parameters remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get a Claude-friendly deal or pipeline snapshot') and clearly delineates two operating modes based on deal_id. It does not, however, differentiate itself from close siblings such as pipedrive_deals_get or pipedrive_my_pipeline_summary, leaving the agent to infer which summary tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit mode-selection guidance: pass deal_id for a single-deal summary, omit it for a pipeline overview. That covers internal branching but offers no cross-tool guidance, no mention of when to prefer pipedrive_deals_get, pipedrive_my_pipeline_summary, or pipedrive_deals_list instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_deals_updateC
Update an existing deal. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| value | No | ||
| org_id | No | ||
| status | No | ||
| deal_id | Yes | The deal ID to update | |
| currency | No | ||
| stage_id | No | ||
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| person_id | No | ||
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| pipeline_id | No | ||
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| expected_close_date | No | ||
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a mutation but says nothing about permission/ownership requirements, whether this is a partial update, how omitted fields are treated, or reversibility. The one behavioral detail (label_ids replaces existing labels) is already stated in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and no filler. Nothing wasted, though it is arguably too terse for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter mutation tool with no annotations, no output schema, and 36% param coverage, the description is far too thin. It omits update semantics, permission expectations, and error/partial-failure behavior an agent would need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (36%) across 14 parameters, so the description should compensate. It only addresses custom fields and the label field, leaving title, value, status, stage_id, pipeline_id, person_id, org_id, currency, and expected_close_date undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing deal'), which cleanly separates it from pipedrive_deals_create, pipedrive_deals_delete, and pipedrive_deals_move_stage. It does not explicitly name any sibling, but the CRUD verb makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternatives named, and no prerequisites (e.g., when to prefer deals_move_stage over stage_id here). It only restates the capability, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_files_getB
Get file metadata and optional download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The file ID to retrieve | |
| include_download_url | No | Include a temporary download URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that the return includes metadata plus an optional (temporary) download URL, which is useful, but it says nothing about permissions, error behavior, or what metadata fields are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the core action and the optional output are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations exist, so the description is the only guide. It covers the action and the optional URL but omits the shape of the returned metadata and any auth or error context, leaving it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description only restates that the download URL is optional, adding no syntax or format detail beyond the structured fields, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get file metadata') and adds scope ('optional download URL'). It is clearly distinguishable from siblings like pipedrive_files_list and pipedrive_files_upload, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus pipedrive_files_list or how to obtain a valid file_id. The agent must infer usage entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_files_listC
List files, optionally scoped to an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| org_id | No | Filter by organization ID | |
| deal_id | No | Filter by deal ID | |
| lead_id | No | Filter by lead ID | |
| person_id | No | Filter by person ID | |
| product_id | No | Filter by product ID | |
| activity_id | No | Filter by activity ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. Pagination, sort behavior, permissions, and result shape are all unmentioned; only the schema's cursor/limit params hint at paging. This is a significant gap for a nine-parameter listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is front-loaded and waste-free, but for a nine-parameter tool with no annotations and no output schema it is arguably too terse rather than genuinely concise. It is appropriately sized only in the loosest sense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should convey more about return behavior and filtering semantics, but it does not. The high schema coverage mitigates the parameter gap, yet the absence of any behavioral or return context leaves the definition incomplete for a listing endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents each filter (org_id, deal_id, person_id, etc.) and the pagination params. The description adds only the abstract notion of entity scoping, which is marginal value beyond what the schema states. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List files') and adds a scoping hint ('optionally scoped to an entity'), which distinguishes it from the singular pipedrive_files_get. However, it does not name or contrast the sibling, and the notion of 'entity' is left ambiguous given nine possible entity filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally scoped to an entity' implies the tool can be used broadly or filtered, but there is no explicit when-to-use guidance, no mention of the alternative (files_get for a single file), and no exclusions. The agent must infer routing from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_files_uploadC
Upload a base64-encoded file and attach to an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | Attach to this organization | |
| deal_id | No | Attach to this deal | |
| lead_id | No | Attach to this lead | |
| file_name | Yes | File name with extension | |
| mime_type | No | MIME type (auto-detected if omitted) | |
| person_id | No | Attach to this person | |
| product_id | No | Attach to this product | |
| activity_id | No | Attach to this activity | |
| content_base64 | Yes | File content as base64-encoded string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses very little. It does not state permission requirements, file-size or base64 payload limits, what happens if multiple or zero entity IDs are supplied, or whether the attachment is reversible. 'Upload' implies mutation but nothing else is clarified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is well-sized. It is efficient, though the brevity comes at the cost of the missing attach-target constraint rather than being purely tight writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation tool with no annotations and no output schema, the description is thin. It never explains the mutually-exclusive entity attach parameters, payload constraints, or the shape of the response, leaving gaps the structured fields do not cover.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters (org_id, deal_id, lead_id, person_id, product_id, activity_id, file_name, mime_type, content_base64) are already documented in the schema. The description adds no syntax, format, or selection guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Upload') and resource ('base64-encoded file') plus the effect ('attach to an entity'), which is more than a restatement of the name. It does not, however, distinguish this tool from the sibling file tools (pipedrive_files_get, pipedrive_files_list) beyond what the name already implies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no indication of the key operational constraint: that the caller must pick exactly one of the eight entity parameters to attach to. The agent is left to infer the attach-target rule entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_filters_getA
Get a single filter definition by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_id | Yes | The filter ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. 'Get' implies a read-only operation, which is appropriate, but no further behavior (e.g., error handling, permission requirements) is described. The minimal disclosure is acceptable for a simple read but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the essential information without any unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and simple behavior, the description is nearly complete. It could optionally mention what a 'filter definition' contains or the response format, but the lack is not critical for a straightforward get operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (filter_id is described). The description adds no additional meaning beyond the schema; it only references 'by ID'. Hence, the description does not augment the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a single filter definition by ID.' clearly states the action (get) and resource (filter definition). Among siblings like pipedrive_filters_list and pipedrive_filters_results, this tool is distinctively for retrieving a single definition by ID, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage context is provided. The description does not specify when to use this tool over alternatives like pipedrive_filters_list or pipedrive_filters_results, nor does it mention prerequisites or edge cases (e.g., handling missing IDs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_filters_listA
List all saved filters, optionally by entity type.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter entity type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'List' conveys a non-destructive read, but nothing is said about pagination, result limits, or auth requirements. For a trivial read-only listing tool this is acceptable but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource front-loaded and the optional modifier trailing. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter list tool with no output schema and no annotations, the description covers the essentials: what is listed and the optional narrowing dimension. It could note that results include filter definitions/metadata, but little is genuinely missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'type' parameter already documents its enum values, so the schema does the heavy lifting. The description restates the parameter's purpose ('by entity type') without adding format or default behavior beyond what the schema shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ('List all saved filters') and adds the optional scoping dimension ('by entity type'). It does not, however, distinguish itself from the close siblings pipedrive_filters_get (single filter) or pipedrive_filters_results (filter output), which an agent must infer from naming alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optionally by entity type' implies when the type parameter is useful, which is a reasonable usage hint. There is no explicit guidance on when to choose this over pipedrive_filters_get or pipedrive_filters_results, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_filters_resultsB
Run a saved filter and return matching entities with pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| sort_by | No | Field to sort by | |
| filter_id | Yes | The filter ID to run | |
| entity_type | Yes | Entity type the filter applies to | |
| sort_direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose pagination behavior (a genuine trait, backed by the cursor parameter), and 'run a saved filter and return' implies a read-only operation, but it says nothing about permissions, rate limits, or invalid-filter handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the purpose and pagination note both earn their place. It is efficient, though arguably too terse to be maximally helpful for a six-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source for behavioral context, and it explains only pagination and the general return ('matching entities'). The schema fully covers inputs, so the gap is mainly around the return shape and prerequisites, which is a moderate but not severe omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters including limits, cursor, sort fields, and the entity_type enum. The description adds no parameter-level meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run') and resource ('a saved filter') and clarifies the outcome ('return matching entities with pagination'). It is clear what the tool does, but it does not differentiate itself from sibling list tools (pipedrive_deals_list, pipedrive_persons_list) which can return the same entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of when to prefer this over direct list tools, and no stated prerequisite that a filter_id must first be obtained (e.g., from pipedrive_filters_list). The saved-filter framing implies a workflow but leaves the agent to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_createB
Create a new lead. Requires at least person_id or organization_id.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Lead title | |
| value | No | Lead value | |
| owner_id | No | User ID of the owner | |
| label_ids | No | Lead label UUIDs | |
| person_id | No | Linked person ID | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| organization_id | No | Linked organization ID | |
| expected_close_date | No | Expected close date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It discloses only the person/organization constraint; it omits permission requirements, whether a duplicate/conflicting lead is rejected, and what side effects creation triggers. That single constraint is useful but far from adequate for an unannotated create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the key constraint immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no annotations and no output schema, the description is thin: it covers the operation and one precondition but says nothing about side effects, permissions, or failure modes. The rich 100% schema coverage compensates for parameter-level gaps, landing it at minimum-viable rather than incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters, establishing a baseline of 3. The description adds the cross-parameter constraint that at least one of person_id or organization_id must be supplied, which is genuine value the schema does not express, keeping it at the baseline rather than below it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Create a new lead") that an agent can distinguish from siblings such as pipedrive_leads_update, pipedrive_leads_delete, and pipedrive_leads_get by name. It does not explicitly state how it differs from leads_search or other create tools, but the resource and operation are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a meaningful precondition ("Requires at least person_id or organization_id"), which is genuine usage guidance. However, there is no explicit when-to-use vs alternatives routing (e.g., leads vs deals) and no when-not-to-use guidance, so it remains implied rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_deleteB
Delete a lead. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| lead_id | Yes | The lead ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that this is a destructive operation requiring explicit confirmation ('DELETE') and supports a dry-run preview. However, it omits critical behavioral context such as irreversibility, required permissions, and side effects on related records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loads the core action ('Delete a lead'), and contains no filler. Each sentence contributes useful safety information without redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description covers the confirmation requirement and dry-run option but does not explain whether deletion is permanent, what happens to associated data, or what permissions are needed. It is minimally adequate but has clear gaps for a delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all four parameters. The description repeats the confirm and dry_run requirements but adds no additional syntax or meaning beyond what the schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a lead.' This distinguishes it from sibling read/create/update operations by action, though it does not explicitly name or contrast with siblings like pipedrive_leads_get or pipedrive_leads_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are any exclusions or prerequisites beyond the confirmation requirement mentioned. The confirmation string is a parameter constraint, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_getA
Get a single lead by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | The lead ID (UUID format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral info. Only states 'get' implying read-only, but no mention of error handling (e.g., missing ID), permissions, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with essential information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool, the description is minimally adequate. However, it lacks details about return values or error conditions, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes lead_id as UUID format and required. Description adds no extra meaning beyond 'by ID'. Schema coverage is 100%, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'get' and resource 'single lead' with explicit identifier 'by ID'. Distinct from sibling tools like pipedrive_leads_list and pipedrive_leads_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The use case is straightforward (fetching by ID), but no context about prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_listB
List leads with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort field and direction (e.g. 'add_time ASC') | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| owner_id | No | User ID of the owner | |
| filter_id | No | Pipedrive filter ID to apply | |
| person_id | No | Filter by person ID | |
| archived_status | No | Filter by archived status | |
| organization_id | No | Filter by organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only listing operation and discloses pagination support, but omits auth needs, rate limits, whether all leads are returned, and return format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is very terse, but under-specification is penalized in other dimensions; structurally it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter list tool with many siblings and no output schema, the description is minimally adequate because the schema fully documents the filtering and pagination options. However, it does not help the agent choose between list/search/get or understand return behavior, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters are already documented in the input schema. The description only mentions filters and pagination generically and adds no syntax, defaults, or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('leads'), plus scope ('with filters and pagination'). It does not differentiate this from sibling tools like pipedrive_leads_search or pipedrive_leads_get, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as pipedrive_leads_search, pipedrive_leads_get, or other list tools. No prerequisites or exclusions are provided, leaving selection entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_searchC
Search leads by term (uses v2 search API).
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term | |
| limit | No | Number of search results per page (default 10, max 50) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| fields | No | ||
| person_id | No | ||
| exact_match | No | ||
| include_fields | No | Additional fields to include in the search results | |
| organization_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does very little. It notes the v2 search API as an implementation detail but says nothing about pagination behavior, result shape, matching semantics, or whether searches are eventually consistent, all of which matter for a search endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; it is efficient. It is arguably under-specified rather than over-long, but as pure structure it is clean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter search tool with no annotations, no output schema, and only 50% schema coverage, this one-liner leaves far too much for the agent to infer. It should at minimum describe pagination and what a result contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% across 8 parameters, so the description needs to compensate and does not. It never mentions limit, cursor, exact_match, fields, person_id, organization_id, or include_fields, leaving half the parameter surface undocumented in both the schema and the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search leads) plus the backing API version, which cleanly distinguishes it from sibling pipedrive_leads_list and pipedrive_leads_get. However, it does not differentiate the search scope from other *_search siblings (deals_search, persons_search), which a fuller description might address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives (e.g., leads_list for browsing vs. this for term matching), and no prerequisites. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_leads_updateC
Update an existing lead.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| value | No | ||
| lead_id | Yes | The lead ID to update | |
| owner_id | No | User ID of the owner | |
| label_ids | No | ||
| person_id | No | ||
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| organization_id | No | ||
| expected_close_date | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, yet it discloses nothing beyond the bare mutation. It does not say whether this is a partial update (omitted fields left unchanged) or a full replace, what permissions are required, or what the response looks like. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of padding, which is good, but for a 9-parameter tool with a nested object it is under-specified rather than appropriately concise. Brevity here reflects missing information, not disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 9 parameters, a nested object, no annotations, no output schema, and only 33% schema description coverage, a five-word description leaves an agent without nearly everything it needs to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (lead_id, owner_id, visible_to are documented; title, value, label_ids, person_id, organization_id, expected_close_date are not), and the description adds no parameter meaning at all. It fails to compensate for the coverage gap, especially for the nested value object with amount/currency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (lead), so the operation is unambiguous. However, it does nothing to distinguish itself from siblings like pipedrive_leads_create, pipedrive_leads_delete, or pipedrive_leads_get, which all operate on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to use this tool versus alternatives (e.g., leads_get for reading, leads_create for new records) and states no prerequisites such as required permissions or the need for an existing lead_id. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_messages_getB
Get a single mail message by ID. Set include_body to true for full content.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The mail message ID to retrieve | |
| include_body | No | Include full message body in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals only that the body is excluded unless include_body is set, which the schema already states via the default and parameter description; nothing is said about permissions, response shape, or error behavior for a missing/invalid ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded before the optional-parameter note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read of a single record with fully documented params, the description is essentially sufficient to call the tool correctly. The lack of any mention of required permissions or missing-ID behavior is a minor gap given no annotations and no output schema exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters, and the baseline is 3. The description's phrasing ('full content') adds a small amount of meaning about what include_body actually returns, but no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single mail message') with identifying scope ('by ID'), so the agent can distinguish it from list-style siblings like pipedrive_mail_thread_messages_list. It does not name or differentiate against those siblings explicitly, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives concrete guidance on using include_body to control payload size, which is genuine usage advice. However, there is no indication of when to use this tool versus the thread or message-list siblings, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_thread_messages_listC
List messages within a mail thread. Use include_body for full content.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The mail thread ID | |
| include_body | No | Include full message body in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read operation, but the description omits pagination behavior, return cardinality/ordering, and permission requirements. Only the include_body toggle is touched on, leaving most behavioral traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. It is appropriately sized for a simple two-parameter list tool, though the second sentence is more parameter hint than distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool this is minimally adequate, but with no annotations and no output schema the description could usefully state read-only nature and pagination expectations. It covers the essentials but leaves real gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description reinforces include_body's role but adds no format or syntax detail beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List messages within a mail thread.' An agent can understand the operation clearly. However, it does not differentiate itself from siblings like pipedrive_mail_threads_get or pipedrive_mail_messages_get, leaving the scope boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use context, no prerequisites (e.g., needing a thread ID from mail_threads_list), and no alternatives. The second sentence addresses a parameter rather than usage routing, so there is essentially no guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_threads_deleteA
Delete a mail thread. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| thread_id | Yes | The mail thread ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It surfaces the destructive-confirmation gate and dry_run preview, which is useful, but both are already spelled out in the schema descriptions, so it adds little beyond structured data. It never says deletion is irreversible or whether thread messages cascade-delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the action, then the safety requirement, then the optional mode. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the confirmation mechanism but omits consequences (irreversibility, cascade to messages) and what dry_run output looks like. Minimum viable but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: thread_id, confirm (const DELETE), dry_run, and reason are all documented in the schema. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific verb+resource: 'Delete a mail thread.' An agent can immediately tell it apart from pipedrive_mail_threads_get, _list, _update, and _mail_thread_messages_list. It does not explicitly name sibling alternatives, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the operational precondition (confirm: "DELETE") and the dry_run option, which implies usage, but gives no guidance on when to delete vs. archive/update a thread or any consequences/exclusions. Adequate but leaves alternatives unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_threads_getA
Get a single mail thread by ID with full details.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The mail thread ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states 'full details' but does not specify what those details encompass (e.g., messages, participants, subject). However, for a simple GET operation, it is sufficient to indicate a read-only action with no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence with no fluff. The core information is front-loaded: 'Get a single mail thread by ID' immediately conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval with one parameter and no output schema, the description is nearly complete. It could mention the response includes the thread's messages or metadata, but that is implied by 'mail thread' context. Minor gap in explaining 'full details'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter thread_id. The description adds 'by ID with full details', which aligns with the schema but does not provide additional semantic meaning beyond what the schema already offers ('The mail thread ID to retrieve'). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (single mail thread), the identifier (by ID), and the scope (full details). It distinguishes from sibling tools like pipedrive_mail_threads_list which returns multiple threads, and pipedrive_mail_threads_delete which modifies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. It implies usage for retrieving a specific thread, but does not mention that pipedrive_mail_threads_list should be used for browsing, or that pipedrive_mail_thread_messages_list can retrieve messages within a thread.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_threads_listB
List mail threads, optionally filtered by folder (inbox, drafts, sent, archive).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| folder | No | Mail folder to filter by (defaults to inbox) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read operation but says nothing about pagination behavior, what happens when the folder is empty, ordering, or authentication. For a list tool with zero annotation coverage this leaves real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste; the scope and optional filter come first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool whose parameters are fully documented by the schema, the description is minimally adequate. It lacks pagination/return context and any routing to related mail tools, but no output schema means the description isn't expected to explain returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description echoes the folder enum values but adds no syntax or behavior beyond the schema (e.g., default inbox is already documented in the schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (mail threads) with the folder filter scope. It distinguishes itself from mail_threads_get/update/delete by the read-list nature, though it doesn't explicitly name those siblings. Clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance. It doesn't say when to prefer this over pipedrive_mail_threads_get (single thread) or pipedrive_mail_thread_messages_list, nor how to page through results. Usage is only implied by the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_mail_threads_updateC
Update a mail thread: link to deal/lead, mark read/unread, archive/unarchive, share.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | No | Link thread to this deal ID | |
| lead_id | No | Link thread to this lead ID | |
| read_flag | No | Mark as read (true) or unread (false) | |
| thread_id | Yes | The mail thread ID to update | |
| shared_flag | No | Share thread with company (true) or keep private (false) | |
| archived_flag | No | Archive (true) or unarchive (false) the thread |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'update' and lists fields, but does not disclose whether linking to a deal/lead replaces or adds to existing links, whether archiving or sharing is reversible, what permissions are required, or what side effects the call has.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the verb and resource front-loaded, followed by the affected fields. No filler, though it is arguably terse to the point of omitting useful context rather than being optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description covers the mutation surface but omits permissions, reversibility, and combined-call behavior. The 100% schema coverage compensates for the parameter side, making this minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every one of the six parameters has an inline description, so the schema does the heavy lifting and the baseline is 3. The description's field list roughly mirrors the schema (deal/lead link, read/unread, archive, share) without adding syntax, constraints, or interaction rules beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Update) and resource (mail thread) and enumerates the four distinct mutation surfaces: deal/lead linking, read state, archive state, sharing. An agent can immediately tell this apart from the sibling read tools (mail_threads_get, mail_threads_list, mail_messages_get). It does not explicitly name the siblings it is not, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus pipedrive_mail_threads_get or pipedrive_mail_threads_delete, no prerequisites, and no indication of whether all four operations can be combined in one call. The agent is left to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_meA
Show the current Pipedrive user (API token owner). Pass as_user to resolve a different team member by name or email.
| Name | Required | Description | Default |
|---|---|---|---|
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully reveals the default identity binding (token owner) and the shared-token scenario, but says nothing about permissions required, failure behavior when as_user does not resolve, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the identity default stated before the override option. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-param read tool with no output schema, the description covers the essential decision (default identity vs. impersonation) and the shared-token context. The remaining gaps, resolution failures and permissions, are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented there, so the baseline is 3. The description's 'by name or email' restates the schema's accepted formats without adding syntax, matching rules, or error semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Show the current Pipedrive user') plus the scope qualifier '(API token owner)', which cleanly separates it from the sibling user tools (pipedrive_users_get, pipedrive_users_list) that require an explicit identifier. An agent can pick this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a positive routing rule: use as_user to resolve a different team member by name or email. It does not state a when-not-to-use case (e.g., use users_get when you already have an ID), but the implied default-vs-override decision is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_my_open_dealsA
List open deals owned by the current user (or as_user). Sorted by most recently updated.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. | |
| pipeline_id | No | Filter to a specific pipeline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' and 'open deals' imply a read-only, filtered query, and the sort order ('most recently updated') is disclosed, but there is no mention of pagination behavior, what 'open' excludes, or permission/auth needs beyond the as_user note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core scope before the ordering detail. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and no annotations, the description covers scope and ordering but omits what fields are returned and how pagination is expected to be used, which the agent must infer from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all four parameters documented in the schema itself. The description only gestures at as_user via '(or as_user)' and adds nothing about pipeline_id or cursoring beyond what the schema already says, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List), resource (open deals), and scope (owned by current user or as_user), plus ordering. It implicitly separates itself from pipedrive_deals_list by the 'owned by current user' restriction, though it never names that sibling to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this when you want the caller's own open deals rather than all deals. There is no explicit when-to-use/when-not guidance and no reference to pipedrive_deals_list or pipedrive_deals_search as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_my_overdue_activitiesA
Show activities that are past due and not yet done for the current user (or as_user).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. 'Show' implies a read-only operation and the scope is well stated, but there is no disclosure of permissions needed, rate limits, whether 'done' is based on a specific status field, or how paging behaves beyond what the schema params say.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core filter and the user-scope caveat front-loaded. No filler, nothing that doesn't earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-param list tool with three fully documented parameters and no output schema, the description is nearly sufficient. It could mention the shape of returned activities or pagination behavior, but no critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit and cursor are fully documented in the schema. The description echoes the 'as_user' concept ('or as_user'), adding a small amount of context but no syntax or semantics beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Show) and resource (activities) plus two sharp scope qualifiers: 'past due' and 'not yet done' for the current user. That combination clearly separates it from sibling pipedrive_my_upcoming_activities and pipedrive_activities_list, though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter conditions ('past due and not yet done') imply when the tool is useful, and the 'as_user' aside hints at the shared-token scenario. However, it never explicitly contrasts with the nearby siblings (my_upcoming_activities, activities_list), leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_my_pipeline_summaryB
Pipeline snapshot for the current user (or as_user) showing deal counts and values by stage.
| Name | Required | Description | Default |
|---|---|---|---|
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. | |
| pipeline_id | No | Specific pipeline (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does disclose the output nature (aggregated deal counts and values by stage), which is useful, but it omits any safety profile, permissions needed, or whether the operation is read-only, leaving gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states scope and output with no wasted words. It is efficient, though it crams scope and return content into one clause without further structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter summary tool with no output schema, the description adequately conveys what is returned (counts and values by stage) and the user scoping. There is no output schema, so explaining the return content in prose is the right call, and it does so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (as_user, pipeline_id) are already fully documented in the schema. The description only references them obliquely ('current user (or as_user)', 'by stage') and adds no syntax or default detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (pipeline snapshot) scoped to the current user and states the returned content (deal counts and values by stage). It is clearly distinguishable from generic list tools, though it does not explicitly contrast itself with the sibling pipedrive_deals_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool produces but gives no when-to-use guidance, no conditions for choosing it over siblings like pipedrive_deals_summary or pipedrive_my_open_deals, and no exclusions. The only hint about usage is the parenthetical 'or as_user', which the schema already covers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_my_upcoming_activitiesA
Show upcoming activities for the next N days (default 7) for the current user (or as_user).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days ahead to look (default 7, max 90) | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the default window and the as_user acting behavior, and 'Show' implies a non-mutating read, but it says nothing about pagination behavior, result ordering, or activity types returned. Adequate but thin for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with zero filler; the time window and user scope are front-loaded before the optional as_user parenthetical. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 100% schema coverage and no output schema, the description covers purpose, scope, and the as_user nuance. It omits return-shape hints such as ordering or which activity fields come back, but nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so days, limit, cursor, and as_user are already documented in the schema. The description echoes the days default and the as_user concept without adding syntax or edge-case meaning beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Show) plus resource (upcoming activities), scoped by time window and user, which implicitly distinguishes it from pipedrive_my_overdue_activities and pipedrive_activities_list. It never names those siblings explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'upcoming' implies the use case against the overdue sibling, but there is no explicit when-to-use guidance, no exclusions, and no mention of the generic pipedrive_activities_list alternative. Usage is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_note_comments_createC
Add a comment to a note. content_html is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note ID to comment on | |
| content_html | Yes | Plain HTML markup for the comment (e.g. <p>, <br>, <strong>, <em>, <a href>); sanitized server-side. Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only discloses the content_html format nuance (no CDATA wrapper). It says nothing about required permissions, what happens on an invalid note_id, whether comments are editable after creation, or rate limits — significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the format caveat second. No filler or repetition, though it is on the terse side given what a mutation tool ought to convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no annotations and no output schema, the description is too thin. It omits permission requirements, the expected success/error behavior, and any reference to the related update/delete/list sibling tools that an agent would need to reason about the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both note_id and content_html well documented, including sanitization and CDATA guidance. The description's note about plain HTML without a CDATA wrapper echoes what the schema already states, so it adds little beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Add a comment to a note.' An agent can immediately tell this is the create operation for note comments. It doesn't explicitly contrast with the sibling update/delete/list comment tools, but the name plus verb make the distinction clear without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and never names the alternative comment tools (update, delete, list). The only routing signal is the tool name itself, so the agent must infer everything about appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_note_comments_deleteB
Delete a comment from a note. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| note_id | Yes | The note ID | |
| comment_id | Yes | The comment UUID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that this is a guarded destructive operation (confirm must equal "DELETE") and that a dry_run preview exists, which is real behavioral value. However, it says nothing about permanence, required permissions, or what happens if the comment_id is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the safety gate, then the preview option. Tight and readable, though the dry_run sentence largely duplicates the schema's own description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must carry the full context. It covers the critical safety mechanics (confirm, dry_run) but omits irreversibility, error behavior, and return shape, leaving meaningful gaps for a destructive 5-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including the confirm const and dry_run semantics. The description merely restates confirm and dry_run and adds nothing about note_id, comment_id, or reason, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a comment from a note") that is unambiguously distinct from the sibling create/update/list comment tools. It does not explicitly name those siblings, but the operation is clear enough that no agent would confuse them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use context, no prerequisites, and no mention of alternatives such as update vs delete or the parent note tool. The only conditional guidance is the confirm requirement, which is a safety gate rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_note_comments_getB
Get a single comment by UUID on a note.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note ID | |
| comment_id | Yes | The comment UUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic action. It does not disclose behavioral traits like read-only nature, required permissions, or error conditions. For a simple get, more transparency could include indicating it does not modify data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded with the key information. No unnecessary words or details, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with two required parameters and no output schema, the description is mostly complete. It clearly states what the tool does and the required identifiers. Minor lack of mention that the comment must belong to the note, though implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters described in the input schema. The description adds no extra meaning beyond what the schema already provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), the resource (a single comment by UUID), and the context (on a note). This distinguishes it from sibling tools like pipedrive_note_comments_list (list) and the CRUD operations for notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or compare to related tools like list or the note-level get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_note_comments_listC
List comments on a note.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| note_id | Yes | The note ID whose comments to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and discloses almost nothing: it doesn't state that this is a read-only operation, whether it paginates, what the default page size is, or what happens for an invalid/missing note. One sentence of pure restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loaded with the verb and resource. It is near-minimal, but well-formed rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint with a fully documented 3-parameter schema, this is minimally adequate. Gaps remain: no output schema and no mention of pagination behavior or empty results, which the description could have covered since annotations are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, cursor, and note_id are already fully documented in the schema (default 25, max 100, opaque token, note ID). The description adds no parameter meaning beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'List' plus resource 'comments on a note' — an agent can immediately tell what it retrieves. It does not explicitly distinguish itself from the sibling pipedrive_note_comments_get (singular fetch), though the plural 'comments' implies a collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus pipedrive_note_comments_get, nor prerequisites like needing a valid note_id or how paging should be driven. The reader must infer everything from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_note_comments_updateB
Update a comment on a note. content_html is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note ID | |
| comment_id | Yes | The comment UUID to update | |
| content_html | Yes | Updated plain HTML markup for the comment (e.g. <p>, <br>, <strong>, <em>, <a href>); sanitized server-side. Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds one genuinely useful behavioral detail about the content_html payload format (no CDATA), but says nothing about permissions/ownership, whether the update fully replaces existing content, or what happens on invalid comment_id. Partial disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with the core action first. The second sentence duplicates what the content_html schema description already states, so it is slightly redundant rather than purely additive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Parameters are fully documented in the schema, so the description needn't re-explain them. However, for a no-annotation, no-output-schema mutation tool it omits mutation semantics (replacement behavior, permissions, error cases), leaving the agent with a minimally viable picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's own content_html description already covers the plain-HTML/CDATA guidance, so the description largely restates structured data rather than adding meaning. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a comment on a note'), which cleanly distinguishes it from the create/delete/get/list comment siblings by verb alone. It stops short of explicitly naming those siblings or clarifying scope (e.g. that it only replaces content, not author/timestamps).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says when to update an existing comment versus creating a new one, nor any prerequisite such as needing the comment_id from a prior list/get call. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_notes_createC
Create a note attached to a deal, person, org, or lead. content_html is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | Attach to this organization | |
| deal_id | No | Attach to this deal | |
| lead_id | No | Attach to this lead | |
| person_id | No | Attach to this person | |
| content_html | Yes | Plain HTML markup for the note body (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. | |
| pinned_to_deal_flag | No | ||
| pinned_to_person_flag | No | ||
| pinned_to_organization_flag | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a genuine input-handling trait (HTML passed directly, no CDATA wrapper), but says nothing about permissions, whether undirected notes are allowed, or what is returned on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose before the format caveat. Efficient, though the second sentence partially duplicates what the content_html schema property already says.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An eight-parameter mutation tool with 63% schema coverage, no annotations, and no output schema needs more context than two sentences provide. The pinned_* flags and the implicit requirement of at least one attach target are left entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 63%, so the schema already documents most parameters, including an extensive content_html description. The description's CDATA caveat mostly restates that schema text, and it adds nothing about the three pinned_* flags or the attach-target semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (a note) plus the four entity types it can attach to, which is enough for an agent to distinguish it from pipedrive_notes_list, pipedrive_notes_update, and pipedrive_note_comments_create. It does not explicitly contrast itself with those siblings, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to create a note versus a note comment versus an activity, and no prerequisites are stated. Critically, the description never says that at least one of deal_id/person_id/org_id/lead_id is needed for the note to be useful, even though none of them appear in the required list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_notes_deleteC
Delete a note. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| note_id | Yes | The note ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It flags the confirmation gate, but that is already stated in the schema's const and dry_run descriptions, and it omits the essentials for a destructive operation: irreversibility, permission requirements, and side effects such as what happens to attached note comments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences, front-loaded with the verb and resource, then the safety requirements. Every sentence carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with zero annotations and no output schema, the description is too thin. It never states that deletion is permanent, whether a dry_run preview has any cost, or that the reason field is accepted, leaving the agent without the context needed to call this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so note_id, confirm, reason, and dry_run are all documented in the schema itself. The description repeats confirm and dry_run without adding format, constraint, or edge-case meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a note'), which an agent can distinguish from pipedrive_notes_get/update/list by name. It does not explicitly name or contrast with a sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives procedural requirements (confirm must be "DELETE", dry_run available) but no when-to-use guidance, no prerequisites, and no mention of alternatives for removing note content. Nothing tells the agent under what circumstances deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_notes_getA
Get a single note by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It indicates a read operation but does not disclose error handling, permission requirements, or scope beyond retrieving a single note by ID. Adequate but could be richer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core action and required parameter. No fluff or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description provides sufficient context. It does not mention return format or error scenarios, but given the low complexity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds minimal meaning beyond the input schema: 'by ID' is already implied by the parameter description 'The note ID to retrieve'. With 100% schema coverage, baseline is 3; no additional parameter insights provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single note by its ID. It uses specific verb 'Get' and resource 'single note', which distinguishes it from sibling tools like list, create, update, and delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the agent has a specific note_id, but does not explicitly state when to use this tool over alternatives (e.g., pipedrive_notes_list). No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_notes_listB
List notes, optionally scoped to a deal, person, org, or lead.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| org_id | No | Filter by organization ID | |
| deal_id | No | Filter by deal ID | |
| lead_id | No | Filter by lead ID | |
| user_id | No | Filter by user ID | |
| person_id | No | Filter by person ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the basic list semantics. It does not state that this is a read-only operation, how pagination behaves (cursor/limit exist in the schema but are unexplained behaviorally), or whether unfiltered listing returns all account notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, stating the action before the optional scope. It is appropriately sized, though slightly terse for a tool with eight filter parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with no output schema and no annotations, the description covers the core purpose but omits pagination behavior, default result size, and the fact that filters are combinable. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, which sets the baseline at 3. The description adds only the high-level notion that deal/person/org/lead are valid scoping dimensions, without new syntax, defaults, or interaction semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('notes') plus the optional scoping dimensions, so the agent knows exactly what it retrieves. It does not explicitly differentiate itself from sibling read tools like pipedrive_notes_get or pipedrive_note_comments_list, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions that notes can be scoped to a deal, person, org, or lead, which implies the filter conditions, but there is no explicit when-to-use guidance or contrast with alternatives such as pipedrive_notes_get or pipedrive_note_comments_list. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_notes_updateC
Update a note's content and pin flags. content_html is plain HTML, passed directly with no CDATA wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note ID to update | |
| content_html | Yes | Updated plain HTML markup for the note body (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML. | |
| pinned_to_deal_flag | No | ||
| pinned_to_person_flag | No | ||
| pinned_to_organization_flag | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one useful trait (content_html is raw HTML with no CDATA wrapper), but says nothing about whether this is a full or partial update, what happens to pin flags that are omitted, permission requirements, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the core action front-loaded and the format caveat immediately after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations, no output schema, and 40% schema coverage, the definition is too thin. An agent lacks the information needed to know how partial updates behave, how the pin flags interact, or what the response will contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%. The description adds real meaning for content_html, but that overlaps the schema's own detailed note, and the three pinned_to_*_flag booleans are never explained (defaults, effect of omission, whether true/false toggles or sets). note_id is likewise unaddressed, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a note') and enumerates the editable surfaces (content and pin flags), which lets an agent distinguish it from pipedrive_notes_create/get/delete by name. It stops short of explicitly contrasting itself with those siblings, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus pipedrive_notes_create or pipedrive_note_comments_update, and no prerequisites (e.g. note must exist, required permissions) are given. The only guidance is an input-format caveat, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_createB
Create a new organization. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Organization name | |
| address | No | Organization address | |
| owner_id | No | User ID of the owner | |
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose useful payload behavior — custom fields can be addressed by name or API key, and label_ids accepts IDs or label names — but says nothing about required permissions, duplicate-name behavior, defaults for owner_id/visible_to, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, action first, with the special-case parameters (custom fields, labels) in the follow-up. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 7-parameter mutation tool with nested objects, no annotations and no output schema needs more than this. The parameter surface is covered by the schema, but an agent gets no signal about write permissions, duplicate handling, or the shape of the created record.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains name, address, owner_id, visible_to and label_ids in detail; the description only echoes that custom fields work by name or key. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new organization") that an agent can immediately separate from the sibling read tools (organizations_list/get/search) and the mutating siblings (update/delete/merge). It does not explicitly name or contrast those siblings, but the create semantics are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance: nothing about duplicate handling, whether to search for an existing organization first (organizations_search exists), or prerequisites such as owner/visibility defaults. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_deleteB
Delete an organization. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID to delete | |
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully surfaces the 'confirm: DELETE' safety gate and the dry_run preview path, but says nothing about irreversibility, cascade effects on related records, or permission requirements for a destructive operation. Adequate but leaves meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and the hard requirement. Minimal waste, though the confirm/dry_run notes largely restate the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, an agent needs more: whether the delete is reversible, what happens to associated entities, and what errors to expect. The description covers the mechanics but not the consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (org_id, reason, confirm, dry_run) are already documented in the schema. The description repeats the confirm and dry_run semantics without adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an organization') that clearly distinguishes it from siblings like organizations_update, organizations_merge, or organizations_get. It lacks an explicit contrast to those alternatives, but the deletion intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to delete versus merging, archiving, or updating a record, and no warnings about prerequisites (e.g., linked deals/persons). The procedural note about confirm and dry_run is a gate, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_getB
Get a single organization by ID with full details including resolved custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID to retrieve | |
| include_fields | No | Additional fields to include in the response | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the response includes 'resolved custom fields,' which hints at response behavior, but it says nothing about permissions, rate limits, error cases, or whether custom fields are only resolved when keys are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the action, the resource, and the key return characteristic with zero wasted words. It is appropriately sized for a simple retrieval tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with 100% schema coverage and no output schema, the description adequately states what is returned, including resolved custom fields. It could be slightly more complete by noting that include_fields and custom_field_keys are optional response-expansion parameters, but the schema already covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema. The description adds only the phrase 'resolved custom fields,' which loosely connects to the custom_field_keys parameter but does not add syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('a single organization by ID'), and adds scope with 'full details including resolved custom fields.' However, it does not explicitly distinguish itself from sibling tools like pipedrive_organizations_list or pipedrive_organizations_search, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying 'by ID,' but gives no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as search or list. An agent must infer that this is the right tool when it already has an organization ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_listC
List organizations with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Filter by organization IDs | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| sort_by | No | Field to sort by | |
| owner_id | No | User ID of the owner | |
| filter_id | No | Pipedrive filter ID to apply | |
| updated_since | No | Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z) | |
| updated_until | No | Filter by update time upper bound (ISO 8601 format) | |
| include_fields | No | Additional fields to include in the response | |
| sort_direction | No | Sort direction | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does mention pagination, which is a useful behavioral hint, but omits read-only nature, authorization needs, rate limits, default page size, and cursor expiry behavior that an agent would need for reliable use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. However, it is arguably too terse given 11 parameters, and could have used one more sentence to route between list and search without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter listing tool with no annotations and no output schema, the description is thin. It gives no behavioral context, no sibling routing, and no explanation of what the response contains, leaving the agent to rely entirely on the schema for a complex, filter-heavy operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents every parameter in detail. The description adds only the generic phrase 'with filters and pagination', which does not clarify any individual parameter beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('List') and resource ('organizations') with a hint of scope ('filters and pagination'). However, it does not distinguish itself from close siblings like pipedrive_organizations_search or pipedrive_organizations_get, leaving the agent to infer the difference from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as the search or get tools. The description merely restates that listing is possible, offering no routing information for an agent deciding among sibling list/search/get operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_mergeB
Merge two organizations. Source is merged into target. Requires confirm: "MERGE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be exactly "MERGE" to confirm merge | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| source_org_id | Yes | Organization ID to merge FROM (will be deleted) | |
| target_org_id | Yes | Organization ID to merge INTO (will be kept) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose two important traits: a confirm token guard ('MERGE') and dry_run support. However, it stops short of stating that the operation is irreversible or that the source org is destroyed/its deals and persons reassigned, leaving the key destructive consequence to the schema's parameter text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the directional rule and guard requirement come early. It is telegraphic rather than wasteful, though it could be slightly more fluent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, annotation-free operation with no output schema, the description covers direction, the confirmation gate, and dry_run, which is adequate. It still omits irreversibility and side effects on related entities, which an agent should know before committing a merge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, including the confirm const value and the source/target directionality. The description's mention of confirm:'MERGE' and dry_run simply echoes structured data without adding syntax or constraints, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (merge) and resource (organizations) and clarifies the direction of the operation with 'Source is merged into target'. It is distinguishable from pipedrive_organizations_delete, though it does not explicitly contrast itself with the parallel pipedrive_persons_merge sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and does not mention alternatives such as delete or update. A reader must infer that this is for consolidating duplicate organizations from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_searchC
Search organizations by name, address, or custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term | |
| limit | No | Number of search results per page (default 10, max 50) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| fields | No | Fields to search in (e.g. 'name,address,custom_fields') | |
| exact_match | No | Whether to do an exact match |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no note on pagination behavior, result caps (limit max 50), permission requirements, or whether exact_match changes matching semantics. Only the safe read nature is inferable from 'search'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; nothing is wasted. It is arguably under-specified rather than padded, so it earns good but not top marks for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should carry more weight for a 5-parameter search tool. Pagination, result shape, and exact-match behavior are all left to the schema, which is adequate but leaves the agent without return-value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema, establishing a baseline of 3. The description's mention of name/address/custom fields loosely maps to the 'fields' parameter but adds no syntax or behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search organizations') and lists the searchable dimensions (name, address, custom fields), which conveys the search semantics. However, it never distinguishes itself from the sibling pipedrive_organizations_list or pipedrive_organizations_get, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no mention of the obvious alternatives (organizations_list for browsing, organizations_get for a known ID). Usage is only implied by the word 'search'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_organizations_updateC
Update an existing organization. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| org_id | Yes | The organization ID to update | |
| address | No | ||
| owner_id | No | User ID of the owner | |
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the verb 'update'. It does not say whether updates are partial or full-replace, what permissions are required, whether unspecified fields are preserved, or what a successful call returns. The one genuinely behavioral fact — that label_ids replaces existing labels — is only in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and zero filler. The second sentence largely restates what the schemas for custom_fields, custom_fields_by_name and label_ids already document, so it earns only partial value, keeping this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the definition should say more than it does, particularly about partial-update semantics and prerequisites. The schema does cover the trickiest parameter (label_ids replacement and clearing), which lifts it to a minimum-viable 3 rather than lower.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, which sets the baseline at 3. The description usefully confirms that both custom_fields (by key) and custom_fields_by_name (by name) exist and that label_ids accepts either IDs or names, but it adds no syntax, format, or constraint detail beyond what the schema properties already spell out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Update an existing organization') and the word 'existing' signals the required org_id, distinguishing it from pipedrive_organizations_create. However, it never names or contrasts with the other organization siblings (get, delete, merge, search), so the agent gets no explicit routing cue beyond the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite (e.g. an existing org_id must come from a list/search first), and no mention of alternatives such as merge or delete. The sentence about custom fields and label_ids is field-selection guidance, not usage guidance, so the agent is left to infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_people_needing_followupA
Find contacts owned by the current user (or as_user) that have no next activity scheduled.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Find' implies a read-only operation and the ownership/scoping semantics are disclosed, but there is no statement about result format, pagination behavior, or what happens when no contacts match. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb and resource and packs the scoping condition with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool whose pagination parameters are fully documented in the schema, the description covers the essential filter semantics. It stops short of hinting at the shape of returned contact records (no output schema exists), which is a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, cursor, and as_user are already fully documented in the schema. The description echoes the as_user concept ('or as_user') but adds no syntax, defaults, or edge-case detail beyond the schema. Baseline 3 is correct here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find), a specific resource (contacts), and a precise qualifying condition (no next activity scheduled, owned by current user/as_user). This distinguishes it cleanly from siblings like pipedrive_my_upcoming_activities, pipedrive_my_overdue_activities, and pipedrive_persons_list without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scoping criteria imply when the tool is appropriate, but there is no explicit when-to-use vs. when-not guidance and no alternatives named (e.g., my_overdue_activities for activities that are overdue rather than missing). Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_person_mail_messages_listC
List mail messages linked to a person.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| person_id | Yes | The person ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only implies a read operation; it says nothing about pagination behavior (despite cursor/limit params), permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single terse sentence with zero waste and the key scoping constraint front-loaded. It is efficient but so brief that it omits useful context rather than being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a paginated endpoint, a one-line description leaves the agent without pagination expectations or return-shape context. Adequate to identify the tool but thin for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents person_id, limit, and cursor semantics. The description adds no parameter meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (mail messages) plus the scoping relation (linked to a person), which distinguishes it from pipedrive_mail_thread_messages_list and pipedrive_deal_mail_messages_list. It does not explicitly name those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this over the two closely-related siblings (mail_thread_messages_list, deal_mail_messages_list), nor any prerequisites or exclusions. Usage can only be inferred from the scoping phrase in the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_createC
Create a new person. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person name | |
| emails | No | Email addresses | |
| org_id | No | ||
| phones | No | Phone numbers | |
| owner_id | No | User ID of the owner | |
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses little: nothing about required permissions, duplicate handling, reversibility, or what the response contains. The one behavioral hint, that label_ids replaces existing labels and that custom fields can be addressed by name or key, largely mirrors the schema rather than adding new context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and the qualifiers immediately after; no filler or repetition. It could be marginally improved by folding the custom-field/label notes into a single clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description leaves significant gaps: no indication of required fields, authentication, what a successful create returns (e.g., the new person ID), or error behavior. What is present covers only custom fields and labels, so an agent cannot fully anticipate the call's outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents name, emails, phones, owner_id, label_ids, visible_to, and both custom-field objects. The description's mention of custom fields by name/key and the native Label field adds minor framing but no format or constraint detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (a new person), so the agent knows exactly what the tool does and can distinguish it from persons_update, persons_merge, etc. It stops short of explicitly naming or contrasting those siblings, but the name-plus-description combination is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus persons_update, persons_merge, or how to handle an existing person (create vs update). The only guidance-like content is about how custom fields and labels are supplied, which is invocation detail rather than usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_deleteA
Delete a person. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| person_id | Yes | The person ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the confirmation gate and the dry_run preview mechanism, which signals a guarded destructive operation. It does not, however, state that deletion is permanent/irreversible, nor whether linked records (deals, activities) are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences with zero filler, front-loaded with the core action. Every sentence adds a distinct, actionable fact (what, confirmation, preview mode).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the definition is workable but thin: it omits irreversibility, side effects on related entities, and expected return/preview shape. The 100% schema coverage compensates for parameter detail but not for the missing destructive-operation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, making the baseline 3. The description's mentions of confirm and dry_run merely restate what the schema already declares, adding no syntax or semantic detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (a person), which unambiguously separates it from siblings like pipedrive_persons_update, pipedrive_persons_merge, and pipedrive_persons_get. No ambiguity about what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the invocation prerequisite (confirm must equal "DELETE") and that a dry_run mode exists, which is useful context. However, it gives no guidance on when to prefer this over alternatives such as merging duplicates (persons_merge) or deactivating via update, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_getA
Get a single person by ID with full details including resolved custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| person_id | Yes | The person ID to retrieve | |
| include_fields | No | Additional fields to include in the response. marketing_status and doi_status can only be included if the company has the marketing app enabled | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it discloses the notable return behavior ('full details including resolved custom fields') which is useful. However it says nothing about read-only nature, permission requirements, or behavior when the ID does not exist. Acceptable for a simple single-record getter, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core verb and resource, with the return-shape qualifier appended. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does summarize the return ('full details including resolved custom fields'), which is the main thing an agent needs to judge usefulness. Error behavior on a missing ID and any permission constraints remain unstated, but the tool is a simple getter, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (person_id, include_fields, custom_field_keys) are already documented in the schema, including the marketing-app constraint on marketing_status/doi_status. The description's mention of 'resolved custom fields' loosely maps to custom_field_keys but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scoping: 'Get a single person by ID'. This clearly distinguishes it from pipedrive_persons_list and pipedrive_persons_search, which return many records. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies usage after an ID is known, and the sibling set makes search/list alternatives inferable, but the description never states when to use this versus persons_search or persons_list. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_listC
List persons with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Filter by person IDs | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| org_id | No | Filter by organization ID | |
| sort_by | No | Field to sort by | |
| owner_id | No | User ID of the owner | |
| filter_id | No | Pipedrive filter ID to apply | |
| updated_since | No | Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z) | |
| updated_until | No | Filter by update time upper bound (ISO 8601 format) | |
| include_fields | No | Additional fields to include in the response. marketing_status and doi_status can only be included if the company has the marketing app enabled | |
| sort_direction | No | Sort direction | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing: no auth/permission requirements, no rate limits, no return shape, and only the bare word 'pagination' without cursor semantics. A read-only list is relatively safe, but the transparency gap is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and resource. It is efficient, though borderline under-specified rather than genuinely concise given the tool's 12 parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter list tool with no annotations and no output schema, the description is far too thin. It omits pagination mechanics, default/max results behavior, and any differentiation from the search sibling, leaving the agent to infer usage entirely from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters are already documented in the schema, including enums and the marketing-app caveat. The description adds no parameter meaning beyond that, which is the expected baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (persons) with scope modifiers for filters and pagination, so the agent knows exactly what the tool does. However, it does not distinguish itself from the closely named sibling pipedrive_persons_search, which an agent may confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and no exclusions. With pipedrive_persons_search, pipedrive_persons_get, and pipedrive_persons_list all present, the agent gets no signal on which to choose; the mention of 'filters' is a weak implied hint at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_mergeA
Merge two persons. Source is merged into target. Requires confirm: "MERGE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be exactly "MERGE" to confirm merge | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| source_person_id | Yes | Person ID to merge FROM (will be deleted) | |
| target_person_id | Yes | Person ID to merge INTO (will be kept) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the source record is destroyed, that an exact "MERGE" confirmation string is mandatory, and that a dry_run preview exists. It stops short of saying whether the merge is reversible or how related deals/activities/notes are transferred to the target, which matters for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: operation, direction, safety gate, and preview flag, with the most important constraint front-loaded after the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-annotation, no-output-schema merge tool, the description covers deletion and the confirm gate but omits what happens to associated records (deals, activities, notes), whether the merge can be undone, and what the response contains. Complete enough to invoke safely, not complete enough to set expectations about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents source_person_id (deleted), target_person_id (kept), confirm, and dry_run. The description restates the source/target direction and confirm/dry_run flags without adding syntax or edge-case meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Merge) and resource (persons), plus the directional semantics that source goes into target. An agent can distinguish it immediately from pipedrive_persons_delete/update and from pipedrive_organizations_merge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The direction rule implies when this tool applies (consolidating duplicate person records), but there is no explicit when-to-use, when-not-to-use, or alternative routing against siblings like persons_update or persons_delete. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_searchC
Search persons by name, email, phone, or custom fields.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term | |
| limit | No | Number of search results per page (default 10, max 50) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| fields | No | Fields to search in (e.g. 'name,email,phone,custom_fields') | |
| exact_match | No | Whether to do an exact match | |
| include_fields | No | Additional fields to include in the search results | |
| organization_id | No | Filter by organization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only states which fields are searchable. It says nothing about read-only safety, pagination via cursor, rate limits, or how exact_match affects results, leaving key behavior undisclosed for a 7-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the searchable-field list is placed immediately after the verb. It is efficient, though the extreme sparseness means it does little work for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations and no output schema, the description is thin: it omits pagination behavior, the organization_id filter, and include_fields. An agent can call it with a term, but cannot anticipate paging or filtering semantics from the text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents term, limit, cursor, fields, exact_match, include_fields, and organization_id. The description's 'name, email, phone, or custom fields' merely restates the fields parameter, so it does not add meaning beyond the structured data. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (persons) plus the searchable field categories (name, email, phone, custom fields). It is clearly a query tool, distinguishable from persons_get by verb, but it never contrasts itself with the sibling persons_list, which is the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and never mentions the sibling persons_list, so an agent must infer that search is for term-based lookup while list is for unfiltered enumeration. No prerequisites, exclusions, or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_persons_updateC
Update an existing person. Supports custom fields by name or key, and the native Label field via label_ids (IDs or label names).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| emails | No | ||
| org_id | No | ||
| phones | No | ||
| owner_id | No | User ID of the owner | |
| label_ids | No | Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field. | |
| person_id | Yes | The person ID to update | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for a mutation tool. It hints that custom fields can be supplied by name or key and that labels go through label_ids, but says nothing about partial-update semantics (what happens to unspecified fields), required permissions, reversibility, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core operation front-loaded and the capability note following. No padding, though it could be slightly more informative without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with nested objects, no annotations, and no output schema, the description is thin. It leaves partial-update behavior, auth requirements, and most parameter meanings unaddressed, so an agent lacks what it needs to invoke this safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, and the description adds real meaning for two params: custom_fields/custom_fields_by_name (by name or key) and label_ids (IDs or label names). However, several params (name, emails, org_id, phones) have no schema descriptions and are not compensated for in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Update an existing person') and adds scope about custom fields and the native Label field. It does not differentiate itself from siblings like pipedrive_persons_merge or pipedrive_persons_create, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. needing a valid person_id), and no routing to alternatives such as merge or create. 'Update an existing person' implies context but provides no explicit usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_pipelines_getB
Get a single pipeline by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | Yes | The pipeline ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure, but it only states the basic action. No information is given about authentication requirements, error handling, rate limits, or what happens if the pipeline ID does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 5 words, front-loaded with the action, and contains no unnecessary information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool, the description is minimally adequate but does not explain the return value structure or possible error conditions. Given no output schema, some additional context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter (pipeline_id) with a clear description 'The pipeline ID to retrieve', so the tool description adds no additional value. Baseline 3 is appropriate as schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get a single pipeline by ID', using a specific verb and resource. It clearly distinguishes from the sibling pipedrive_pipelines_list which retrieves all pipelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., pipedrive_pipelines_list for multiple pipelines). The description lacks any context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_pipelines_listC
List all pipelines.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no auth/permission requirements, no rate-limit or pagination behavior, and no statement about whether archived or deleted pipelines are included. The word "all" is the only scope hint, and it sits uneasily against a schema with a default page size of 25.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single two-word sentence with zero filler and the purpose front-loaded. It is efficient, though the extreme brevity reads more like a fragment than a structured definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless-required list endpoint with fully documented params and no output schema, the description is minimally viable. It still leaves the pagination semantics ("all" vs. default limit 25) and the absence of any filtering/freshness context unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (limit, cursor) have 100% schema description coverage, so the schema already documents page size and the opaque pagination token. The description adds no meaning beyond that, which is the baseline 3 case when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("List all pipelines"), which is unambiguous in isolation. It does not, however, distinguish this tool from nearby siblings such as pipedrive_pipelines_get, pipedrive_stages_list, or pipedrive_my_pipeline_summary, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus pipedrive_pipelines_get (single pipeline) or pipedrive_my_pipeline_summary. No prerequisites, no mention of pagination being required to see everything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_product_deals_listB
List deals a product is attached to, optionally filtered by status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| status | No | Only fetch deals with a specific status. Defaults to all not deleted | |
| product_id | Yes | The product ID to find attached deals for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read operation, but the description says nothing about pagination (cursor), default page size, permissions, or return shape. The schema covers defaults, yet the description adds no behavioral context of its own.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the core action and its main qualifier front-loaded. No filler, though it is arguably too sparse for a tool with pagination semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with complete parameter documentation but no annotations and no output schema, the description is adequate but thin. Pagination behavior and the cursor workflow are left entirely to the schema, and there is no indication of what a deal record contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, cursor, status, product_id) are already documented in the schema. The description only restates the optional status filter, adding nothing beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('deals a product is attached to') with a clear scope note about optional status filtering. It is distinguishable from the inverse sibling pipedrive_deal_products_list (which lists products for a deal), though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally filtered by status' implies intended usage but gives no explicit when-to-use context, no exclusions, and no routing to alternatives such as pipedrive_deals_list or pipedrive_deal_products_list. Minimal implicit guidance only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_createC
Create a new product.
| Name | Required | Description | Default |
|---|---|---|---|
| tax | No | Tax percentage | |
| code | No | Product code | |
| name | Yes | Product name | |
| unit | No | Unit of measurement | |
| prices | No | Product prices | |
| owner_id | No | User ID of the owner | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| description | No | ||
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure for a mutation tool. It reveals nothing about side effects, required auth scopes, whether it errors on duplicate names, what a successful response contains, or how nested prices are applied. The sentence is effectively a restatement of the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and free of waste, but for a 10-parameter mutation tool with nested objects it is under-specified rather than genuinely concise. Appropriate sizing would warrant at least a note on the required field and nested price structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters including a nested prices array, no output schema, and no annotations, the description supplies none of the behavioral context an agent needs to call this safely. The rich schema partially compensates for parameter documentation, but creation semantics, validation behavior, and return shape are entirely absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90%, with clear per-field descriptions and an explicit enum explanation for visible_to, so the schema does the heavy lifting. The description adds no parameter meaning of its own, which is the baseline 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Create a new product'), which is unambiguous about the operation. However, it does nothing to distinguish this tool from the many siblings that also create product-related entities, such as pipedrive_product_variations_create or pipedrive_deal_products_add, nor does it clarify scope (e.g. catalog-level vs deal-level).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like pipedrive_product_variations_create or pipedrive_products_update, and no mention of prerequisites such as required permissions or duplicate handling. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_deleteB
Delete a product. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| product_id | Yes | The product ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two genuinely useful traits — a hard confirmation gate ("DELETE") and dry_run support for previewing — which go beyond the schema's raw fields. It omits the most important trait for a destructive tool: that the deletion is irreversible and what side effects it has on related records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the safety gate, then the escape hatch. No filler. It is slightly too terse for a destructive operation, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the definition covers the confirmation and preview mechanics but not irreversibility, permission requirements, or the response shape on success/failure. Adequate minimum, with clear gaps an agent would want closed before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including confirm's exact value and dry_run's semantics. The description repeats confirm and dry_run rather than adding meaning, and never mentions reason or product_id. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Delete a product") that is unambiguous against create/update siblings. However, the catalog contains several delete tools for product-adjacent resources (pipedrive_product_variations_delete, pipedrive_deal_products_delete), and the description does not distinguish deleting a product record from deleting those, leaving a small routing gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no mention of prerequisites (e.g. products still referenced by deals), and no naming of alternatives. The only conditional content is the confirm gate, which is an invocation requirement rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_getB
Get a single product by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The product ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only says 'Get,' implying a read operation, but fails to disclose any behavioral traits such as error handling, permissions, rate limits, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded. It is efficient for a simple tool, though it could include a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no output schema), the description is adequate. However, it does not hint at the return structure or typical response fields, which could be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes product_id with 'The product ID to retrieve,' giving 100% coverage. The description adds no additional meaning beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a single product by ID,' specifying both the action (get) and the resource (single product by ID). It distinguishes well from sibling tools like pipedrive_products_list (list) and pipedrive_products_search (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied (when you have a product ID and need the full product details), but the description does not mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_listC
List products with filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Filter by product IDs | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| sort_by | No | ||
| owner_id | No | User ID of the owner | |
| filter_id | No | Pipedrive filter ID to apply | |
| sort_direction | No | Sort direction | |
| custom_field_keys | No | Custom field keys to include in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It mentions filters and pagination at a high level, but does not state that the operation is read-only, describe auth or permission requirements, or explain pagination behavior beyond what the schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, so it is concise and easy to scan. It is perhaps too sparse for the tool's complexity, but it avoids repetition or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter list tool with no annotations and no output schema, the description is under-specified. It should at least distinguish this from product search/get siblings and clarify expected read-only list behavior with filters and pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 88%, so the schema already documents nearly all parameters in detail. The description adds only the general terms 'filters' and 'pagination' and does not add parameter-level meaning beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('products'), so the basic purpose is clear. However, it does not distinguish this tool from close siblings such as pipedrive_products_search or pipedrive_products_get, so an agent must infer the difference from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It implies listing with filters and pagination, but with many sibling list/search/get tools, there is no routing context for selecting this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_searchC
Search products by name or code.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term | |
| limit | No | Number of search results per page (default 10, max 50) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| fields | No | Fields to search in | |
| exact_match | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full behavioral burden. It says nothing about permissions, rate limits, pagination depth, or whether the search is case-insensitive/substring-based, all of which matter for a search endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core purpose front-loaded. It is efficiently worded, though its brevity reflects under-specification rather than economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters, no annotations, and no output schema, yet the description omits pagination behavior, the meaning of fields/exact_match, and result shape. For a search tool with this many knobs, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents term, limit, cursor, and fields. The description adds no syntax or format detail beyond that baseline, and exact_match has no description anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (products) with the match basis (name or code). It does not distinguish itself from pipedrive_products_list or pipedrive_products_get, which is why it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use search versus pipedrive_products_list (full listing) or pipedrive_products_get (single lookup). The agent must infer that search suits a name/code lookup when the ID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_products_updateC
Update an existing product.
| Name | Required | Description | Default |
|---|---|---|---|
| tax | No | ||
| code | No | ||
| name | No | ||
| unit | No | ||
| prices | No | ||
| owner_id | No | User ID of the owner | |
| product_id | Yes | The product ID to update | |
| visible_to | No | Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone | |
| description | No | ||
| custom_fields | No | Custom fields by API key (e.g. { 'abc123hash': 'value' }) | |
| custom_fields_by_name | No | Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' }) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it discloses nothing about partial vs. full updates, whether omitted fields are preserved, permission requirements, or reversibility. The word "update" at least implies a mutation, which is the only behavioral signal present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no padding, so it is structurally fine, but it is under-specified rather than genuinely concise. There is no wasted text to trim, only missing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter mutation tool with nested objects, no annotations, and no output schema, the description is completely inadequate. An agent has no way to know update semantics, which fields are mutable, or how the response behaves from the definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 45%, so the description should compensate for undocumented parameters such as tax, code, name, unit, and the nested prices array — but it adds zero parameter meaning. The only semantics come from the schema itself (owner_id, product_id, visible_to, custom_fields).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ("Update an existing product"), but it is essentially a restatement of the tool name pipedrive_products_update and adds no scope detail. It does not distinguish this tool from siblings like pipedrive_product_variations_update or pipedrive_deal_products_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g. the product must already exist, required permissions), and no routing to alternatives such as pipedrive_products_create or pipedrive_products_get. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_product_variations_createC
Add a variation to a product.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the product variation | |
| prices | No | Variation prices. If omitted, defaults to price/cost 0 in the user's default currency | |
| product_id | Yes | The product ID to add a variation to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, and it discloses nothing: no permission/auth requirements, no reversibility, no side effects, and no note on the default pricing behavior. For a mutation tool this is a serious gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with zero wasted words. It is efficient, though the brevity here reflects under-specification rather than high information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A create tool with no annotations and no output schema needs to convey required inputs and side effects. The description omits that product_id and name are required and says nothing about the prices default, leaving the agent dependent entirely on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema already documenting product_id, name, and the prices default in detail, so the schema does the heavy lifting. The description adds no syntax, format, or constraint information beyond it — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a variation to a product" names a specific verb (add/create) and resource (product variation) with the parent entity, so the agent knows the operation. However, it is largely a restatement of the tool name and does not distinguish it from the create/update/delete/list variation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus pipedrive_product_variations_update or pipedrive_product_variations_list, nor any stated prerequisite (e.g. that the parent product must already exist). The create verb implies usage, but nothing is made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_product_variations_deleteB
Delete a product variation. Requires confirm: "DELETE". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "DELETE" to confirm deletion | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| product_id | Yes | The product ID the variation belongs to | |
| product_variation_id | Yes | The product variation ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the non-obvious confirm gate ('DELETE') and a dry-run preview mode, but says nothing about irreversibility, cascading effects, or permissions required for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with zero waste; the core action is front-loaded and the safety mechanics follow. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the definition covers the confirm gate but omits what actually happens on deletion (reversibility, related-data impact, error/response shape). Adequate but incomplete for the risk profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema. The description's mention of confirm and dry_run merely restates schema content and adds no format or semantic detail beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a product variation'), which clearly separates it from the sibling create/update/list variations tools. It is unambiguous, though it adds no explicit sibling differentiation beyond what the name already conveys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, nor prerequisites for the delete. It implies a preview-first workflow via 'Supports dry_run' but never states it, leaving usage intent to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_product_variations_listC
List a product's variations (id, name, prices).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| product_id | Yes | The product ID whose variations to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read-only operation and it names the returned fields, but it omits permissions requirements, whether results are scoped to the authenticated company, and any pagination behavior beyond what the schema already encodes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and payload front-loaded and zero filler. It is minimal but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with no output schema, naming the returned fields (id, name, prices) is genuinely useful. However, with no annotations and no output schema, the description could still say more about scoping and pagination expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, cursor, and product_id are already fully documented (including default/max for limit). The description adds no parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a product's variations), plus the fields returned (id, name, prices). It is distinguishable from sibling mutations pipedrive_product_variations_create/update/delete, though it does not explicitly contrast with them or with pipedrive_deal_products_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. The agent must infer that this is the read counterpart to the variations create/update/delete siblings; nothing in the text directs that choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_product_variations_updateC
Update a product variation's name or prices.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the product variation | |
| prices | No | Variation prices | |
| product_id | Yes | The product ID the variation belongs to | |
| product_variation_id | Yes | The product variation ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'update' but doesn't disclose whether omission of 'name' or 'prices' leaves them unchanged, whether prices replace or append, permission/auth requirements, or idempotency. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no waste and the verb+resource front-loaded. It is very short, which is a strength, though it also reflects the missing behavioral content rather than being deliberate tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Mutation tool with no annotations, no output schema, and unpatch semantics for name/prices means the agent cannot tell what happens to a price list on update. The description is too thin to support correct invocation given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description enumerates the two mutable fields ('name or prices'), which is consistent with the schema, but adds no format or behavioral detail beyond it (e.g., that prices is an array of currency/price/cost objects).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (product variation) with the updatable fields named (name, prices). It distinguishes itself from siblings like pipedrive_product_variations_create/delete/list by the 'update' verb, though it doesn't explicitly reference them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no distinction from siblings such as product_variations_create (new variation) vs this update, and no prerequisites for the required IDs. The agent gets the core action but must infer context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_recently_updatedB
Show deals, persons, or organizations updated in the last N days (default 7). Optionally filter by user.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to look (default 7) | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. | |
| entity_type | Yes | Entity type to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It reveals the default window (7 days) but says nothing about pagination behavior despite the cursor/limit params, the return shape, ordering, or rate limits for what is clearly a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and the default window front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only filtered-list tool with no output schema, the essentials (what is listed, the time window, the user filter) are covered. The main gap is not explaining the cursor-based pagination that the schema implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents days, limit, cursor, as_user, and entity_type. The description only restates the default days value and the optional user filter, adding little beyond the schema, which is the expected baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Show) and resource set (deals, persons, organizations) scoped by recency ('updated in the last N days'). The recency dimension distinguishes it from the generic *_list siblings, though it does not name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the use case (recently changed records) and notes the optional user filter, but gives no when-to-use/when-not guidance versus alternatives such as pipedrive_stale_deals, pipedrive_people_needing_followup, or the per-entity list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_stages_getA
Get a single stage by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| stage_id | Yes | The stage ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states the basic action without disclosing any behavioral traits such as error responses, authentication needs, or data returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous words, making it highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description is adequate. It could mention the return value type, but the basic information is sufficient for an agent to infer the behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and includes a description for stage_id. The tool description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('a single stage by ID'), distinguishing it from the sibling tool pipedrive_stages_list which retrieves multiple stages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a stage ID is known, but does not explicitly state when to use this tool versus alternatives like pipedrive_stages_list, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_stages_listA
List stages, optionally filtered by pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| sort_by | No | Field to sort by | |
| pipeline_id | No | Filter by pipeline ID | |
| sort_direction | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a safe read-only operation, which is the key behavioral signal, but it says nothing about pagination, result ordering, or rate limits despite cursor/limit/sort params existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the filter constraint front-loaded. Nothing is wasted and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with full schema coverage, the description is minimally adequate, but it omits pagination behavior and gives no hint of the shape of returned stage records, which matters given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters including limit, cursor, and sort fields. The description only restates the optional pipeline filter and adds no syntax or semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (stages) and notes an optional pipeline filter. It is distinguishable from the singular sibling pipedrive_stages_get, though it does not explicitly name that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally filtered by pipeline' implies when you would use the filter, but there is no explicit when-to-use guidance or routing against alternatives like pipedrive_stages_get or pipedrive_pipelines_list. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_stale_dealsA
Find open deals that haven't been updated in N days (default 30). Optionally filter by user or pipeline.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days since last update to consider stale (default 30) | |
| limit | No | Number of items per page (default 25, max 100) | |
| cursor | No | Opaque token from previous response to fetch the next page | |
| as_user | No | Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token. | |
| pipeline_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Find' implies a read-only query, which is the core behavioral signal, but it says nothing about pagination, result ordering, or what happens with the shared-token as_user behavior beyond what the schema documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core behavior and its default are front-loaded and the optional filters follow. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter query tool with no annotations and no output schema, the description covers the essential purpose but omits pagination behavior (limit/cursor) and return shape, leaving gaps an agent would otherwise need to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so most parameters are self-documented. The description adds the semantic link that 'filter by user or pipeline' maps to as_user/pipeline_id (pipeline_id has no schema description of its own), but the days default of 30 is merely repeated from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Find open deals') plus the defining filter criterion ('haven't been updated in N days'), which distinguishes it from general listing siblings like pipedrive_deals_list. It does not name the nearest counterpart (pipedrive_recently_updated), so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'haven't been updated in N days' implies the use case (stale-deal follow-up) and mirrors a sibling like pipedrive_people_needing_followup. However there is no explicit when-to-use/when-not or routing to alternatives such as pipedrive_my_open_deals, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_users_getA
Get a single user by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The user ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly indicates a read operation ('Get'), which implies no destructive side effects. However, it does not disclose authorization needs, rate limits, or error handling, but is adequate for a simple retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 7 words, conveying the essential information with no unnecessary words. It is efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple GET-by-ID tool with no output schema, the description is somewhat complete. It states the action and required parameter, but lacks details on the return value or when to use over sibling tools, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% as the only parameter (user_id) is documented in the schema. The description does not add additional meaning beyond 'by ID', so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a single user by ID' is specific with a clear verb and resource, and it distinguishes from sibling tools like pipedrive_users_list (which retrieves multiple users) and pipedrive_users_permissions (which deals with permissions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as pipedrive_users_list or pipedrive_users_permissions. It lacks any context about prerequisites or appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_users_listC
List all Pipedrive users in the account.
| Name | Required | Description | Default |
|---|---|---|---|
| active_flag | No | Filter by active status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but only states the resource being listed. It says nothing about pagination, result caps, auth/permission requirements, or the return shape for what could be a large account-wide listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity is a symptom of under-specification rather than tight drafting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list with no output schema, the definition is minimally viable. It omits pagination and default-filter behavior, which an agent calling an account-wide list would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the lone active_flag filter is already documented in the schema. The description's 'all users' actually implies no filtering, which slightly undercuts rather than clarifies the filter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('List all Pipedrive users'), and the scope word 'all' hints at the distinction from pipedrive_users_get. However, it does not explicitly name that sibling or pipedrive_users_permissions, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. It does not say to prefer this over pipedrive_users_get for single lookups or over pipedrive_users_permissions for permission data, leaving routing to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_users_permissionsB
Get permissions for a specific user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The user ID to get permissions for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits (e.g., read-only nature, scope of permissions returned, or side effects). It only states 'Get permissions' without further detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and clear. There is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 parameter, no nested objects, no output schema), the description is minimally adequate but does not explain the return format or any constraints, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (user_id) that has a description. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Get permissions' and specifies the resource 'for a specific user', distinguishing it from sibling tools like pipedrive_users_get and pipedrive_users_list which likely retrieve user details or list users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternative tools such as pipedrive_users_get or pipedrive_users_list. The description lacks context on use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_webhooks_createB
Create a webhook subscription. Requires confirm: "YES". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be exactly "YES" to confirm | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| user_id | No | User ID to scope events to | |
| version | No | Webhook payload version | 2.0 |
| event_action | Yes | Action that triggers the webhook | |
| event_object | Yes | Object type that triggers the webhook | |
| http_auth_user | No | HTTP basic auth username for the webhook URL | |
| subscription_url | Yes | URL to receive webhook events | |
| http_auth_password | No | HTTP basic auth password for the webhook URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It correctly signals a mutation ('Create'), flags a confirmation gate (confirm: "YES"), and notes a preview mode — useful safety context. But it omits permissions required, idempotency/duplicate handling, side effects, and what the confirmation protects against, so the disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action. Nothing is padded or buried. The confirm sentence is somewhat redundant with the schema's const definition, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation tool with no annotations and no output schema, the description is thin: it says nothing about permissions, what the response contains, or how the created webhook behaves. The rich schema covers parameter semantics, but the behavioral wrapping an agent needs before firing a write is only partially present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including full enum documentation and descriptions for confirm, dry_run, and every other parameter, so the schema does the heavy lifting. The description restates confirm and dry_run without adding format, constraints, or guidance beyond what the schema already says — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Create a webhook subscription.' An agent can immediately tell this apart from pipedrive_webhooks_list and pipedrive_webhooks_delete. However, it never explicitly names those siblings or clarifies the scope of the created subscription, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance relative to alternatives, and no conditions, prerequisites, or exclusions beyond the required confirm value. 'Supports dry_run' hints at a preview workflow but does not explain when to prefer dry_run over a live call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_webhooks_deleteA
Delete a webhook. Requires confirm: "YES". Supports dry_run.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional reason for the operation (logged, not sent to API) | |
| confirm | Yes | Must be exactly "YES" to confirm | |
| dry_run | No | If true, returns a preview of what would happen without executing | |
| webhook_id | Yes | The webhook ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose two real traits — a confirm gate guarding the operation and a dry_run preview mode — which is meaningful. But it omits whether deletion is permanent/irreversible, permission requirements, and side effects, leaving significant gaps for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences, front-loaded with the core action and followed by the two operational constraints. No filler and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description covers the key facts an agent needs (confirm gate, dry_run preview) but does not state irreversibility of the delete or error/permission behavior, leaving it only adequate for a destructive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description's mentions of confirm and dry_run merely restate schema fields without adding syntax, format, or interaction details, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Delete a webhook" states a specific verb (Delete) and resource (webhook), and the verb distinguishes it from its siblings pipedrive_webhooks_create and pipedrive_webhooks_list without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a usage precondition (confirm must be "YES") and a preview option (dry_run), which implies when it is safe to invoke. However, it gives no explicit when-to-use/when-not guidance and never references alternative sibling tools, so usage remains implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipedrive_webhooks_listB
List all webhooks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It only states the basic operation without disclosing details like pagination, rate limits, data freshness, or authentication requirements. The behavior is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with one sentence that directly states the tool's purpose. No wasted words, and it is front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple no-parameter list tool, the description is minimally acceptable. However, it lacks details about the returned format, pagination, or error conditions, which would be helpful given no output schema. It is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100% (empty schema). The description adds no parameter information beyond the schema, but none is needed. Baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all webhooks' is clear with a specific verb ('List') and resource ('webhooks'). It distinguishes from sibling tools like pipedrive_webhooks_create and pipedrive_webhooks_delete by implying a read-only list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., other list tools or search tools), nor does it mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
79 tool updates
v1.1.1- Changed
pipedrive_activities_create5 fields changed- added
Input schema / properties / due_date / descriptionAdded value: +"Due date (YYYY-MM-DD)" - added
Input schema / properties / due_time / descriptionAdded value: +"Due time (HH:MM)" - added
Input schema / properties / duration / descriptionAdded value: +"Duration (HH:MM)" - added
Input schema / properties / note / descriptionAdded value: +"Plain HTML markup for the activity note (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML." - changed
Input schema / properties / type / descriptionPrevious value: -"Activity type (e.g. 'call', 'meeting', 'task', 'email')"New value: +"Activity type key_string. Workspace-defined; common defaults include 'call', 'meeting', 'task', 'deadline', 'email', 'lunch'. Call pipedrive_activity_types_list first if unsure which types are configured for this workspace."
- Changed
pipedrive_activities_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_activities_list11 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / deal_id / descriptionAdded value: +"Filter by deal ID" - added
Input schema / properties / done / descriptionAdded value: +"Filter by done status" - added
Input schema / properties / lead_id / descriptionAdded value: +"Filter by lead ID" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / org_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by person ID" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction" - added
Input schema / properties / user_id / descriptionAdded value: +"Filter by user ID"
- Changed
pipedrive_activities_update2 fields changed- added
Input schema / properties / note / descriptionAdded value: +"Updated plain HTML markup for the activity note (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML." - added
Input schema / properties / type / descriptionAdded value: +"Activity type key_string. Workspace-defined; common defaults include 'call', 'meeting', 'task', 'deadline', 'email', 'lunch'. Call pipedrive_activity_types_list first if unsure which types are configured for this workspace."
- Changed
pipedrive_custom_fields_list4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / include_options / descriptionAdded value: +"Include enum/set option values" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / refresh_cache / descriptionAdded value: +"Force refresh the field metadata cache"
- Changed
pipedrive_deal_mail_messages_list2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_deal_products_add1 field changed- added
Input schema / properties / product_variation_idAdded value: +{ + "description": "Optional product variation ID (from pipedrive_product_variations_list)", + "minimum": 0, + "type": "integer" +}
- Changed
pipedrive_deal_products_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_deal_products_list3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction"
- Changed
pipedrive_deal_products_update1 field changed- added
Input schema / properties / product_variation_idAdded value: +{ + "description": "Optional product variation ID (from pipedrive_product_variations_list)", + "minimum": 0, + "type": "integer" +}
- Changed
pipedrive_deals_create4 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_deals_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_deals_get3 fields changed- added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "first_won_time", + "products_count", + "files_count", + "notes_count", + "followers_count", + "email_messages_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "participants_count", + "last_incoming_mail_time", + "last_outgoing_mail_time", + "smart_bcc_email", + "source_lead_id" +]
- Changed
pipedrive_deals_list18 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / filter_id / descriptionAdded value: +"Pipedrive filter ID to apply" - added
Input schema / properties / ids / descriptionAdded value: +"Filter by deal IDs" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "first_won_time", + "products_count", + "files_count", + "notes_count", + "followers_count", + "email_messages_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "participants_count", + "last_incoming_mail_time", + "last_outgoing_mail_time", + "smart_bcc_email", + "source_lead_id" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / org_id / descriptionAdded value: +"Filter by linked organization ID" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by linked person ID" - added
Input schema / properties / pipeline_id / descriptionAdded value: +"Filter by pipeline ID" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - changed
Input schema / properties / sort_by / enumPrevious value: -[ - "id", - "update_time", - "add_time", - "title", - "value" -]New value: +[ + "id", + "update_time", + "add_time" +] - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction" - added
Input schema / properties / stage_id / descriptionAdded value: +"Filter by stage ID" - added
Input schema / properties / status / descriptionAdded value: +"Filter by deal status" - added
Input schema / properties / updated_since / descriptionAdded value: +"Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z)" - added
Input schema / properties / updated_until / descriptionAdded value: +"Filter by update time upper bound (ISO 8601 format)"
- Changed
pipedrive_deals_move_stage1 field changed- added
Input schema / properties / pipeline_id / descriptionAdded value: +"Target pipeline ID (if moving across pipelines)"
- Changed
pipedrive_deals_search9 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / exact_match / descriptionAdded value: +"Whether to do an exact match" - added
Input schema / properties / fields / descriptionAdded value: +"Fields to search in (e.g. 'title,custom_fields')" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the search results" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "deal.cc_email" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of search results per page (default 10, max 50)" - added
Input schema / properties / organization_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by person ID" - added
Input schema / properties / status / descriptionAdded value: +"Filter by deal status"
- Changed
pipedrive_deals_summary2 fields changed- added
Input schema / properties / deal_id / descriptionAdded value: +"Get summary for a specific deal" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner"
- Changed
pipedrive_deals_update4 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_files_get1 field changed- added
Input schema / properties / include_download_url / descriptionAdded value: +"Include a temporary download URL"
- Changed
pipedrive_files_list8 fields changed- added
Input schema / properties / activity_id / descriptionAdded value: +"Filter by activity ID" - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / deal_id / descriptionAdded value: +"Filter by deal ID" - added
Input schema / properties / lead_id / descriptionAdded value: +"Filter by lead ID" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / org_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by person ID" - added
Input schema / properties / product_id / descriptionAdded value: +"Filter by product ID"
- Changed
pipedrive_files_upload7 fields changed- added
Input schema / properties / activity_id / descriptionAdded value: +"Attach to this activity" - added
Input schema / properties / deal_id / descriptionAdded value: +"Attach to this deal" - added
Input schema / properties / lead_id / descriptionAdded value: +"Attach to this lead" - added
Input schema / properties / mime_type / descriptionAdded value: +"MIME type (auto-detected if omitted)" - added
Input schema / properties / org_id / descriptionAdded value: +"Attach to this organization" - added
Input schema / properties / person_id / descriptionAdded value: +"Attach to this person" - added
Input schema / properties / product_id / descriptionAdded value: +"Attach to this product"
- Changed
pipedrive_filters_list1 field changed- added
Input schema / properties / type / descriptionAdded value: +"Filter entity type"
- Changed
pipedrive_filters_results4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction"
- Changed
pipedrive_leads_create7 fields changed- added
Input schema / properties / expected_close_date / descriptionAdded value: +"Expected close date (YYYY-MM-DD)" - added
Input schema / properties / label_ids / descriptionAdded value: +"Lead label UUIDs" - added
Input schema / properties / organization_id / descriptionAdded value: +"Linked organization ID" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / person_id / descriptionAdded value: +"Linked person ID" - added
Input schema / properties / value / descriptionAdded value: +"Lead value" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_leads_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_leads_list8 fields changed- added
Input schema / properties / archived_status / descriptionAdded value: +"Filter by archived status" - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / filter_id / descriptionAdded value: +"Pipedrive filter ID to apply" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / organization_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by person ID" - added
Input schema / properties / sort / descriptionAdded value: +"Sort field and direction (e.g. 'add_time ASC')"
- Changed
pipedrive_leads_search4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the search results" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "lead.was_seen" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of search results per page (default 10, max 50)"
- Changed
pipedrive_leads_update2 fields changed- added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_mail_messages_get1 field changed- added
Input schema / properties / include_body / descriptionAdded value: +"Include full message body in response"
- Changed
pipedrive_mail_thread_messages_list1 field changed- added
Input schema / properties / include_body / descriptionAdded value: +"Include full message body in response"
- Changed
pipedrive_mail_threads_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_mail_threads_list3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / folder / descriptionAdded value: +"Mail folder to filter by (defaults to inbox)" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_mail_threads_update5 fields changed- added
Input schema / properties / archived_flag / descriptionAdded value: +"Archive (true) or unarchive (false) the thread" - added
Input schema / properties / deal_id / descriptionAdded value: +"Link thread to this deal ID" - added
Input schema / properties / lead_id / descriptionAdded value: +"Link thread to this lead ID" - added
Input schema / properties / read_flag / descriptionAdded value: +"Mark as read (true) or unread (false)" - added
Input schema / properties / shared_flag / descriptionAdded value: +"Share thread with company (true) or keep private (false)"
- Changed
pipedrive_me1 field changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token."
- Changed
pipedrive_my_open_deals4 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / pipeline_id / descriptionAdded value: +"Filter to a specific pipeline"
- Changed
pipedrive_my_overdue_activities3 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_my_pipeline_summary2 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / pipeline_id / descriptionAdded value: +"Specific pipeline (defaults to all)"
- Changed
pipedrive_my_upcoming_activities4 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / days / descriptionAdded value: +"Number of days ahead to look (default 7, max 90)" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_note_comments_create1 field changed- changed
Input schema / properties / content_html / descriptionPrevious value: -"Comment content in HTML (sanitized server-side)"New value: +"Plain HTML markup for the comment (e.g. <p>, <br>, <strong>, <em>, <a href>); sanitized server-side. Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML."
- Changed
pipedrive_note_comments_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_note_comments_list2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_note_comments_update1 field changed- changed
Input schema / properties / content_html / descriptionPrevious value: -"Updated comment content in HTML"New value: +"Updated plain HTML markup for the comment (e.g. <p>, <br>, <strong>, <em>, <a href>); sanitized server-side. Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML."
- Changed
pipedrive_notes_create5 fields changed- changed
Input schema / properties / content_html / descriptionPrevious value: -"Note content in HTML"New value: +"Plain HTML markup for the note body (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML." - added
Input schema / properties / deal_id / descriptionAdded value: +"Attach to this deal" - added
Input schema / properties / lead_id / descriptionAdded value: +"Attach to this lead" - added
Input schema / properties / org_id / descriptionAdded value: +"Attach to this organization" - added
Input schema / properties / person_id / descriptionAdded value: +"Attach to this person"
- Changed
pipedrive_notes_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_notes_list8 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / deal_id / descriptionAdded value: +"Filter by deal ID" - added
Input schema / properties / lead_id / descriptionAdded value: +"Filter by lead ID" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / org_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / person_id / descriptionAdded value: +"Filter by person ID" - added
Input schema / properties / sort / descriptionAdded value: +"Sort order" - added
Input schema / properties / user_id / descriptionAdded value: +"Filter by user ID"
- Changed
pipedrive_notes_update1 field changed- changed
Input schema / properties / content_html / descriptionPrevious value: -"Updated note content in HTML"New value: +"Updated plain HTML markup for the note body (e.g. <p>, <br>, <strong>, <em>, <ul><li>, <a href>). Pass the HTML directly. Do not wrap it in a CDATA section (<![CDATA[ ... ]]>); CDATA is XML syntax, not HTML."
- Changed
pipedrive_organizations_create6 fields changed- added
Input schema / properties / address / descriptionAdded value: +"Organization address" - added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_organizations_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_organizations_get3 fields changed- added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "open_deals_count", + "related_open_deals_count", + "closed_deals_count", + "related_closed_deals_count", + "email_messages_count", + "people_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "files_count", + "notes_count", + "followers_count", + "won_deals_count", + "related_won_deals_count", + "lost_deals_count", + "related_lost_deals_count", + "smart_bcc_email" +]
- Changed
pipedrive_organizations_list13 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / filter_id / descriptionAdded value: +"Pipedrive filter ID to apply" - added
Input schema / properties / ids / descriptionAdded value: +"Filter by organization IDs" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "open_deals_count", + "related_open_deals_count", + "closed_deals_count", + "related_closed_deals_count", + "email_messages_count", + "people_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "files_count", + "notes_count", + "followers_count", + "won_deals_count", + "related_won_deals_count", + "lost_deals_count", + "related_lost_deals_count", + "smart_bcc_email" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - changed
Input schema / properties / sort_by / enumPrevious value: -[ - "id", - "update_time", - "add_time", - "name" -]New value: +[ + "id", + "update_time", + "add_time" +] - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction" - added
Input schema / properties / updated_since / descriptionAdded value: +"Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z)" - added
Input schema / properties / updated_until / descriptionAdded value: +"Filter by update time upper bound (ISO 8601 format)"
- Changed
pipedrive_organizations_merge1 field changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing"
- Changed
pipedrive_organizations_search5 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / exact_match / descriptionAdded value: +"Whether to do an exact match" - added
Input schema / properties / fields / descriptionAdded value: +"Fields to search in (e.g. 'name,address,custom_fields')" - removed
Input schema / properties / include_fieldsRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / limit / descriptionAdded value: +"Number of search results per page (default 10, max 50)"
- Changed
pipedrive_organizations_update5 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_people_needing_followup3 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_person_mail_messages_list2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_persons_create7 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / emails / descriptionAdded value: +"Email addresses" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / phones / descriptionAdded value: +"Phone numbers" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_persons_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_persons_get3 fields changed- added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response. marketing_status and doi_status can only be included if the company has the marketing app enabled" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "open_deals_count", + "related_open_deals_count", + "closed_deals_count", + "related_closed_deals_count", + "participant_open_deals_count", + "participant_closed_deals_count", + "email_messages_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "files_count", + "notes_count", + "followers_count", + "won_deals_count", + "related_won_deals_count", + "lost_deals_count", + "related_lost_deals_count", + "last_incoming_mail_time", + "last_outgoing_mail_time", + "marketing_status", + "doi_status", + "smart_bcc_email" +]
- Changed
pipedrive_persons_list14 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / filter_id / descriptionAdded value: +"Pipedrive filter ID to apply" - added
Input schema / properties / ids / descriptionAdded value: +"Filter by person IDs" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the response. marketing_status and doi_status can only be included if the company has the marketing app enabled" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "next_activity_id", + "last_activity_id", + "open_deals_count", + "related_open_deals_count", + "closed_deals_count", + "related_closed_deals_count", + "participant_open_deals_count", + "participant_closed_deals_count", + "email_messages_count", + "activities_count", + "done_activities_count", + "undone_activities_count", + "files_count", + "notes_count", + "followers_count", + "won_deals_count", + "related_won_deals_count", + "lost_deals_count", + "related_lost_deals_count", + "last_incoming_mail_time", + "last_outgoing_mail_time", + "marketing_status", + "doi_status", + "smart_bcc_email" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / org_id / descriptionAdded value: +"Filter by organization ID" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - changed
Input schema / properties / sort_by / enumPrevious value: -[ - "id", - "update_time", - "add_time", - "name" -]New value: +[ + "id", + "update_time", + "add_time" +] - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction" - added
Input schema / properties / updated_since / descriptionAdded value: +"Filter by update time (ISO 8601 format, e.g. 2024-01-15T00:00:00Z)" - added
Input schema / properties / updated_until / descriptionAdded value: +"Filter by update time upper bound (ISO 8601 format)"
- Changed
pipedrive_persons_merge1 field changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing"
- Changed
pipedrive_persons_search7 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / exact_match / descriptionAdded value: +"Whether to do an exact match" - added
Input schema / properties / fields / descriptionAdded value: +"Fields to search in (e.g. 'name,email,phone,custom_fields')" - added
Input schema / properties / include_fields / descriptionAdded value: +"Additional fields to include in the search results" - added
Input schema / properties / include_fields / items / enumAdded value: +[ + "person.picture" +] - added
Input schema / properties / limit / descriptionAdded value: +"Number of search results per page (default 10, max 50)" - added
Input schema / properties / organization_id / descriptionAdded value: +"Filter by organization ID"
- Changed
pipedrive_persons_update5 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / label_idsAdded value: +{ + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "type": "array" + }, + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Native Label field. Label option IDs or label names (e.g. [367] or ['Test / Internal']). Replaces existing labels; pass [] to clear. Sent as top-level label_ids, not a custom field." +} - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_pipelines_list2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Added
pipedrive_product_deals_list - Added
pipedrive_product_variations_create - Added
pipedrive_product_variations_delete - Added
pipedrive_product_variations_list - Added
pipedrive_product_variations_update - Changed
pipedrive_products_create8 fields changed- added
Input schema / properties / code / descriptionAdded value: +"Product code" - added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / prices / descriptionAdded value: +"Product prices" - added
Input schema / properties / tax / descriptionAdded value: +"Tax percentage" - added
Input schema / properties / unit / descriptionAdded value: +"Unit of measurement" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_products_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
- Changed
pipedrive_products_list7 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / custom_field_keys / descriptionAdded value: +"Custom field keys to include in the response" - added
Input schema / properties / filter_id / descriptionAdded value: +"Pipedrive filter ID to apply" - added
Input schema / properties / ids / descriptionAdded value: +"Filter by product IDs" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction"
- Changed
pipedrive_products_search3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / fields / descriptionAdded value: +"Fields to search in" - added
Input schema / properties / limit / descriptionAdded value: +"Number of search results per page (default 10, max 50)"
- Changed
pipedrive_products_update4 fields changed- added
Input schema / properties / custom_fields / descriptionAdded value: +"Custom fields by API key (e.g. { 'abc123hash': 'value' })" - added
Input schema / properties / custom_fields_by_name / descriptionAdded value: +"Custom fields by human-readable name (e.g. { 'Tier': 'Enterprise' })" - added
Input schema / properties / owner_id / descriptionAdded value: +"User ID of the owner" - added
Input schema / properties / visible_to / descriptionAdded value: +"Visibility: 1=owner only, 3=owner's group, 5=owner's group+sub, 7=everyone"
- Changed
pipedrive_recently_updated4 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / days / descriptionAdded value: +"Number of days back to look (default 7)" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_stages_list5 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)" - added
Input schema / properties / pipeline_id / descriptionAdded value: +"Filter by pipeline ID" - added
Input schema / properties / sort_by / descriptionAdded value: +"Field to sort by" - added
Input schema / properties / sort_direction / descriptionAdded value: +"Sort direction"
- Changed
pipedrive_stale_deals4 fields changed- added
Input schema / properties / as_user / descriptionAdded value: +"Optional user name or email to act as. Defaults to the API token owner. Use this when multiple people share one API token." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque token from previous response to fetch the next page" - added
Input schema / properties / days / descriptionAdded value: +"Days since last update to consider stale (default 30)" - added
Input schema / properties / limit / descriptionAdded value: +"Number of items per page (default 25, max 100)"
- Changed
pipedrive_users_list1 field changed- added
Input schema / properties / active_flag / descriptionAdded value: +"Filter by active status"
- Changed
pipedrive_webhooks_create5 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / http_auth_password / descriptionAdded value: +"HTTP basic auth password for the webhook URL" - added
Input schema / properties / http_auth_user / descriptionAdded value: +"HTTP basic auth username for the webhook URL" - added
Input schema / properties / user_id / descriptionAdded value: +"User ID to scope events to" - added
Input schema / properties / version / descriptionAdded value: +"Webhook payload version"
- Changed
pipedrive_webhooks_delete2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"If true, returns a preview of what would happen without executing" - added
Input schema / properties / reason / descriptionAdded value: +"Optional reason for the operation (logged, not sent to API)"
88 tool updates
v1.1.0- First observed
pipedrive_activities_create - First observed
pipedrive_activities_delete - First observed
pipedrive_activities_get - First observed
pipedrive_activities_list - First observed
pipedrive_activities_mark_done - First observed
pipedrive_activities_update - First observed
pipedrive_activity_types_list - First observed
pipedrive_custom_fields_list - First observed
pipedrive_deal_mail_messages_list - First observed
pipedrive_deal_products_add - First observed
pipedrive_deal_products_delete - First observed
pipedrive_deal_products_list - First observed
pipedrive_deal_products_update - First observed
pipedrive_deals_create - First observed
pipedrive_deals_delete - First observed
pipedrive_deals_get - First observed
pipedrive_deals_list - First observed
pipedrive_deals_move_stage - First observed
pipedrive_deals_search - First observed
pipedrive_deals_summary - First observed
pipedrive_deals_update - First observed
pipedrive_files_get - First observed
pipedrive_files_list - First observed
pipedrive_files_upload - First observed
pipedrive_filters_get - First observed
pipedrive_filters_list - First observed
pipedrive_filters_results - First observed
pipedrive_leads_create - First observed
pipedrive_leads_delete - First observed
pipedrive_leads_get - First observed
pipedrive_leads_list - First observed
pipedrive_leads_search - First observed
pipedrive_leads_update - First observed
pipedrive_mail_messages_get - First observed
pipedrive_mail_thread_messages_list - First observed
pipedrive_mail_threads_delete - First observed
pipedrive_mail_threads_get - First observed
pipedrive_mail_threads_list - First observed
pipedrive_mail_threads_update - First observed
pipedrive_me - First observed
pipedrive_my_open_deals - First observed
pipedrive_my_overdue_activities - First observed
pipedrive_my_pipeline_summary - First observed
pipedrive_my_upcoming_activities - First observed
pipedrive_note_comments_create - First observed
pipedrive_note_comments_delete - First observed
pipedrive_note_comments_get - First observed
pipedrive_note_comments_list - First observed
pipedrive_note_comments_update - First observed
pipedrive_notes_create - First observed
pipedrive_notes_delete - First observed
pipedrive_notes_get - First observed
pipedrive_notes_list - First observed
pipedrive_notes_update - First observed
pipedrive_organizations_create - First observed
pipedrive_organizations_delete - First observed
pipedrive_organizations_get - First observed
pipedrive_organizations_list - First observed
pipedrive_organizations_merge - First observed
pipedrive_organizations_search - First observed
pipedrive_organizations_update - First observed
pipedrive_people_needing_followup - First observed
pipedrive_person_mail_messages_list - First observed
pipedrive_persons_create - First observed
pipedrive_persons_delete - First observed
pipedrive_persons_get - First observed
pipedrive_persons_list - First observed
pipedrive_persons_merge - First observed
pipedrive_persons_search - First observed
pipedrive_persons_update - First observed
pipedrive_pipelines_get - First observed
pipedrive_pipelines_list - First observed
pipedrive_products_create - First observed
pipedrive_products_delete - First observed
pipedrive_products_get - First observed
pipedrive_products_list - First observed
pipedrive_products_search - First observed
pipedrive_products_update - First observed
pipedrive_recently_updated - First observed
pipedrive_stages_get - First observed
pipedrive_stages_list - First observed
pipedrive_stale_deals - First observed
pipedrive_users_get - First observed
pipedrive_users_list - First observed
pipedrive_users_permissions - First observed
pipedrive_webhooks_create - First observed
pipedrive_webhooks_delete - First observed
pipedrive_webhooks_list
TDQS
Scored across 93 tools
While most tools target distinct resources and actions, the set includes several overlapping convenience wrappers (e.g., pipedrive_deals_summary vs pipedrive_my_pipeline_summary, pipedrive_my_open_deals vs pipedrive_deals_list, and the similarly named pipedrive_product_deals_list vs pipedrive_deal_products_list). Descriptions help clarify intent, but an agent still faces multiple ambiguous pairs.
All tools use the pipedrive_ prefix and snake_case with a generally consistent entity_action pattern. Minor deviations exist (e.g., reversed entity order in pipedrive_product_deals_list vs pipedrive_deal_products_list; singular pipedrive_mail_thread_messages_list vs plural pipedrive_mail_threads_list), but naming is largely predictable.
93 tools is an extreme mismatch for a single MCP server; even for a broad CRM like Pipedrive, this far exceeds the well-scoped 3-15 range. Many tools are convenience wrappers that could be consolidated or parameterized to reduce surface area.
Core CRM entities (deals, persons, orgs, leads, activities, notes, products, mail) have near-complete CRUD/search coverage with useful lifecycle operations like merge, move_stage, and mark_done. Gaps remain for filter create/update/delete, webhook update, and pipeline/stage management, but these are relatively minor for agent workflows.
Maintenance
Related MCP Connectors
Pipedrive MCP Pack — wraps the Pipedrive REST API v1
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
Native MCP access to CRM contacts, organizations, deals and tasks with user permissions.
Cross-product MCP server for CRM, LeadKit, ProjectKit, Bookio. 10 action types, MIT open spec.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceUniversal MCP server for Pipedrive, enabling interaction with Pipedrive's tools and services through a standardized API.1MIT
- AlicenseNot gradedqualityCmaintenanceA comprehensive MCP server for the Pipedrive CRM API, enabling AI assistants to read, write, and analyze CRM data conversationally through 100 tools including performance reporting and loss analysis.76 npm8MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Pipedrive API v2, enabling management of deals, persons, organizations, products, activities, and pipelines through natural language in MCP clients like Cursor and Claude Desktop.32 npm2MIT
- AlicenseNot gradedqualityDmaintenanceComprehensive MCP server for Pipedrive CRM with 118 tools and 27 UI apps, enabling full CRM operations via natural language.40 npmMIT