> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Pipeline CRM

The Pipeline CRM connector lets your AI agent act in each user's Pipeline CRM account. Each user connects their own Pipeline CRM access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 115 tools.

**Authentication:** Bearer Token
**Categories:** CRM & Sales
**Tools:** 115: 74 read, 27 write, 14 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=PIPELINECRM)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Pipeline CRM connection

   In **AgentKit > Connections**, create a Pipeline CRM connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'pipelinecrm'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Pipeline CRM:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'pipelinecrm_audits_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "pipelinecrm"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Pipeline CRM:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="pipelinecrm_audits_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Pipeline CRM credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'pipelinecrm_audits_list',
  toolInput: {},
  connector: 'pipelinecrm',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="pipelinecrm_audits_list",
    tool_input={},
    connection_name="pipelinecrm",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `pipelinecrm_audits_list`

List Audits · Read-only

List the change history of records you can see, optionally filtered by record type and ID, user, change type, field or date.
Returns a page of audit entries (id, auditable_type, auditable_id, user_id, audit_type, model_column, value before and after, created_at) plus pagination.
Use it to see who changed what on a deal, person or company.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `added_from` (`string`, optional): Only return records whose change date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `added_to` (`string`, optional): Only return records whose change date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `audit_type` (`string`, optional): Only return this kind of change, such as create, update or destroy. Example: update
- `auditable_ids` (`string`, optional): Only return changes to these record IDs. One ID or a comma-separated list. Example: 4521
- `auditable_type` (`string`, optional): Only return changes to this record type, such as Deal, Person or Company. Example: Deal
- `model_column` (`string`, optional): Only return changes to this field name. Example: deal_stage_id
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `sort` (`string`, optional): Sort key, `-` prefix for descending. Example: -created_at
- `user_ids` (`string`, optional): Only return changes made by these users. One ID or a comma-separated list. Example: 13

Example input: `{}`

### `pipelinecrm_calendar_entries_list`

List Tasks and Events · Read-only

List calendar entries (tasks and events), optionally filtered by kind, completion, lateness or date window.
Returns a page of entries (id, type, name, description, due_date or start/end time, complete, owner, category, association) plus pagination.
Use it to find tasks and events. Use pipelinecrm_calendar_entry_get for one entry.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `completed` (`boolean`, optional): Set to true to return only completed items. Example: true
- `include_inactive` (`boolean`, optional): Set to true to include inactive entries (deleted occurrences of recurring series). Example: true
- `incomplete` (`boolean`, optional): Set to true to return only incomplete items. Example: true
- `kind` (`string`, optional): Only return tasks or only events. Use task or event. Example: task. One of: `task`, `event`.
- `late` (`boolean`, optional): Set to true to return only late (overdue) items. Example: true
- `modified_from` (`string`, optional): Only return records whose last-modified date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `modified_to` (`string`, optional): Only return records whose last-modified date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `within_from` (`string`, optional): Only return items that occur after this date (YYYY-MM-DD). Example: 2026-09-01
- `within_to` (`string`, optional): Only return items that occur before this date (YYYY-MM-DD). Example: 2026-09-30

Example input: `{}`

### `pipelinecrm_calendar_entry_get`

Get Task or Event · Read-only

Retrieve one calendar entry (task or event) by ID.
Returns the entry: type, name, description, due date or start/end time, completion, owner, category, priority, status, association and recurrence.
Use it when you have an entry ID. Use pipelinecrm_calendar_entries_list to find entries.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the calendar entry. Example: 99231

Example input: `{"calendar_entry_id":99231}`

### `pipelinecrm_calendar_entry_priorities_list`

List Task Priorities · Read-only

List the task and event priorities configured in the Pipeline CRM account.
Returns id, name, position and color.
Use it to find a calendar_entry_priority_id for tasks and events.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_calendar_entry_statuses_list`

List Task Statuses · Read-only

List the task and event statuses (To-Do, Done and custom ones) configured in the Pipeline CRM account.
Returns id, name, position, color and status_type.
Use it to find a calendar_entry_status_id for tasks and events.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_call_dispositions_list`

List Call Dispositions · Read-only

List the call dispositions (outcomes) configured in the Pipeline CRM account.
Returns id, name, color and position.
Use it to interpret call outcomes on call logs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_call_log_get`

Get Call Log · Read-only

Retrieve one phone call log by ID.
Returns the call's direction, status, numbers, party, timing and linked note.
Use it when you have a call log ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_log_id` (`integer`, required): ID of the call log. Example: 7310

Example input: `{"call_log_id":7310}`

### `pipelinecrm_call_logs_list`

List Call Logs · Read-only

List phone call logs you can see, written by the dialer and phone integration (read-only).
Returns a page of calls (id, user, direction, status, from and to numbers, party, start time, duration, linked note) plus pagination.
Use it to review call activity. Use pipelinecrm_call_log_get for one call.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_comments_list`

List Comments · Read-only

List every comment on notes you can see, newest first, optionally limited to a modified-date window.
Returns a page of comments (id, comment text, user, created_at, updated_at) plus pagination.
Use it to catch up on recent discussion. Use pipelinecrm_note_comments_list for one note's comments.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `modified_from` (`string`, optional): Only return records whose last-modified date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `modified_to` (`string`, optional): Only return records whose last-modified date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_companies_autocomplete`

Autocomplete Companies · Read-only

Find companies whose name starts with the given text.
Returns a short list of matches with id and name only (empty when the text is blank).
Use it to resolve a company name to an ID quickly. Use pipelinecrm_companies_list for full records and filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `q` (`string`, optional): Text the company name should start with. Example: Acme

Example input: `{}`

### `pipelinecrm_companies_list`

List Companies · Read-only

List companies, optionally filtered by name, email, owner, customer status, location or dates.
Returns a page of company records (id, name, email, web, phones, address, owner, tags) plus pagination.
Use it to browse or filter companies. Use pipelinecrm_companies_autocomplete for a quick name lookup and pipelinecrm_company_get for one company.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `city` (`string`, optional): Only return companies whose city starts with this text. Example: Philadelphia
- `company_ids` (`string`, optional): Only return records matching these company IDs. One ID or a comma-separated list. Example: 3310,3311
- `created_from` (`string`, optional): Only return records whose creation date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `created_to` (`string`, optional): Only return records whose creation date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `email` (`string`, optional): Only return companies whose email starts with this text. Example: info@acme.com
- `is_customer` (`string`, optional): Only return companies that are (Yes) or are not (No) customers. Use Yes or No. Example: No. One of: `Yes`, `No`.
- `modified_from` (`string`, optional): Only return records whose last-modified date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `modified_to` (`string`, optional): Only return records whose last-modified date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `name` (`string`, optional): Only return companies whose name starts with this text. Example: Acme
- `name_exact` (`string`, optional): Only return companies whose name exactly matches this text. Example: Acme Corporation
- `owner_ids` (`string`, optional): Only return records matching these owner (user) IDs. One ID or a comma-separated list. Example: 13
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `search_id` (`integer`, optional): ID of a saved search (list view) to run. Any other filters you pass are merged over the saved search's own conditions. Get IDs from pipelinecrm_searches_list. Example: 5501
- `sort` (`string`, optional): Sort column key; prefix with - for descending and separate several keys with commas. Column keys include company_name. Example: -company_name
- `state` (`string`, optional): Only return companies whose state starts with this text. Example: PA

Example input: `{}`

### `pipelinecrm_company_children_list`

List Child Companies · Read-only

List the child companies whose parent is the given company.
Returns each child's id, name, parent_id, owner and deals value.
Use it to explore a company hierarchy. Use pipelinecrm_company_parents_list for the other direction.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the parent company. Example: 3310

Example input: `{"company_id":3310}`

### `pipelinecrm_company_custom_fields_list`

List Company Custom Fields · Read-only

List the custom fields defined for companies configured in the Pipeline CRM account.
Returns id, name, field_type, record_type and is_required.
Use it to learn the custom_label_<id> keys that company custom_fields expect.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_type` (`string`, optional): Only return custom fields of this type, such as dropdown, text, number or date. Example: dropdown
- `group_id` (`integer`, optional): Only return custom fields in the custom field group with this ID. Example: 3
- `name` (`string`, optional): Only return custom fields whose name contains this text. Example: Region
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_company_get`

Get Company · Read-only

Retrieve one company by ID.
Returns the full company record: name, description, email, web, phones, address, owner, tags, customer details and custom fields.
Use it when you have a company ID. Use pipelinecrm_companies_list or pipelinecrm_companies_autocomplete to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the company. Example: 3310

Example input: `{"company_id":3310}`

### `pipelinecrm_company_parents_list`

List Parent Companies · Read-only

List the parent companies of the given company.
Returns each parent's id, name, parent_id, owner and deals value.
Use it to explore a company hierarchy. Use pipelinecrm_company_children_list for the other direction.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the child company. Example: 3311

Example input: `{"company_id":3311}`

### `pipelinecrm_company_people_list`

List Company People · Read-only

List the people who belong to one company.
Returns a page of person records plus pagination.
Use it to see a company's contacts. Use pipelinecrm_people_list to filter people across companies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the company. Example: 3310
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"company_id":3310}`

### `pipelinecrm_company_tags_list`

List Company Tags · Read-only

List the company tags configured in the Pipeline CRM account.
Returns id and name.
Use it to find tag IDs for tag_ids on companies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_contact_tags_list`

List Contact Tags · Read-only

List the predefined tags for people (contacts) configured in the Pipeline CRM account.
Returns id, name and color.
Use it to find tag IDs for predefined_contacts_tag_ids on people.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_currencies_list`

List Currencies · Read-only

List every currency Pipeline CRM supports (not account-specific).
Returns a page of currencies (id, name, code, symbol, decimal_places) plus pagination.
Use it to map a currency ID on a deal to its code.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_custom_field_dropdown_entries_list`

List Custom Field Dropdown Options · Read-only

List the dropdown options of custom fields configured in the Pipeline CRM account.
Returns id, custom_field_label_id, name and position.
Use it to find the option ID to store in a dropdown custom field.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `custom_field_id` (`integer`, optional): Only return the options of the custom field label with this ID (from the custom field list tools). Example: 4821
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_custom_fields_list`

List Deal Custom Fields · Read-only

List the custom fields defined for deals configured in the Pipeline CRM account.
Returns id, name, field_type, record_type and is_required.
Use it to learn the custom_label_<id> keys that deal custom_fields expect.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_type` (`string`, optional): Only return custom fields of this type, such as dropdown, text, number or date. Example: dropdown
- `group_id` (`integer`, optional): Only return custom fields in the custom field group with this ID. Example: 3
- `name` (`string`, optional): Only return custom fields whose name contains this text. Example: Region
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_get`

Get Deal · Read-only

Retrieve one deal by its ID.
Returns the full deal record: name, value, stage, status, probability, owner, company, primary contact, people, tags, custom fields and dates.
Use it when you have a deal ID. Use pipelinecrm_deals_list to find deals by name or filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_id` (`integer`, required): ID of the deal. Example: 4521

Example input: `{"deal_id":4521}`

### `pipelinecrm_deal_loss_reasons_list`

List Deal Loss Reasons · Read-only

List the deal loss reasons configured in the Pipeline CRM account.
Returns id, name and position.
Use it to find a deal_loss_reason_id when closing a deal as lost.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_notes_list`

List Deal Notes · Read-only

List the activities (notes) logged on one deal.
Returns a page of notes (id, title, content, category, author, created_at) plus pagination.
Use it to read a deal's activity history. Use pipelinecrm_notes_list to filter notes across deals, people and companies.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_id` (`integer`, required): ID of the deal. Example: 4521
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"deal_id":4521}`

### `pipelinecrm_deal_pipelines_list`

List Deal Pipelines · Read-only

List the deal pipelines configured in the Pipeline CRM account.
Returns id, name, default flag, pipeline_type, description, deal counts and won/lost stages.
Use it to find a pipeline_id for the pipeline filter on pipelinecrm_deals_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_stages_list`

List Deal Stages · Read-only

List the deal stages configured in the account.
Returns each stage's id, name, percent and deal_pipeline_id, plus pagination.
Use it to find a deal_stage_id for pipelinecrm_deal_create, pipelinecrm_deal_update or the stage filter on pipelinecrm_deals_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_statuses_list`

List Deal Statuses · Read-only

List the deal statuses configured in the Pipeline CRM account.
Returns id, name, color, position and editable flag.
Use it to find a status ID for pipelinecrm_deal_create or pipelinecrm_deal_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_tags_list`

List Deal Tags · Read-only

List the deal tags configured in the Pipeline CRM account.
Returns id and name.
Use it to find tag IDs for tag_ids on deals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deal_totals_by_stage_get`

Get Deal Totals by Stage · Read-only

Get the count and total value of the deals you can see in every stage of the account's pipelines.
Returns one entry per stage: deal_stage_id, deal_stage_name, count and total.
Use it for a pipeline summary. Use pipelinecrm_deals_list to see the individual deals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `pipelinecrm_deal_won_reasons_list`

List Deal Won Reasons · Read-only

List the deal won reasons configured in the Pipeline CRM account.
Returns id, name and position.
Use it to find a deal_won_reason_id when closing a deal as won.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_deals_list`

List Deals · Read-only

List deals in Pipeline CRM, optionally filtered by name, stage, pipeline, owner, status, value or dates.
Returns a page of deal records (id, name, value, stage, status, owner, company, primary contact, expected close date) plus pagination (page, per_page, total).
Use it to browse or filter deals. Use pipelinecrm_deal_get to fetch one deal by ID, and pipelinecrm_deal_totals_by_stage_get for pipeline totals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_name` (`string`, optional): Only return deals whose company name contains this text. Example: Acme
- `created_from` (`string`, optional): Only return records whose creation date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `created_to` (`string`, optional): Only return records whose creation date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `deal_ids` (`string`, optional): Only return records matching these deal IDs. One ID or a comma-separated list. Example: 4521,4522
- `expected_close_from` (`string`, optional): Only return records whose expected close date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `expected_close_to` (`string`, optional): Only return records whose expected close date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `is_archived` (`string`, optional): Only return archived (Yes) or non-archived (No) deals. Use Yes or No. Example: No. One of: `Yes`, `No`.
- `modified_from` (`string`, optional): Only return records whose last-modified date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `modified_to` (`string`, optional): Only return records whose last-modified date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `name` (`string`, optional): Only return deals whose name contains this text (case-insensitive). Example: Acme
- `owner_ids` (`string`, optional): Only return records matching these owner (user) IDs. One ID or a comma-separated list. Example: 13
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `pipeline_id` (`integer`, optional): Only return deals in the deal pipeline with this ID (from pipelinecrm_deal_pipelines_list). Example: 2
- `primary_contact_id` (`integer`, optional): Only return deals whose primary contact is the person with this ID. Example: 8802
- `search_id` (`integer`, optional): ID of a saved search (list view) to run. Any other filters you pass are merged over the saved search's own conditions. Get IDs from pipelinecrm_searches_list. Example: 5501
- `sort` (`string`, optional): Sort column key; prefix with - for descending and separate several keys with commas. Column keys include deal_name and deal_value. Example: -deal_value
- `source_ids` (`string`, optional): Only return records matching these lead source IDs. One ID or a comma-separated list. Example: 7
- `stage_ids` (`string`, optional): Only return records matching these deal stage IDs. One ID or a comma-separated list. Example: 3,4
- `status_ids` (`string`, optional): Only return records matching these deal status IDs. One ID or a comma-separated list. Example: 1
- `value_max` (`number`, optional): Only return deals worth at most this value. Example: 50000
- `value_min` (`number`, optional): Only return deals worth at least this value. Example: 10000

Example input: `{}`

### `pipelinecrm_document_get`

Get File · Read-only

Retrieve one file (document) by ID.
Returns the file's title, size, owner, linked records, upload status and download URL.
Use it to check a file or its upload status after pipelinecrm_document_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `document_id` (`integer`, required): ID of the file (document). Example: 6612

Example input: `{"document_id":6612}`

### `pipelinecrm_document_tags_list`

List File Tags · Read-only

List the file (document) tags configured in the Pipeline CRM account.
Returns id and name.
Use it to find tag IDs for files.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_documents_list`

List Files · Read-only

List files (documents) attached to deals, people, companies or tasks, optionally filtered by record, name, type or owner.
Returns a page of files (id, title, size, owner, linked deal/person/company, upload status, download URL) plus pagination.
Use it to find files. Use pipelinecrm_document_get for one file.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, optional): Filter documents by calendar entry ID (task or event). Example: 99231
- `company_ids` (`string`, optional): Only return records matching these company IDs. One ID or a comma-separated list. Example: 3310
- `deal_ids` (`string`, optional): Only return records matching these deal IDs. One ID or a comma-separated list. Example: 4521
- `document_type` (`string`, optional): Only return files of this kind: all, spreadsheets, images, documents, pds, presentations or others. Example: documents. One of: `all`, `spreadsheets`, `images`, `documents`, `pds`, `presentations`, `others`.
- `name` (`string`, optional): Only return files whose name contains this text. Example: proposal
- `owner_ids` (`string`, optional): Only return records matching these owner (user) IDs. One ID or a comma-separated list. Example: 13
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `person_ids` (`string`, optional): Only return records matching these person IDs. One ID or a comma-separated list. Example: 8802
- `sort` (`string`, optional): The attribute to sort on. Example: created_at

Example input: `{}`

### `pipelinecrm_event_categories_list`

List Event Categories · Read-only

List the task and event categories configured in the Pipeline CRM account.
Returns id and name.
Use it to find the category_id that pipelinecrm_calendar_entry_create requires.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_lead_sources_list`

List Lead Sources · Read-only

List the lead sources configured in the Pipeline CRM account.
Returns id, name and cost per lead.
Use it to find a source ID for deals (deal_source) or people (lead_source_id).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_lead_statuses_list`

List Lead Statuses · Read-only

List the lead statuses configured in the Pipeline CRM account.
Returns id, name and color.
Use it to find a lead_status_id for pipelinecrm_person_create or pipelinecrm_person_update.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_message_template_get`

Get Email Template · Read-only

Retrieve one email (message) template by ID.
Returns the template's name, subject, body, shared flag and attachments.
Use it when you have a template ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `template_id` (`integer`, required): ID of the message template. Example: 220

Example input: `{"template_id":220}`

### `pipelinecrm_message_templates_list`

List Email Templates · Read-only

List the email (message) templates you can use: your own plus shared ones.
Returns a page of templates (id, name, subject, body, shared flag, owner, attachments) plus pagination.
Use it to find an email template. Use pipelinecrm_message_template_get for one template.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_note_categories_list`

List Note Categories · Read-only

List the note (activity) categories configured in the Pipeline CRM account.
Returns id and name.
Use it to find a note_category_id for pipelinecrm_note_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_note_comment_get`

Get Note Comment · Read-only

Retrieve one comment on an activity (note).
Returns the comment's id, text, author and timestamps.
Use it when you have both the note ID and the comment ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `comment_id` (`integer`, required): ID of the comment. Example: 5120
- `note_id` (`integer`, required): ID of the note (activity). Example: 70011

Example input: `{"comment_id":5120,"note_id":70011}`

### `pipelinecrm_note_comments_list`

List Note Comments · Read-only

List the comments on one activity (note).
Returns a page of comments (id, comment text, user, created_at) plus pagination.
Use it to read a note's discussion. Use pipelinecrm_comments_list for recent comments across all notes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `note_id` (`integer`, required): ID of the note (activity). Example: 70011
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"note_id":70011}`

### `pipelinecrm_note_get`

Get Note · Read-only

Retrieve one activity (note) by ID.
Returns the note: title, content, category, author, the deal/person/company it is on, notify list and comments.
Use it when you have a note ID. Use pipelinecrm_notes_list to find notes.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `note_id` (`integer`, required): ID of the note (activity). Example: 70011

Example input: `{"note_id":70011}`

### `pipelinecrm_note_template_get`

Get Note Template · Read-only

Retrieve one note template by ID.
Returns the template's content, note_category_id and notify_user_ids.
Use it when you have a note template ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `template_id` (`integer`, required): ID of the note template. Example: 31

Example input: `{"template_id":31}`

### `pipelinecrm_note_templates_list`

List Note Templates · Read-only

List the note templates in the account.
Returns a page of templates (id, content, note_category_id, notify_user_ids, owner) plus pagination.
Use it to reuse standard note text with pipelinecrm_note_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_notes_list`

List Notes · Read-only

List activities (notes) attached to a deal, a person or a company, optionally filtered by text, category, author or date.
Returns a page of notes (id, title, content, category, author, deal/person/company IDs, created_at) plus pagination.
Use it to search activity history. Pass at least one of deal_id, person_id or company_id; Pipeline CRM requires it.
Use pipelinecrm_deal_notes_list or pipelinecrm_person_notes_list for one record's notes without filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `author_ids` (`string`, optional): Only return records matching these author (user) IDs. One ID or a comma-separated list. Example: 13
- `category_ids` (`string`, optional): Only return records matching these note category IDs. One ID or a comma-separated list. Example: 12
- `company_id` (`integer`, optional): Return notes on the company with this ID. At least one of deal_id, person_id or company_id is required. Example: 3310
- `created_from` (`string`, optional): Only return records whose creation date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `created_to` (`string`, optional): Only return records whose creation date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `deal_id` (`integer`, optional): Return notes on the deal with this ID. At least one of deal_id, person_id or company_id is required. Example: 4521
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `person_id` (`integer`, optional): Return notes on the person with this ID. At least one of deal_id, person_id or company_id is required. Example: 8802
- `query` (`string`, optional): Free-text search across each note's title, content, category name and comments. Example: pricing
- `sort` (`string`, optional): Sort column key; prefix with - for descending and separate several keys with commas. Column keys include activity_created. Example: -activity_created

Example input: `{}`

### `pipelinecrm_people_autocomplete`

Autocomplete People · Read-only

Find people whose name starts with the given text, optionally limited to one company or one deal.
Returns a short list of matches with id and full_name only.
Use it to resolve a name to a person ID quickly. Use pipelinecrm_people_list for full records and richer filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, optional): Only people at this company. Example: 3310
- `deal_id` (`integer`, optional): Only people on this deal. Example: 4521
- `q` (`string`, optional): Text the person's name should start with. Example: Acme

Example input: `{}`

### `pipelinecrm_people_list`

List People · Read-only

List people (leads and contacts), optionally filtered by name, email, company, owner, type, lead status, source or dates.
Returns a page of person records (id, first and last name, email, phone, company, owner, type, lead status) plus pagination.
Use it to browse or filter people. Use pipelinecrm_people_autocomplete for a quick name lookup and pipelinecrm_person_get for one person.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_ids` (`string`, optional): Only return records matching these company IDs. One ID or a comma-separated list. Example: 3310
- `company_name` (`string`, optional): Only return people whose company name contains this text. Example: Acme
- `created_from` (`string`, optional): Only return records whose creation date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `created_to` (`string`, optional): Only return records whose creation date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `email` (`string`, optional): Only return people whose work email contains this text. Example: jane@acme.com
- `lead_source_ids` (`string`, optional): Only return records matching these lead source IDs. One ID or a comma-separated list. Example: 7
- `lead_status_ids` (`string`, optional): Only return records matching these lead status IDs. One ID or a comma-separated list. Example: 2
- `modified_from` (`string`, optional): Only return records whose last-modified date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `modified_to` (`string`, optional): Only return records whose last-modified date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `name` (`string`, optional): Only return people whose first or last name contains this text. Example: Jane
- `owner_ids` (`string`, optional): Only return records matching these owner (user) IDs. One ID or a comma-separated list. Example: 13
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `search_id` (`integer`, optional): ID of a saved search (list view) to run. Any other filters you pass are merged over the saved search's own conditions. Get IDs from pipelinecrm_searches_list. Example: 5501
- `simple_search` (`string`, optional): Only return people whose first name, last name, email or company name contains this text. Example: acme
- `sort` (`string`, optional): Sort column key; prefix with - for descending and separate several keys with commas. Column keys include person_last_name. Example: person_last_name
- `type` (`string`, optional): Only return leads or contacts. Use Lead or Contact. Example: Contact. One of: `Lead`, `Contact`.

Example input: `{}`

### `pipelinecrm_performance_lanes_list`

List Performance Lanes · Read-only

List the performance lanes (product lines) configured in the Pipeline CRM account.
Returns the account's performance lanes.
Use it to interpret the deal_product_lines on deals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `pipelinecrm_person_custom_fields_list`

List Person Custom Fields · Read-only

List the custom fields defined for people configured in the Pipeline CRM account.
Returns id, name, field_type, record_type and is_required.
Use it to learn the custom_label_<id> keys that person custom_fields expect.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_type` (`string`, optional): Only return custom fields of this type, such as dropdown, text, number or date. Example: dropdown
- `group_id` (`integer`, optional): Only return custom fields in the custom field group with this ID. Example: 3
- `name` (`string`, optional): Only return custom fields whose name contains this text. Example: Region
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_person_deals_list`

List Person Deals · Read-only

List the deals a person is associated with.
Returns a page of deal records plus pagination.
Use it to see one person's deals. Use pipelinecrm_deals_list to filter deals across the account.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`integer`, required): ID of the person. Example: 8802
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"person_id":8802}`

### `pipelinecrm_person_get`

Get Person · Read-only

Retrieve one person (lead or contact) by ID.
Returns the full person record: name, emails, phones, position, company, owner, type, lead status and source, addresses, tags, deals and custom fields.
Use it when you have a person ID. Use pipelinecrm_people_list or pipelinecrm_people_autocomplete to find one.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`integer`, required): ID of the person. Example: 8802

Example input: `{"person_id":8802}`

### `pipelinecrm_person_notes_list`

List Person Notes · Read-only

List the activities (notes) logged on one person.
Returns a page of notes (id, title, content, category, author, created_at) plus pagination.
Use it to read a person's activity history. Use pipelinecrm_notes_list to filter notes more broadly.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`integer`, required): ID of the person. Example: 8802
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"person_id":8802}`

### `pipelinecrm_profile_get`

Get My Profile · Read-only

Get the profile of the user the API token belongs to.
Returns id, first_name, last_name, avatar and whether the user is an account admin.
Use it to find your own user ID (for owner filters) or to check the connection works.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `pipelinecrm_project_associations_list`

List Project Associations · Read-only

List the deals, companies and people linked to a project, optionally by type.
Returns a page of associations (id, associable_type, associable_id, created_at) plus pagination.
Use it to see what a project covers. The association id is what pipelinecrm_project_association_remove needs.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project. Example: 88
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `type` (`string`, optional): Filter associations by entity type. Example: deal. One of: `deal`, `company`, `person`.

Example input: `{"project_id":88}`

### `pipelinecrm_project_custom_fields_list`

List Project Custom Fields · Read-only

List the custom fields defined for projects configured in the Pipeline CRM account.
Returns id, name, field_type, record_type and is_required.
Use it to learn the custom_label_<id> keys that project custom_fields expect.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `field_type` (`string`, optional): Only return custom fields of this type, such as dropdown, text, number or date. Example: dropdown
- `group_id` (`integer`, optional): Only return custom fields in the custom field group with this ID. Example: 3
- `name` (`string`, optional): Only return custom fields whose name contains this text. Example: Region
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_project_get`

Get Project · Read-only

Retrieve one project by ID.
Returns the project's name, description, status, dates, owner, collaborators, milestones, counts and linked deals, companies and people.
Use it when you have a project ID. Use pipelinecrm_projects_list to find projects.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project. Example: 88

Example input: `{"project_id":88}`

### `pipelinecrm_project_milestone_get`

Get Project Milestone · Read-only

Retrieve one project milestone by ID.
Returns the milestone's name, project, status, dates and its tasks and events.
Use it when you have a milestone ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `milestone_id` (`integer`, required): ID of the project milestone. Example: 301

Example input: `{"milestone_id":301}`

### `pipelinecrm_project_milestone_statuses_list`

List Project Milestone Statuses · Read-only

List the project milestone statuses configured in the Pipeline CRM account.
Returns id, name, color, position and status_type.
Use it to find a project_milestone_status_id for milestones.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_project_milestones_list`

List Project Milestones · Read-only

List project milestones, optionally filtered by project, status or name.
Returns a page of milestones (id, name, project, status, start and end dates, tasks, events) plus pagination.
Use it to track project phases. Use pipelinecrm_project_milestone_get for one milestone.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, optional): Only return milestones whose name contains this text. Example: Kickoff
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `project_id` (`integer`, optional): Only return milestones of the project with this ID. Example: 88
- `sort` (`string`, optional): Sort column key; prefix with - for descending and separate several keys with commas. Column keys include project_milestone_created_at. Example: project_milestone_created_at
- `status_id` (`integer`, optional): Only return milestones in the project milestone status with this ID (from pipelinecrm_project_milestone_statuses_list). Example: 2

Example input: `{}`

### `pipelinecrm_project_templates_list`

List Project Templates · Read-only

List the project templates (account and system-wide) configured in the Pipeline CRM account.
Returns id, name, description, duration, milestones and collaborators.
Use it to find a project_template_id for pipelinecrm_project_create.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_projects_autocomplete`

Autocomplete Projects · Read-only

Find projects whose name matches the given text.
Returns the matching projects (empty when the text is blank).
Use it to resolve a project name to an ID. Use pipelinecrm_projects_list for filters and paging.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `q` (`string`, optional): The search query to match against project names. Example: Acme

Example input: `{}`

### `pipelinecrm_projects_list`

List Projects · Read-only

List projects, optionally filtered by name, owner, status, archived state or start date.
Returns a page of projects (id, name, status, owner, dates, counts, linked deals and companies) plus pagination.
Use it to browse projects. Use pipelinecrm_projects_autocomplete for a quick name lookup and pipelinecrm_project_get for one project.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `is_archived` (`string`, optional): Only return archived (Yes) or non-archived (No) projects. Use Yes or No. Example: No. One of: `Yes`, `No`.
- `name` (`string`, optional): Only return projects whose name contains this text. Example: Onboarding
- `owner_id` (`integer`, optional): Only return projects owned by the user with this ID. Example: 13
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `project_ids` (`string`, optional): Only return these projects. One ID or a comma-separated list. Example: 88,89
- `start_from` (`string`, optional): Only return records whose start date is on or after this date (YYYY-MM-DD, user's time zone). Example: 2026-01-01
- `start_to` (`string`, optional): Only return records whose start date is on or before this date (YYYY-MM-DD, user's time zone). Example: 2026-03-31
- `status` (`string`, optional): Only return open or closed projects. Example: open. One of: `open`, `closed`.

Example input: `{}`

### `pipelinecrm_revenue_types_list`

List Revenue Types · Read-only

List the revenue types configured in the Pipeline CRM account.
Returns id, name, position and default flag.
Use it to interpret a deal's revenue type.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_search_get`

Get Saved Search · Read-only

Retrieve one saved search (list view) definition by ID.
Returns its name, search_type, query conditions, columns and sort.
Use it to inspect a list view. Use pipelinecrm_search_results_get to run it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search_id` (`integer`, required): ID of the saved search. Example: 5501

Example input: `{"search_id":5501}`

### `pipelinecrm_search_results_get`

Run Saved Search · Read-only

Run a saved search (list view) and return its matching records.
Returns a page of results (deals, people, companies or activities, depending on the search type) plus pagination.
Use it to reuse a list view built in the app. Find search IDs with pipelinecrm_searches_list or pipelinecrm_starred_searches_list.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search_id` (`integer`, required): ID of the saved search to run. Example: 5501
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{"search_id":5501}`

### `pipelinecrm_searches_list`

List Saved Searches · Read-only

List the saved searches (list views) you can use.
Returns a page of searches (id, name, search_type, query, columns, starred and shared flags) plus pagination.
Use it to find a search ID for pipelinecrm_search_results_get or the search_id filter on the list tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_starred_search_get`

Get Starred Search · Read-only

Retrieve one starred search by ID.
Returns its id, name, search_type, result_count, url and updated_at.
Use it when you have a starred search ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search_id` (`integer`, required): ID of the starred search. Example: 5501

Example input: `{"search_id":5501}`

### `pipelinecrm_starred_searches_list`

List Starred Searches · Read-only

List the list views you have starred, optionally of one type (5 per page by default).
Returns starred searches (id, name, and with include_search_details: search_type, result_count, url, updated_at).
Use it to find your go-to list views. Use pipelinecrm_searches_list for every saved search.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `include_search_details` (`boolean`, optional): Add `search_type`, `result_count`, `url` and `updated_at` to each entry. Example: true
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `search_type` (`string`, optional): Only starred searches of this type. Example: deals. One of: `deals`, `people`, `companies`, `activities`.

Example input: `{}`

### `pipelinecrm_sub_entries_list`

List Sub-tasks · Read-only

List the sub-tasks or sub-events under a task or event, oldest first.
Returns the sub-entries with id, type, name, due date or times and completion.
Use it to see a task's checklist. Use pipelinecrm_calendar_entry_get for the parent entry.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the parent calendar entry. Example: 99231

Example input: `{"calendar_entry_id":99231}`

### `pipelinecrm_teams_list`

List Teams · Read-only

List the teams configured in the Pipeline CRM account.
Returns id, name, parent_id and permissions.
Use it to find team IDs for project collaborators or owner-team filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_todo_templates_list`

List Todo Templates · Read-only

List the todo templates configured in the Pipeline CRM account.
Returns id, name, template_type, default flag and template items.
Use it to find a todo_template_id to apply when creating a deal, person or company.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50

Example input: `{}`

### `pipelinecrm_user_get`

Get User · Read-only

Retrieve one user by ID.
Returns the user's name, email, phones, role and account details.
Use it when you have a user ID. Use pipelinecrm_users_list to find users.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): ID of the user. Example: 13

Example input: `{"user_id":13}`

### `pipelinecrm_users_list`

List Users · Read-only

List the users in the account that you can see, optionally filtered by email, phone or admin role.
Returns a page of users (id, full_name, email, phone, admin flag, last seen) plus pagination.
Use it to find a user ID for owner or assignee fields. Use pipelinecrm_user_get for one user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `admin` (`boolean`, optional): Return only account administrators. Example: true
- `email` (`string`, optional): Find a user with the exact email. Example: jane@acme.com
- `including_inactive` (`boolean`, optional): Return all users, including inactive ones (default returns only active). Example: true
- `page` (`integer`, optional): Page number to return, starting at 1. Default 1. Example: 1
- `per_page` (`integer`, optional): Number of records per page, at most 200. Default 200. Example: 50
- `phone` (`string`, optional): Find users whose work or mobile phone matches (formatting ignored). Example: 215-555-0100

Example input: `{}`

### `pipelinecrm_calendar_entry_create`

Create Task or Event · Write

Create a task or an event, optionally linked to a deal, person or company.
Returns the new calendar entry with its id.
Use it to schedule a follow-up task (type CalendarTask with due_date) or a meeting (type CalendarEvent with start_time and end_time).
category_id is required; get one from pipelinecrm_event_categories_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `category_id` (`integer`, required): The event category. You can retrieve a list of event categories using the event categories api. Example: 2
- `active` (`boolean`, optional): Set false to mark the entry inactive (functionally deleted). Example: true
- `all_day` (`boolean`, optional): Whether the entry lasts all day. Example: false
- `association_id` (`integer`, optional): The `id` of the associated person, company, or deal. Example: 4521
- `association_type` (`string`, optional): The type of association. Example: Deal. One of: `Deal`, `Company`, `Person`.
- `calendar_entry_priority_id` (`integer`, optional): The event priority. You can retrieve a list of event priorities using the event priorities api. Example: 2
- `calendar_entry_status_id` (`integer`, optional): The event status. You can retrieve a list of event statuses using the event statuses admin api. Example: 2
- `company_id` (`integer`, optional): If this event is tied directly with a company, then this will be set to the company id. Example: 3310
- `complete` (`boolean`, optional): Whether the task is complete. Set true to mark it done. Example: false
- `deliver_assignment_email` (`boolean`, optional): If `true`, and you are assigning the calendar entry to a different user, the system will send an assignment email to the new user. Setting it to `false` will disable sending an assignment email. Example: true
- `description` (`string`, optional): Longer description of the task or event. Example: The meeting is at 3:30
- `due_date` (`string`, optional): Due date for a task, as YYYY-MM-DD. Example: 2026-09-08
- `end_time` (`string`, optional): End time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-09-08 15:30:00
- `exdate` (`string`, optional): Specify an exdate to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: 20261117T140000
- `exrule` (`string`, optional): Specify an exrule to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: FREQ=MONTHLY;BYMONTHDAY=1
- `name` (`string`, optional): Name (title) of the task or event. Example: Follow up on proposal
- `rdate` (`string`, optional): Specify an rdate to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: 20261103T140000
- `rrule` (`string`, optional): Specify an rrule to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: FREQ=WEEKLY;BYDAY=TU
- `start_time` (`string`, optional): Start time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-09-08 15:00:00
- `type` (`string`, optional): CalendarTask for a task (uses due_date) or CalendarEvent for an event (uses start_time and end_time). Example: CalendarTask. One of: `CalendarEvent`, `CalendarTask`.

Example input: `{"category_id":2}`

### `pipelinecrm_calendar_entry_update`

Update Task or Event · Write

Update an existing task or event; only the fields you pass change.
Returns the updated calendar entry.
Use it to reschedule, rename or mark a task complete (complete true). Use pipelinecrm_calendar_entry_create for a new entry.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the calendar entry to update. Example: 99231
- `active` (`boolean`, optional): Set false to mark the entry inactive (functionally deleted). Example: true
- `all_day` (`boolean`, optional): Whether the entry lasts all day. Example: false
- `association_id` (`integer`, optional): The `id` of the associated person, company, or deal. Example: 4521
- `association_type` (`string`, optional): The type of association. Example: Deal. One of: `Deal`, `Company`, `Person`.
- `calendar_entry_priority_id` (`integer`, optional): The event priority. You can retrieve a list of event priorities using the event priorities api. Example: 2
- `calendar_entry_status_id` (`integer`, optional): The event status. You can retrieve a list of event statuses using the event statuses admin api. Example: 2
- `category_id` (`integer`, optional): The event category. You can retrieve a list of event categories using the event categories api. Example: 2
- `company_id` (`integer`, optional): If this event is tied directly with a company, then this will be set to the company id. Example: 3310
- `complete` (`boolean`, optional): Whether the task is complete. Set true to mark it done. Example: false
- `deliver_reassignment_email` (`boolean`, optional): If `true`, and you are assigning the calendar entry to a different user, the system will send an assignment email to the new user. Setting it to `false` will disable sending an assignment email. Example: true
- `description` (`string`, optional): Longer description of the task or event. Example: The meeting is at 3:30
- `due_date` (`string`, optional): Due date for a task, as YYYY-MM-DD. Example: 2026-09-08
- `end_time` (`string`, optional): End time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-09-08 15:30:00
- `exdate` (`string`, optional): Specify an exdate to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: 20261117T140000
- `exrule` (`string`, optional): Specify an exrule to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: FREQ=MONTHLY;BYMONTHDAY=1
- `name` (`string`, optional): Name (title) of the task or event. Example: Follow up on proposal
- `rdate` (`string`, optional): Specify an rdate to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: 20261103T140000
- `rrule` (`string`, optional): Specify an rrule to change the recurrence rule. This string follows the iCalendar spec, RFC2445. Example: FREQ=WEEKLY;BYDAY=TU
- `start_time` (`string`, optional): Start time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-09-08 15:00:00
- `type` (`string`, optional): CalendarTask for a task (uses due_date) or CalendarEvent for an event (uses start_time and end_time). Example: CalendarTask. One of: `CalendarEvent`, `CalendarTask`.

Example input: `{"calendar_entry_id":99231}`

### `pipelinecrm_company_child_add`

Add Child Company · Write

Link a company as a child of another company.
Returns the updated parent company.
Use it to build a company hierarchy. Requires the company hierarchy feature; a cycle or self-link is rejected.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `child_company_id` (`integer`, required): ID of the company to link as a child. Example: 3311
- `company_id` (`integer`, required): ID of the parent company. Example: 3310

Example input: `{"child_company_id":3311,"company_id":3310}`

### `pipelinecrm_company_create`

Create Company · Write

Create a company in Pipeline CRM.
Returns the new company record with its id.
Use it to add an organization you sell to. Set check_for_duplicates to true to reject a company whose name already exists. Use pipelinecrm_company_update to change one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the company. Example: Acme Corporation
- `address_1` (`string`, optional): First line of business address. Example: 500 Market St
- `address_2` (`string`, optional): Second line of business address. Example: 123 Fake St.
- `check_for_duplicates` (`boolean`, optional): If `true`, the system will return an error if you attempt to create a duplicate company. A duplicate is any company that that has the same name as any other company in your account. Example: `https://api.pipelinecrm.com/api/companies.json?api_key=XXXXXXXXXXXXXXXXXXXXXXXXX&app_key=XXXXXXXXXXXXXXXXXXXXXXXXX&check_for_duplicates=true`
- `city` (`string`, optional): Business address city. Example: San Francisco
- `country` (`string`, optional): Business address country. Example: USA
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_company_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deliver_assignment_email` (`boolean`, optional): If `true`, and you are assigning the company to a different user, the system will send an assignment email to the new user. Setting it to `false` will disable sending an assignment email. Example: true
- `description` (`string`, optional): Free-text description of the company. Example: Regional distributor of industrial parts.
- `email` (`string`, optional): The email of the company. Example: hello@acme.example
- `facebook_url` (`string`, optional): URL to company's facebook profile. Example: https://www.facebook.com/abc.company
- `fax` (`string`, optional): The company's fax number. Example: +1 415 555 0199
- `instant_message` (`string`, optional): Company's IM username. Example: abc-company
- `linked_in_url` (`string`, optional): URL to company's LinkedIn profile. Example: https://www.linkedin.com/in/abc-company
- `owner_id` (`integer`, optional): The ID of the owner of the company. Example: 13
- `phone1` (`string`, optional): Primary business number. Example: +1 415 555 0100
- `phone1_desc` (`string`, optional): Description for the primary business number. Example: Head Office call line
- `phone2` (`string`, optional): Secondary business number. Example: 123-123-1234
- `phone2_desc` (`string`, optional): Description for the secondary business number. Example: Billing department number
- `phone3` (`string`, optional): Extra business number. Example: 123-123-1234
- `phone3_desc` (`string`, optional): Description for an extra business number. Example: Backup line for billing
- `phone4` (`string`, optional): Extra business number. Example: 123-123-1234
- `phone4_desc` (`string`, optional): Description for an extra business number. Example: Backup line for billing
- `postal_code` (`string`, optional): Business address postal code. Example: 94105
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this company's been shared (also known as Collaborators). Example: [1, 2, 3]
- `state` (`string`, optional): Business address state. Example: CA
- `tag_ids` (`array`, optional): IDs of the tags to set on this company. Example: [3, 4, 5]
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `twitter` (`string`, optional): Company's twitter username. Example: abc-company
- `web` (`string`, optional): The company's website. Example: https://acme.example

Example input: `{"name":"<name>"}`

### `pipelinecrm_company_parent_add`

Add Parent Company · Write

Link a company as a parent of another company.
Returns the updated child company.
Use it to build a company hierarchy. Requires the company hierarchy feature; a cycle or self-link is rejected.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_id` (`integer`, required): ID of the child company. Example: 3311
- `parent_company_id` (`integer`, required): ID of the company to link as the parent. Example: 3310

Example input: `{"company_id":3311,"parent_company_id":3310}`

### `pipelinecrm_company_update`

Update Company · Write

Update fields on an existing company; only the fields you pass change.
Returns the updated company record.
Use it to edit company details or reassign the owner. Use pipelinecrm_company_create for a new company.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the company to update. Example: 3310
- `address_1` (`string`, optional): First line of business address. Example: 500 Market St
- `address_2` (`string`, optional): Second line of business address. Example: 123 Fake St.
- `city` (`string`, optional): Business address city. Example: San Francisco
- `country` (`string`, optional): Business address country. Example: USA
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_company_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deliver_reassignment_email` (`boolean`, optional): If `true`, and you are changing a company's `owner_id`, the system will send an assignment email to the new user. Example turning it off: `https://api.pipelinecrm.com/api/v3/companies/123.json?api_key=XXXXXXXXXXXXXXXXXXXXXXXXX&app_key=XXXXXXXXXXXXXXXXXXXXXXXXX&deliver_reassignment_email=false`
- `description` (`string`, optional): Free-text description of the company. Example: Regional distributor of industrial parts.
- `email` (`string`, optional): The email of the company. Example: hello@acme.example
- `facebook_url` (`string`, optional): URL to company's facebook profile. Example: https://www.facebook.com/abc.company
- `fax` (`string`, optional): The company's fax number. Example: +1 415 555 0199
- `instant_message` (`string`, optional): Company's IM username. Example: abc-company
- `linked_in_url` (`string`, optional): URL to company's LinkedIn profile. Example: https://www.linkedin.com/in/abc-company
- `name` (`string`, optional): The name of the company. Example: Acme Corporation
- `owner_id` (`integer`, optional): The ID of the owner of the company. Example: 13
- `phone1` (`string`, optional): Primary business number. Example: +1 415 555 0100
- `phone1_desc` (`string`, optional): Description for the primary business number. Example: Head Office call line
- `phone2` (`string`, optional): Secondary business number. Example: 123-123-1234
- `phone2_desc` (`string`, optional): Description for the secondary business number. Example: Billing department number
- `phone3` (`string`, optional): Extra business number. Example: 123-123-1234
- `phone3_desc` (`string`, optional): Description for an extra business number. Example: Backup line for billing
- `phone4` (`string`, optional): Extra business number. Example: 123-123-1234
- `phone4_desc` (`string`, optional): Description for an extra business number. Example: Backup line for billing
- `postal_code` (`string`, optional): Business address postal code. Example: 94105
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this company's been shared (also known as Collaborators). Example: [1, 2, 3]
- `state` (`string`, optional): Business address state. Example: CA
- `tag_ids` (`array`, optional): IDs of the tags to set on this company. Example: [3, 4, 5]
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `twitter` (`string`, optional): Company's twitter username. Example: abc-company
- `web` (`string`, optional): The company's website. Example: https://acme.example

Example input: `{"company_id":3310}`

### `pipelinecrm_customer_create`

Create Customer · Write

Convert a company into a customer record, with an optional health score.
Returns the new customer record with its id.
Use it when a company becomes a paying customer. Use pipelinecrm_customer_update to change the health score later.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `company_id` (`integer`, required): ID of the company to convert to a customer. Example: 1
- `health_score` (`string`, optional): The health of the relationship with this customer. Example: middle. One of: `low`, `middle`, `high`.
- `health_score_description` (`string`, optional): Explanation or notes for the health score. Example: Very positive engagement recently - relationship is improving!

Example input: `{"company_id":1}`

### `pipelinecrm_customer_update`

Update Customer · Write

Update a customer's health score or its description.
Returns the updated customer record.
Use it to record how the customer relationship is going.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`integer`, required): ID of the customer. Example: 410
- `health_score` (`string`, optional): The health of the relationship with this customer. Example: middle. One of: `low`, `middle`, `high`.
- `health_score_description` (`string`, optional): Explanation or notes for the health score. Example: Very positive engagement recently - relationship is improving!

Example input: `{"customer_id":410}`

### `pipelinecrm_deal_create`

Create Deal · Write

Create a deal in Pipeline CRM.
Returns the new deal record with its id.
Use it to add a sale you are working on. Use pipelinecrm_deal_update to change an existing deal.
Look up stage, status and source IDs first with pipelinecrm_deal_stages_list, pipelinecrm_deal_statuses_list and pipelinecrm_lead_sources_list.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the deal. Example: Acme Corporation - Q4 renewal
- `address_1` (`string`, optional): The first line of the deal's address. Example: 123 Main St.
- `address_2` (`string`, optional): The second line of the deal's address. Example: Suite 100
- `city` (`string`, optional): The city of the deal's address. Example: San Francisco
- `closed_time` (`string`, optional): The date the deal actually closed (either won or lost). YYYY-MM-DD format. Example: 2026-10-15
- `company_id` (`integer`, optional): The ID of the company associated to this deal. Example: 3310
- `company_name` (`string`, optional): Creates a new Company associated to this deal if provided. Example: Acme Corporation
- `country` (`string`, optional): The country of the deal's address. Example: USA
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_deal_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_loss_reason_id` (`integer`, optional): The ID of the Deal Loss Reason for this deal. Example: 123
- `deal_loss_reason_notes` (`string`, optional): Explanatory or descriptive text about why the deal was lost. Example: Too expensive
- `deal_source` (`integer`, optional): ID of this deal's lead source (from pipelinecrm_lead_sources_list). Example: 5
- `deal_stage_id` (`integer`, optional): ID of the deal stage this deal is in (from pipelinecrm_deal_stages_list). Example: 3
- `deal_won_reason_id` (`integer`, optional): The ID of the Deal Won Reason for this deal. Example: 4
- `deal_won_reason_notes` (`string`, optional): Explanatory or descriptive text about why the deal was won. Example: Great value for the price
- `deliver_assignment_email` (`boolean`, optional): If `true`, and you are assigning the deal to a different user, the system will send an assignment email to the new user. Setting it to `false` will disable sending an assignment email. Example: true
- `expected_close_date` (`string`, optional): The date the deal is expected to close by (YYYY-MM-DD format). Example: 2026-10-15
- `is_archived` (`boolean`, optional): Flag for archived status. Example: false
- `person_ids` (`array`, optional): IDs of Person records associated to this deal. Example: [1, 2, 3]
- `postal_code` (`string`, optional): The postal code of the deal's address. Example: 94105
- `primary_contact_id` (`integer`, optional): The ID of the primary contact Person record associated with this deal. Example: 8802
- `probability` (`integer`, optional): The probability, from 0-100, that the deal will close. Note that if you set the probability to 0 or 100, the deal will close. Similarly, if the deal is closed, and you set the probability to 1-99, the deal will re-open and closed_time will be set to nil. Example: 60
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this deal's been shared (also known as Collaborators). Example: [1, 2, 3]
- `state` (`string`, optional): The state of the deal's address. Example: CA
- `status` (`integer`, optional): ID of the deal status for this deal (from pipelinecrm_deal_statuses_list). Example: 1
- `summary` (`string`, optional): Explanatory or descriptive text about the deal. Example: Renewal of the 120-seat plan; legal review in progress.
- `tag_ids` (`array`, optional): IDs of the tags to set on this deal. Example: [3, 4, 5]
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `user_id` (`integer`, optional): The ID of the user who owns this deal. Example: 13
- `value` (`number`, optional): The deal's value in its currency, as a number. Example: 12000

Example input: `{"name":"<name>"}`

### `pipelinecrm_deal_update`

Update Deal · Write

Update fields on an existing deal; only the fields you pass change.
Returns the updated deal record.
Use it to move a deal to another stage, change its value or owner, or close it. Use pipelinecrm_deal_create for a new deal.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deal_id` (`integer`, required): ID of the deal to update. Example: 4521
- `address_1` (`string`, optional): The first line of the deal's address. Example: 123 Main St.
- `address_2` (`string`, optional): The second line of the deal's address. Example: Suite 100
- `city` (`string`, optional): The city of the deal's address. Example: San Francisco
- `closed_time` (`string`, optional): The date the deal actually closed (either won or lost). YYYY-MM-DD format. Example: 2026-10-15
- `company_id` (`integer`, optional): The ID of the company associated to this deal. Example: 3310
- `company_name` (`string`, optional): Creates a new Company associated to this deal if provided. Example: Acme Corporation
- `country` (`string`, optional): The country of the deal's address. Example: USA
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_deal_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_loss_reason_id` (`integer`, optional): The ID of the Deal Loss Reason for this deal. Example: 123
- `deal_loss_reason_notes` (`string`, optional): Explanatory or descriptive text about why the deal was lost. Example: Too expensive
- `deal_source` (`integer`, optional): ID of this deal's lead source (from pipelinecrm_lead_sources_list). Example: 5
- `deal_stage_id` (`integer`, optional): ID of the deal stage this deal is in (from pipelinecrm_deal_stages_list). Example: 3
- `deal_won_reason_id` (`integer`, optional): The ID of the Deal Won Reason for this deal. Example: 4
- `deal_won_reason_notes` (`string`, optional): Explanatory or descriptive text about why the deal was won. Example: Great value for the price
- `deliver_reassignment_email` (`boolean`, optional): If `true`, and you are assigning the deal to a different user, the system will send an assignment email to the new user. Setting it to `false` will disable sending an assignment email. Example: true
- `expected_close_date` (`string`, optional): The date the deal is expected to close by (YYYY-MM-DD format). Example: 2026-10-15
- `is_archived` (`boolean`, optional): Flag for archived status. Example: false
- `name` (`string`, optional): The name of the deal. Example: Acme Corporation - Q4 renewal
- `person_ids` (`array`, optional): IDs of Person records associated to this deal. Example: [1, 2, 3]
- `postal_code` (`string`, optional): The postal code of the deal's address. Example: 94105
- `primary_contact_id` (`integer`, optional): The ID of the primary contact Person record associated with this deal. Example: 8802
- `probability` (`integer`, optional): The probability, from 0-100, that the deal will close. Note that if you set the probability to 0 or 100, the deal will close. Similarly, if the deal is closed, and you set the probability to 1-99, the deal will re-open and closed_time will be set to nil. Example: 60
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this deal's been shared (also known as Collaborators). Example: [1, 2, 3]
- `state` (`string`, optional): The state of the deal's address. Example: CA
- `status` (`integer`, optional): ID of the deal status for this deal (from pipelinecrm_deal_statuses_list). Example: 1
- `summary` (`string`, optional): Explanatory or descriptive text about the deal. Example: Renewal of the 120-seat plan; legal review in progress.
- `tag_ids` (`array`, optional): IDs of the tags to set on this deal. Example: [3, 4, 5]
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `user_id` (`integer`, optional): The ID of the user who owns this deal. Example: 13
- `value` (`number`, optional): The deal's value in its currency, as a number. Example: 12000

Example input: `{"deal_id":4521}`

### `pipelinecrm_document_create`

Create File from URL · Write

Add a file to Pipeline CRM from a publicly reachable URL; Pipeline downloads it in the background.
Returns the new file record; its upload_status shows when the download finishes.
Use it to attach a file to a deal, person, company or task. Poll pipelinecrm_document_get to confirm the upload completed.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `url` (`string`, required): The url the document is available at. Example: https://app.pipelinecrm.com/documents/7710
- `calendar_entry_id` (`integer`, optional): The id of the calendar entry (task or event). Example: 123
- `company_id` (`integer`, optional): The id of the company. Example: 123
- `deal_id` (`integer`, optional): The id of the deal. Example: 123
- `owner_id` (`integer`, optional): The id of the document owner. Example: 123
- `person_id` (`integer`, optional): The id of the person. Example: 123
- `primary_association_id` (`integer`, optional): The id of the primary association (Deal, Person, Company, or CalendarEntry). Alternative way to associate documents with entities. Example: 123
- `primary_association_type` (`string`, optional): The type of the primary association. When associating with a calendar entry, use CalendarTask or CalendarEvent. Example: CalendarTask. One of: `Deal`, `Person`, `Company`, `CalendarTask`, `CalendarEvent`.
- `title` (`string`, optional): The filename the document. Example: Acme-renewal-quote-v2.pdf

Example input: `{"url":"<url>"}`

### `pipelinecrm_document_update`

Update File · Write

Update a file's title, linked records or source URL; only the fields you pass change.
Returns the updated file record.
Use it to rename or relink a file, or to retry a failed upload with a new url.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `document_id` (`integer`, required): ID of the file (document) to update. Example: 6612
- `calendar_entry_id` (`integer`, optional): The id of the calendar entry (task or event). Example: 123
- `company_id` (`integer`, optional): The id of the company. Example: 123
- `deal_id` (`integer`, optional): The id of the deal. Example: 123
- `owner_id` (`integer`, optional): The id of the document owner. Example: 123
- `person_id` (`integer`, optional): The id of the person. Example: 123
- `primary_association_id` (`integer`, optional): The id of the primary association (Deal, Person, Company, or CalendarEntry). Alternative way to associate documents with entities. Example: 123
- `primary_association_type` (`string`, optional): The type of the primary association. When associating with a calendar entry, use CalendarTask or CalendarEvent. Example: CalendarTask. One of: `Deal`, `Person`, `Company`, `CalendarTask`, `CalendarEvent`.
- `title` (`string`, optional): The filename the document. Example: Acme-renewal-quote-v2.pdf
- `url` (`string`, optional): The url the document is available at. Example: https://app.pipelinecrm.com/documents/7710

Example input: `{"document_id":6612}`

### `pipelinecrm_note_comment_create`

Create Note Comment · Write

Add a comment to an existing activity (note).
Returns the new comment with its id.
Use it to reply on a note. Use pipelinecrm_note_create to log a new activity instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `comment` (`string`, required): The text of the comment. Example: Sent the revised quote.
- `note_id` (`integer`, required): ID of the note (activity) to comment on. Example: 70011
- `user_id` (`integer`, optional): User ID of the comment's owner. Defaults to the authenticated user. Example: 13

Example input: `{"comment":"<comment>","note_id":70011}`

### `pipelinecrm_note_comment_update`

Update Note Comment · Write

Edit a comment on an activity (note).
Returns the updated comment.
Use it to correct a comment's text. Only the comment's author or an account admin can update it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `comment_id` (`integer`, required): ID of the comment to update. Example: 5120
- `note_id` (`integer`, required): ID of the note (activity). Example: 70011
- `comment` (`string`, optional): The text of the comment. Example: Sent the revised quote.
- `edited_by_person_id` (`integer`, optional): User ID of the person editing the comment. Set it when updating a comment. Example: 1
- `user_id` (`integer`, optional): User ID of the comment's owner. Defaults to the authenticated user. Example: 13

Example input: `{"comment_id":5120,"note_id":70011}`

### `pipelinecrm_note_create`

Create Note · Write

Log an activity (note) on a deal, person or company.
Returns the new note with its id.
Use it to record a call summary, meeting note or update. Set deal_id, person_id or company_id to attach it. Use pipelinecrm_note_comment_create to reply to an existing note.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `content` (`string`, required): The note content. Example: This is the content
- `company_id` (`integer`, optional): The company id of the note. Example: 3310
- `deal_id` (`integer`, optional): The deal id of the note. Example: 4521
- `milestone_id` (`integer`, optional): ID of the project milestone this note belongs to, if any. Example: 88
- `note_category_id` (`integer`, optional): The category of the note. Example: 2
- `notify_user_ids` (`array`, optional): IDs of users who get an email when new comments are added to this note. Example: [1, 2, 3, 4, 5]
- `person_id` (`integer`, optional): The person id of the note. Example: 8802
- `title` (`string`, optional): The note title, if any. Example: Call with Jane about the renewal
- `user_id` (`integer`, optional): The owner of the note. Example: 13

Example input: `{"content":"<content>"}`

### `pipelinecrm_note_update`

Update Note · Write

Update an existing activity (note); only the fields you pass change.
Returns the updated note.
Use it to correct a note's title, content, category or attachment. Use pipelinecrm_note_create for a new note.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `note_id` (`integer`, required): ID of the note (activity) to update. Example: 70011
- `company_id` (`integer`, optional): The company id of the note. Example: 3310
- `content` (`string`, optional): The note content. Example: This is the content
- `deal_id` (`integer`, optional): The deal id of the note. Example: 4521
- `milestone_id` (`integer`, optional): ID of the project milestone this note belongs to, if any. Example: 88
- `note_category_id` (`integer`, optional): The category of the note. Example: 2
- `notify_user_ids` (`array`, optional): IDs of users who get an email when new comments are added to this note. Example: [1, 2, 3, 4, 5]
- `person_id` (`integer`, optional): The person id of the note. Example: 8802
- `title` (`string`, optional): The note title, if any. Example: Call with Jane about the renewal
- `user_id` (`integer`, optional): The owner of the note. Example: 13

Example input: `{"note_id":70011}`

### `pipelinecrm_person_create`

Create Person · Write

Create a person (lead or contact) in Pipeline CRM.
Returns the new person record with its id.
Use it to add a lead or contact; give at least a name or an email. Use pipelinecrm_person_update to change an existing person.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bounced` (`boolean`, optional): Whether or not the person has had emails sent to them bounce. Example: false
- `company_id` (`integer`, optional): The ID of the company associated to this person. Example: 3310
- `company_name` (`string`, optional): Associates the company with this name to this person, creating it if none matches. Example: Acme Corporation
- `created_by_user_id` (`integer`, optional): The user recorded as the creator. Defaults to the authenticated user. Example: 13
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_person_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_ids` (`array`, optional): The deals the person is associated with. Set to the full list; deals left out are disassociated. Example: [4521]
- `deliver_assignment_email` (`string`, optional): Create. Sits beside `person`, not inside it (also accepted as a query parameter). Pass `"false"` to skip the email normally sent when the record is assigned to another user. Example: false. One of: `true`, `false`.
- `do_not_validate_email` (`string`, optional): Sits beside `person`, not inside it. Pass `"true"` to save a person whose `email` would otherwise be rejected as malformed. Example: false. One of: `true`, `false`.
- `email` (`string`, optional): Person's primary email address. Example: jane.rivera@acme.example
- `email2` (`string`, optional): Person's secondary email address. Example: james.smith@acme-inc.com
- `facebook_url` (`string`, optional): URL to person's facebook profile. Example: https://www.facebook.com/james.smith
- `fax` (`string`, optional): The person's fax number. Example: +1 215-555-0199
- `first_name` (`string`, optional): The person's first name. Example: Jane
- `full_name` (`string`, optional): The person's full name. Will split on whitespace to set `first_name` and `last_name` fields. Example: Jane Rivera
- `home_address_1` (`string`, optional): First line of Home address. Example: Suite 101.
- `home_address_2` (`string`, optional): Second line of Home address. Example: 123 Fake St.
- `home_city` (`string`, optional): Home address city. Example: Denver
- `home_country` (`string`, optional): Home address country. Example: United States
- `home_email` (`string`, optional): Person's non-professional email address. Example: james.smith@gmail.com
- `home_phone` (`string`, optional): Person's home phone number. Example: 123-123-1234
- `home_postal_code` (`string`, optional): Home address postal code. Example: 11001
- `home_state` (`string`, optional): Home address state. Example: Colorado
- `instant_message` (`string`, optional): Person's IM username. Example: james_smith_20
- `is_key_contact` (`boolean`, optional): Whether or not this person is a key contact for the company. Example: true
- `last_name` (`string`, optional): The person's last name. Example: Rivera
- `lead_source_id` (`integer`, optional): The ID of the lead source to set for this person. Example: 5
- `lead_status_id` (`integer`, optional): The ID of the lead status to set for this person. Example: 2
- `linked_in_url` (`string`, optional): URL to person's LinkedIn profile. Example: https://www.linkedin.com/in/james-smith-101
- `mobile` (`string`, optional): Person's mobile phone number. Example: +1 415 555 0177
- `phone` (`string`, optional): Person's primary phone number. Example: +1 415 555 0142
- `position` (`string`, optional): Person's professional position. Example: Head of Operations
- `predefined_contacts_tag_ids` (`array`, optional): IDs of the tags to set on this person. Example: [3, 4, 5]
- `relationship` (`string`, optional): The relationship of the person to the company (e.g. "Father", "CEO", "Owner", etc.)
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this person's been shared (also known as Collaborators). Example: [1, 2, 3]
- `summary` (`string`, optional): Summary or notes on the person. Example: Owns the renewal decision; prefers email.
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `twitter` (`string`, optional): Person's twitter username. Example: james.smith
- `type` (`string`, optional): Whether the record is a Contact or a Lead. Setting it on update converts the record. Example: Contact. One of: `Contact`, `Lead`.
- `unsubscribed` (`boolean`, optional): Whether or not the person has unsubscribed to newsletters. Example: false
- `user_id` (`integer`, optional): The ID of the user who owns this person record. Example: 13
- `website` (`string`, optional): Person's website URL. Example: http://www.james-smith.com
- `work_address_1` (`string`, optional): First line of work address. Example: Suite 101
- `work_address_2` (`string`, optional): Second line of work address. Example: 123 Fake St.
- `work_city` (`string`, optional): Work address city. Example: Denver
- `work_country` (`string`, optional): Work address country. Example: United States
- `work_postal_code` (`string`, optional): Work address postal code. Example: 11001
- `work_state` (`string`, optional): Work address state. Example: Colorado

Example input: `{}`

### `pipelinecrm_person_update`

Update Person · Write

Update fields on an existing person; only the fields you pass change.
Returns the updated person record.
Use it to edit contact details, reassign the owner, change lead status or convert a lead to a contact (type). Use pipelinecrm_person_create for a new person.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`integer`, required): ID of the person to update. Example: 8802
- `bounced` (`boolean`, optional): Whether or not the person has had emails sent to them bounce. Example: false
- `company_id` (`integer`, optional): The ID of the company associated to this person. Example: 3310
- `company_name` (`string`, optional): Associates the company with this name to this person, creating it if none matches. Example: Acme Corporation
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_person_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_ids` (`array`, optional): The deals the person is associated with. Set to the full list; deals left out are disassociated. Example: [4521]
- `deliver_reassignment_email` (`string`, optional): Update. Sits beside `person`, not inside it. Pass `"false"` to skip the email normally sent when `user_id` changes to another user. Example: false. One of: `true`, `false`.
- `do_not_validate_email` (`string`, optional): Sits beside `person`, not inside it. Pass `"true"` to save a person whose `email` would otherwise be rejected as malformed. Example: false. One of: `true`, `false`.
- `email` (`string`, optional): Person's primary email address. Example: jane.rivera@acme.example
- `email2` (`string`, optional): Person's secondary email address. Example: james.smith@acme-inc.com
- `facebook_url` (`string`, optional): URL to person's facebook profile. Example: https://www.facebook.com/james.smith
- `fax` (`string`, optional): The person's fax number. Example: +1 215-555-0199
- `first_name` (`string`, optional): The person's first name. Example: Jane
- `full_name` (`string`, optional): The person's full name. Will split on whitespace to set `first_name` and `last_name` fields. Example: Jane Rivera
- `home_address_1` (`string`, optional): First line of Home address. Example: Suite 101.
- `home_address_2` (`string`, optional): Second line of Home address. Example: 123 Fake St.
- `home_city` (`string`, optional): Home address city. Example: Denver
- `home_country` (`string`, optional): Home address country. Example: United States
- `home_email` (`string`, optional): Person's non-professional email address. Example: james.smith@gmail.com
- `home_phone` (`string`, optional): Person's home phone number. Example: 123-123-1234
- `home_postal_code` (`string`, optional): Home address postal code. Example: 11001
- `home_state` (`string`, optional): Home address state. Example: Colorado
- `instant_message` (`string`, optional): Person's IM username. Example: james_smith_20
- `is_key_contact` (`boolean`, optional): Whether or not this person is a key contact for the company. Example: true
- `last_name` (`string`, optional): The person's last name. Example: Rivera
- `lead_source_id` (`integer`, optional): The ID of the lead source to set for this person. Example: 5
- `lead_status_id` (`integer`, optional): The ID of the lead status to set for this person. Example: 2
- `linked_in_url` (`string`, optional): URL to person's LinkedIn profile. Example: https://www.linkedin.com/in/james-smith-101
- `mobile` (`string`, optional): Person's mobile phone number. Example: +1 415 555 0177
- `phone` (`string`, optional): Person's primary phone number. Example: +1 415 555 0142
- `position` (`string`, optional): Person's professional position. Example: Head of Operations
- `predefined_contacts_tag_ids` (`array`, optional): IDs of the tags to set on this person. Example: [3, 4, 5]
- `relationship` (`string`, optional): The relationship of the person to the company (e.g. "Father", "CEO", "Owner", etc.)
- `shared_user_ids` (`array`, optional): The array of User IDs with whom this person's been shared (also known as Collaborators). Example: [1, 2, 3]
- `summary` (`string`, optional): Summary or notes on the person. Example: Owns the renewal decision; prefers email.
- `todo_template_id` (`integer`, optional): ID of a todo template to apply, creating its tasks on this record (from pipelinecrm_todo_templates_list). Example: 1
- `todo_template_user_id` (`integer`, optional): User ID to own the tasks created from the todo template. Example: 13473
- `twitter` (`string`, optional): Person's twitter username. Example: james.smith
- `type` (`string`, optional): Whether the record is a Contact or a Lead. Setting it on update converts the record. Example: Contact. One of: `Contact`, `Lead`.
- `unsubscribed` (`boolean`, optional): Whether or not the person has unsubscribed to newsletters. Example: false
- `user_id` (`integer`, optional): The ID of the user who owns this person record. Example: 13
- `website` (`string`, optional): Person's website URL. Example: http://www.james-smith.com
- `work_address_1` (`string`, optional): First line of work address. Example: Suite 101
- `work_address_2` (`string`, optional): Second line of work address. Example: 123 Fake St.
- `work_city` (`string`, optional): Work address city. Example: Denver
- `work_country` (`string`, optional): Work address country. Example: United States
- `work_postal_code` (`string`, optional): Work address postal code. Example: 11001
- `work_state` (`string`, optional): Work address state. Example: Colorado

Example input: `{"person_id":8802}`

### `pipelinecrm_project_archive`

Archive Project · Write

Archive a project so it drops out of default project lists.
Returns the archived project.
Use it to put away finished work without deleting it. Use pipelinecrm_project_unarchive to restore it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project to archive. Example: 88

Example input: `{"project_id":88}`

### `pipelinecrm_project_association_add`

Add Project Association · Write

Link a deal, company or person to a project. Adding an existing link returns it without error.
Returns the association record.
Use it to attach records to a project after it was created.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `associable_id` (`integer`, required): The ID of the entity to associate. Example: 123
- `associable_type` (`string`, required): The type of entity to associate. Example: Deal. One of: `Deal`, `Company`, `Person`.
- `project_id` (`integer`, required): ID of the project. Example: 88

Example input: `{"associable_id":123,"associable_type":"Deal","project_id":88}`

### `pipelinecrm_project_create`

Create Project · Write

Create a project, optionally from a template or a deal, with linked records, collaborators and milestones.
Returns the new project with its id.
Use it to start delivery work after a deal closes. Use pipelinecrm_project_update to change one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the project. Must be unique within the account (among non-archived projects). Example: Acme onboarding
- `company_ids` (`array`, optional): IDs of Companies to associate with this project. Example: [10, 20]
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_project_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_ids` (`array`, optional): IDs of Deals to associate with this project. Example: [1, 2, 3]
- `description` (`string`, optional): Explanatory or descriptive text about the project. Example: Complete redesign of the company website with new branding
- `end_date` (`string`, optional): The end date of the project (YYYY-MM-DD format). Must be after start_date. Example: 2026-12-15
- `hex_color` (`string`, optional): The color associated with the project (hex code). Example: #4A90D9
- `owner_id` (`integer`, optional): The ID of the user who owns this project. Cannot be an external user. Example: 13473
- `person_ids` (`array`, optional): IDs of People to associate with this project. Example: [100, 200]
- `project_milestones_attributes` (`array`, optional): Milestones to create or change inline with the project. Each item has a name and optional project_milestone_status_id, start_date and end_date; include an existing milestone's id to update it, or id plus _destroy true to remove it. Example: []
- `project_template_id` (`integer`, optional): Create-only. The ID of the project template to seed this project from. Provided as a property of the `project` object on create. Ignored on update. Example: 6
- `source_deal_id` (`integer`, optional): Create-only. The ID of the deal to source initial project data from. Provided as a property of the `project` object on create. Ignored on update. Example: 42
- `start_date` (`string`, optional): The start date of the project (YYYY-MM-DD format). Example: 2026-09-15
- `status` (`string`, optional): The status of the project: - `open`: Active project - `closed`: Completed project. Example: open. One of: `open`, `closed`.
- `team_ids` (`array`, optional): IDs of Teams to add as collaborators on this project. Example: [1]
- `user_ids` (`array`, optional): IDs of Users to add as collaborators on this project. Example: [5, 6]

Example input: `{"name":"<name>"}`

### `pipelinecrm_project_milestone_create`

Create Project Milestone · Write

Add a milestone to a project, optionally with tasks and events.
Returns the new milestone with its id.
Use it to plan a project phase. Use pipelinecrm_project_milestone_update to change it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name of the milestone. Must be unique within the project. Example: Kickoff
- `project_id` (`integer`, required): ID of the project. Example: 88
- `end_date` (`string`, optional): The end date of the milestone (YYYY-MM-DD format). Must be after start_date. Example: 2025-02-28
- `milestone_events_attributes` (`array`, optional): Events to create or change inline with the milestone. Each item has a name, start and end date and time (start_time_date, start_time_time as HH:MM, end_time_date, end_time_time), all_day and owner_id; include an existing event's id to update it, or id plus _destroy true to remove it. Example: []
- `milestone_tasks_attributes` (`array`, optional): Tasks to create or change inline with the milestone. Each item has a name and optional due_date and owner_id; include an existing task's id to update it, or id plus _destroy true to remove it. Example: []
- `project_milestone_status_id` (`integer`, optional): The ID of the project milestone status. Defaults to the "Not Started" status if not provided. Example: 1
- `start_date` (`string`, optional): The start date of the milestone (YYYY-MM-DD format). Example: 2025-01-15

Example input: `{"name":"<name>","project_id":88}`

### `pipelinecrm_project_milestone_update`

Update Project Milestone · Write

Update a project milestone; only the fields you pass change.
Returns the updated milestone.
Use it to rename, reschedule or change the status of a milestone, or edit its tasks and events.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `milestone_id` (`integer`, required): ID of the project milestone to update. Example: 301
- `end_date` (`string`, optional): The end date of the milestone (YYYY-MM-DD format). Must be after start_date. Example: 2025-02-28
- `milestone_events_attributes` (`array`, optional): Events to create or change inline with the milestone. Each item has a name, start and end date and time (start_time_date, start_time_time as HH:MM, end_time_date, end_time_time), all_day and owner_id; include an existing event's id to update it, or id plus _destroy true to remove it. Example: []
- `milestone_tasks_attributes` (`array`, optional): Tasks to create or change inline with the milestone. Each item has a name and optional due_date and owner_id; include an existing task's id to update it, or id plus _destroy true to remove it. Example: []
- `name` (`string`, optional): The name of the milestone. Must be unique within the project. Example: Kickoff
- `project_milestone_status_id` (`integer`, optional): The ID of the project milestone status. Defaults to the "Not Started" status if not provided. Example: 1
- `start_date` (`string`, optional): The start date of the milestone (YYYY-MM-DD format). Example: 2025-01-15

Example input: `{"milestone_id":301}`

### `pipelinecrm_project_unarchive`

Unarchive Project · Write

Restore an archived project.
Returns the restored project.
Use it to bring back a project archived with pipelinecrm_project_archive.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project to unarchive. Example: 88

Example input: `{"project_id":88}`

### `pipelinecrm_project_update`

Update Project · Write

Update an existing project; only the fields you pass change.
Returns the updated project.
Use it to change a project's status, dates, owner, links or milestones. Use pipelinecrm_project_archive to archive it.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project to update. Example: 88
- `company_ids` (`array`, optional): IDs of Companies to associate with this project. Example: [10, 20]
- `custom_fields` (`object`, optional): Custom field values keyed custom_label_<id>, where <id> is the custom field label ID from pipelinecrm_project_custom_fields_list. Example: {"custom_label_4821": "Enterprise"}
- `deal_ids` (`array`, optional): IDs of Deals to associate with this project. Example: [1, 2, 3]
- `description` (`string`, optional): Explanatory or descriptive text about the project. Example: Complete redesign of the company website with new branding
- `end_date` (`string`, optional): The end date of the project (YYYY-MM-DD format). Must be after start_date. Example: 2026-12-15
- `hex_color` (`string`, optional): The color associated with the project (hex code). Example: #4A90D9
- `name` (`string`, optional): The name of the project. Must be unique within the account (among non-archived projects). Example: Acme onboarding
- `owner_id` (`integer`, optional): The ID of the user who owns this project. Cannot be an external user. Example: 13473
- `person_ids` (`array`, optional): IDs of People to associate with this project. Example: [100, 200]
- `project_milestones_attributes` (`array`, optional): Milestones to create or change inline with the project. Each item has a name and optional project_milestone_status_id, start_date and end_date; include an existing milestone's id to update it, or id plus _destroy true to remove it. Example: []
- `start_date` (`string`, optional): The start date of the project (YYYY-MM-DD format). Example: 2026-09-15
- `status` (`string`, optional): The status of the project: - `open`: Active project - `closed`: Completed project. Example: open. One of: `open`, `closed`.
- `team_ids` (`array`, optional): IDs of Teams to add as collaborators on this project. Example: [1]
- `user_ids` (`array`, optional): IDs of Users to add as collaborators on this project. Example: [5, 6]

Example input: `{"project_id":88}`

### `pipelinecrm_sub_entry_create`

Create Sub-task · Write

Add a sub-task or sub-event under an existing task or event; it inherits the parent's owner, category and links.
Returns the new sub-entry with its id.
Use it to break a task into steps. Requires the sub-tasks feature on the account.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the parent calendar entry. Example: 99231
- `name` (`string`, required): Name (title) of the task or event. Example: Follow up on proposal
- `active` (`boolean`, optional): Set false to mark the entry inactive (functionally deleted). Example: true
- `all_day` (`boolean`, optional): Whether the entry lasts all day. Example: false
- `description` (`string`, optional): Longer description of the task or event. Example: Walk through pricing options and agree next steps.
- `due_date` (`string`, optional): Due date for a task, as YYYY-MM-DD. Example: 2026-09-10
- `end_time` (`string`, optional): End time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-10-20 15:00:00
- `start_time` (`string`, optional): Start time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-10-20 14:00:00
- `subentry_status` (`string`, optional): Free-form status label shown on the sub-entry. Example: Waiting on legal
- `type` (`string`, optional): CalendarTask for a task (uses due_date) or CalendarEvent for an event (uses start_time and end_time). Example: CalendarTask. One of: `CalendarEvent`, `CalendarTask`.

Example input: `{"calendar_entry_id":99231,"name":"<name>"}`

### `pipelinecrm_sub_entry_update`

Update Sub-task · Write

Update a sub-task or sub-event; only the fields you pass change (its type cannot change).
Returns the updated sub-entry.
Use it to rename, reschedule or mark a sub-task done.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the parent calendar entry. Example: 99231
- `sub_entry_id` (`integer`, required): ID of the sub-entry to update. Example: 99240
- `active` (`boolean`, optional): Set false to mark the entry inactive (functionally deleted). Example: true
- `all_day` (`boolean`, optional): Whether the entry lasts all day. Example: false
- `description` (`string`, optional): Longer description of the task or event. Example: Walk through pricing options and agree next steps.
- `due_date` (`string`, optional): Due date for a task, as YYYY-MM-DD. Example: 2026-09-10
- `end_time` (`string`, optional): End time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-10-20 15:00:00
- `name` (`string`, optional): Name (title) of the task or event. Example: Follow up on proposal
- `start_time` (`string`, optional): Start time for an event, in the user's time zone (YYYY-MM-DD HH:MM:SS). Example: 2026-10-20 14:00:00
- `subentry_status` (`string`, optional): Free-form status label shown on the sub-entry. Example: Waiting on legal

Example input: `{"calendar_entry_id":99231,"sub_entry_id":99240}`

### `pipelinecrm_calendar_entry_delete`

Delete Task or Event · Destructive

Delete a task or event by ID.
Returns an empty success response.
Use it to remove an entry. To close a task instead, set complete with pipelinecrm_calendar_entry_update.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the calendar entry to delete. Example: 99231

Example input: `{"calendar_entry_id":99231}`

### `pipelinecrm_company_child_remove`

Remove Child Company · Destructive

Unlink a child company from its parent; neither company is deleted.
Returns the updated parent company.
Use it to change a company hierarchy.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `child_company_id` (`integer`, required): ID of the linked child company. Example: 3311
- `company_id` (`integer`, required): ID of the parent company. Example: 3310

Example input: `{"child_company_id":3311,"company_id":3310}`

### `pipelinecrm_company_delete`

Delete Company · Destructive

Permanently delete a company by ID.
Returns an empty success response.
Use it only to remove a company for good.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the company to delete. Example: 3310

Example input: `{"company_id":3310}`

### `pipelinecrm_company_parent_remove`

Remove Parent Company · Destructive

Unlink a parent company from a company; neither company is deleted.
Returns the updated child company.
Use it to change a company hierarchy.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `company_id` (`integer`, required): ID of the child company. Example: 3311
- `parent_company_id` (`integer`, required): ID of the linked parent company. Example: 3310

Example input: `{"company_id":3311,"parent_company_id":3310}`

### `pipelinecrm_customer_delete`

Delete Customer · Destructive

Delete a customer record by its customer ID.
Returns an empty success response.
Use it to stop treating a company as a customer.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`integer`, required): ID of the customer to delete. Example: 410

Example input: `{"customer_id":410}`

### `pipelinecrm_deal_delete`

Delete Deal · Destructive

Permanently delete a deal by its ID.
Returns an empty success response.
Use it only to remove a deal for good. To keep history, archive it with pipelinecrm_deal_update (is_archived) instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `deal_id` (`integer`, required): ID of the deal to delete. Example: 4521

Example input: `{"deal_id":4521}`

### `pipelinecrm_document_delete`

Delete File · Destructive

Permanently delete a file (document) by ID.
Returns an empty success response.
Use it only to remove a file for good.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `document_id` (`integer`, required): ID of the file (document) to delete. Example: 6612

Example input: `{"document_id":6612}`

### `pipelinecrm_note_comment_delete`

Delete Note Comment · Destructive

Delete a comment from an activity (note).
Returns an empty success response.
Use it to remove a comment for good.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `comment_id` (`integer`, required): ID of the comment to delete. Example: 5120
- `note_id` (`integer`, required): ID of the note (activity). Example: 70011

Example input: `{"comment_id":5120,"note_id":70011}`

### `pipelinecrm_note_delete`

Delete Note · Destructive

Permanently delete an activity (note) by ID.
Returns an empty success response.
Use it only to remove a note for good.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `note_id` (`integer`, required): ID of the note (activity) to delete. Example: 70011

Example input: `{"note_id":70011}`

### `pipelinecrm_person_delete`

Delete Person · Destructive

Permanently delete a person (lead or contact) by ID.
Returns an empty success response.
Use it only to remove a person for good.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `person_id` (`integer`, required): ID of the person to delete. Example: 8802

Example input: `{"person_id":8802}`

### `pipelinecrm_project_association_remove`

Remove Project Association · Destructive

Remove one deal, company or person link from a project; the record itself is not deleted.
Returns an empty success response.
Use it with an association id from pipelinecrm_project_associations_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `association_id` (`integer`, required): ID of the project association. Example: 1203
- `project_id` (`integer`, required): ID of the project. Example: 88

Example input: `{"association_id":1203,"project_id":88}`

### `pipelinecrm_project_delete`

Delete Project · Destructive

Permanently delete a project by ID.
Returns an empty success response.
Use it only to remove a project for good; use pipelinecrm_project_archive to hide it instead.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `project_id` (`integer`, required): ID of the project to delete. Example: 88

Example input: `{"project_id":88}`

### `pipelinecrm_project_milestone_delete`

Delete Project Milestone · Destructive

Delete a project milestone by ID.
Returns an empty success response.
Use it to remove a milestone from a project.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `milestone_id` (`integer`, required): ID of the project milestone to delete. Example: 301

Example input: `{"milestone_id":301}`

### `pipelinecrm_sub_entry_delete`

Delete Sub-task · Destructive

Delete a sub-task or sub-event.
Returns an empty success response.
Use it to remove a step from a task.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `calendar_entry_id` (`integer`, required): ID of the parent calendar entry. Example: 99231
- `sub_entry_id` (`integer`, required): ID of the sub-entry to delete. Example: 99240

Example input: `{"calendar_entry_id":99231,"sub_entry_id":99240}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
