> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipeline CRM

> Connect Pipeline CRM to your Atako agents — 14 read and 8 write actions.

Let your agents work in your Pipeline CRM: read and update deals, people and companies, follow pipeline stages, add notes and create tasks or events.

## Connection

* **Authentication**: API key (Pipeline CRM API token).

> [!NOTE]
>
> In Pipeline CRM, an account administrator first turns API access on: Account Settings → API → API Keys → Enable API Access (asks for a technical contact e-mail). Then, in My Profile → API tokens (app.pipelinecrm.com/user/api\_tokens) → Add API Token: name it, choose "Read only" or "Read and write" (agents that create or update records need read-write) and an expiry, then copy the token (starts with pcrm\_live\_, shown only once). The token acts as your user and sees what you see.
>
> See [Pipeline CRM's documentation](https://app.pipelinecrm.com/docs).

## Read actions (14)

| Action | Description |
| - | - |
| `get_company` | Get a company by id (integer, from list\_companies). |
| `get_deal` | Get a deal by id (integer, from list\_deals), with stage, owner, company, people and custom fields. |
| `get_person` | Get a person by id (integer, from list\_people). |
| `get_profile` | Get the user the token belongs to (id, name, is\_account\_admin). The api\_key field is removed. |
| `list_calendar_entries` | List tasks and events. Useful conditions keys: when (\{from\_date: "2026-09-01", to\_date: "2026-09-30"}), owner (array of user ids), incomplete (true). Optional page, per\_page (1-200), sort (record attribute such as "-value" or "name", "-" prefix = descending) and conditions (object of filters). The answer is \{ entries: \[...], pagination: \{ page, per\_page, total } }. |
| `list_companies` | List or search companies. Useful conditions keys: company\_name (starts with), company\_name\_eq (exact), company\_web, company\_city, company\_owner (user id), company\_is\_customer ("Yes"/"No"), company\_tags (ids), company\_created (\{selection: "last\_30"}). Sort by a company attribute: name or created\_at, e.g. "name" (company\_name is NOT a sort key: it answers 500). Optional page, per\_page (1-200), sort (record attribute such as "-value" or "name", "-" prefix = descending) and conditions (object of filters). The answer is \{ entries: \[...], pagination: \{ page, per\_page, total } }. |
| `list_deal_pipelines` | List the deal pipelines (id, name, default, won and lost stages). Optional page, per\_page (1-200). |
| `list_deal_stages` | List the deal stages (id, name, percent, deal\_pipeline\_id): ids to use as deal\_stage\_id or in the deal\_stage filter. Optional page, per\_page (1-200). |
| `list_deal_statuses` | List the deal statuses (id, name): ids to use as status on a deal. Optional page, per\_page (1-200). |
| `list_deals` | List or search deals. Useful conditions keys: deal\_name, deal\_stage (ids), deal\_status (id), deal\_owner (user id), deal\_pipeline (id), deal\_company\_name, deal\_primary\_contact\_id, deal\_value (\{from, to}), deal\_created (\{selection: "last\_30"}), deal\_is\_archived ("Yes"/"No"). Sort by a deal attribute: name, value or created\_at, e.g. "-value" (the deal\_\* condition keys are NOT sort keys: they answer 500). Optional page, per\_page (1-200), sort (record attribute such as "-value" or "name", "-" prefix = descending) and conditions (object of filters). The answer is \{ entries: \[...], pagination: \{ page, per\_page, total } }. |
| `list_event_categories` | List the task and event categories (id, name): ids to use as category\_id in create\_calendar\_entry. Optional page, per\_page (1-200). |
| `list_notes` | List the notes of a record. At least one of deal\_id, company\_id, person\_id (integers) is required. Optional page, per\_page (1-200). |
| `list_people` | List or search people (contacts and leads). Useful conditions keys: person\_name, person\_email, person\_full\_name, person\_company\_name, person\_company\_id, person\_owner (user id), person\_type ("Lead"/"Contact"), person\_status (lead status id), person\_tags (ids), person\_created (\{selection: "last\_30"}). Sort by a person attribute: last\_name, first\_name or created\_at, e.g. "-created\_at" (person\_name is NOT a sort key: it answers 500). Optional page, per\_page (1-200), sort (record attribute such as "-value" or "name", "-" prefix = descending) and conditions (object of filters). The answer is \{ entries: \[...], pagination: \{ page, per\_page, total } }. |
| `list_users` | List the users you can see (ids to use as user\_id / owner\_id). Optional page, per\_page (1-200). |

## Write actions (8)

| Action | Description |
| - | - |
| `create_calendar_entry` | Create a task or an event; returns the record with its id. Arguments: type (CalendarTask or CalendarEvent, required); category\_id (integer from list\_event\_categories, required); name (string, required); description (string); due\_date (string, tasks); start\_time, end\_time (strings "YYYY-MM-DD HH:MM:SS", events); all\_day (boolean); association\_type (Deal, Company or Person) with association\_id (integer) to attach it to a record; send\_assignment\_email (boolean). |
| `create_company` | Create a company; returns the record with its id. Arguments: name (string, required); description, email, web, phone1, phone2, address\_1, address\_2, city, state, postal\_code, country, linked\_in\_url (strings); owner\_id (integer from list\_users); tag\_ids (array of integers); custom\_fields (object \{ "custom\_label\_\<id>": value }); send\_assignment\_email (boolean, false = no e-mail to the owner). |
| `create_deal` | Create a deal; returns the record with its id. Arguments: name (string, required); summary (string); value (number or numeric string); expected\_close\_date (string YYYY-MM-DD); user\_id (owner, integer from list\_users); deal\_stage\_id (integer from list\_deal\_stages); status (integer from list\_deal\_statuses); probability (integer 0-100); company\_id (integer from list\_companies) or company\_name (string, creates the company); primary\_contact\_id (integer from list\_people); person\_ids (array of integers); deal\_source (integer); tag\_ids (array of integers); address\_1, address\_2, city, state, postal\_code, country (strings); custom\_fields (object \{ "custom\_label\_\<id>": value }); send\_assignment\_email (boolean, false = no e-mail to the owner). |
| `create_note` | Add a note to a deal, a company or a person; returns the record with its id. Arguments: content (string, required); title (string); deal\_id, company\_id, person\_id (integers, give at least one); note\_category\_id (integer). |
| `create_person` | Create a person; returns the record with its id. Arguments, all optional: first\_name, last\_name, summary, position, email, email2, home\_email, phone, mobile, home\_phone, website, linked\_in\_url, relationship (strings); company\_id (integer from list\_companies) or company\_name (string, created if none matches); user\_id (owner, integer from list\_users); type (Contact or Lead); lead\_status\_id, lead\_source\_id (integers); is\_key\_contact (boolean); predefined\_contacts\_tag\_ids (array of integers); work\_address\_1, work\_address\_2, work\_city, work\_state, work\_country, work\_postal\_code (strings); custom\_fields (object \{ "custom\_label\_\<id>": value }); send\_assignment\_email (boolean, false = no e-mail to the owner). |
| `update_company` | Update a company: only the arguments sent change. id (integer, required, from list\_companies); then any of name, description, email, web, phone1, phone2, address\_1, address\_2, city, state, postal\_code, country, linked\_in\_url (strings); owner\_id (integer); tag\_ids (array of integers); custom\_fields (object); send\_assignment\_email (boolean). |
| `update_deal` | Update a deal: only the arguments sent change. id (integer, required, from list\_deals); then any of name (string); summary (string); value (number or numeric string); expected\_close\_date (string YYYY-MM-DD); user\_id (integer); deal\_stage\_id (integer, moves the deal to that stage); status (integer from list\_deal\_statuses); probability (integer 0-100, 0 or 100 closes the deal); company\_id, primary\_contact\_id (integers); person\_ids (array of integers); deal\_loss\_reason\_id / deal\_won\_reason\_id (integers) and deal\_loss\_reason\_notes / deal\_won\_reason\_notes (strings); tag\_ids (array of integers); is\_archived (boolean); address fields (strings); custom\_fields (object \{ "custom\_label\_\<id>": value }); send\_assignment\_email (boolean). |
| `update_person` | Update a person: only the arguments sent change. id (integer, required, from list\_people); then any of the create\_person arguments (first\_name, last\_name, summary, position, email, email2, home\_email, phone, mobile, home\_phone, website, linked\_in\_url, relationship: strings; company\_id, user\_id, lead\_status\_id, lead\_source\_id: integers; company\_name: string; type: Contact or Lead, converts the record; is\_key\_contact: boolean; predefined\_contacts\_tag\_ids: array of integers; work\_\* address fields: strings; custom\_fields: object; send\_assignment\_email: boolean). |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](https://docs.atako.ai/integrations/permissions.md) for the grant model and [Security](https://docs.atako.ai/integrations/security.md) for how credentials are protected.

***

*Last reviewed against the provider API: October 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.