> ## 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.

# Folk

> Connect Folk to your Atako agents — 8 read and 6 write actions.

Let your agents search, read, create and update people and companies in your folk CRM, file them into groups, and log notes and interactions.

## Connection

* **Authentication**: API key.

<Note>
  In folk, click "Settings" in the sidebar → "API" section → "New API key" → choose a name and create the key → copy it (it starts with FOLK). The key acts on behalf of the workspace user who created it.

  See [Folk's documentation](https://developer.folk.app/api-reference/authentication).
</Note>

## Read actions (8)

| Action | Description |
| - | - |
| `get_company` | Get one company by id (com\_…), with its contact details, groups and custom field values. |
| `get_current_user` | Get the workspace user the API key belongs to. |
| `get_person` | Get one person by id (per\_…), with emails, phones, companies, groups and custom field values. |
| `list_companies` | List or search companies. Optional filters: nameContains (name contains), groupId (in this group); combinator "and" (default) or "or" joins them. Paginate with limit (1-100) and cursor (from pagination.nextLink). |
| `list_groups` | List the workspace groups (id grp\_… and name) — the ids used by groups, groupId and customFieldValues. |
| `list_notes` | List notes. Optional filters: entityId (notes linked to this person, company or deal id), query (full-text search in the content), createdAfter / createdBefore (ISO 8601 timestamps). Paginate with limit (1-100) and cursor. |
| `list_people` | List or search people. Optional filters: nameContains (full name contains), emailContains (an email contains, e.g. "@acme.com"), groupId (in this group), companyId (works at this company); combinator "and" (default) or "or" joins them. Paginate with limit (1-100) and cursor (from pagination.nextLink). |
| `list_users` | List the workspace users (id usr\_…, fullName, email) — e.g. to find who owns what. |

## Write actions (6)

| Action | Description |
| - | - |
| `create_company` | Create a company. Arguments (all optional, exact folk names): name, description, industry: strings; fundingRaised: number or numeric string (USD); lastFundingDate: "YYYY-MM-DD" string; foundationYear: 4-digit year, number or string; employeeRange: "1-10" \| "11-50" \| "51-200" \| "201-500" \| "501-1000" \| "1001-5000" \| "5001-10000" \| "10000+"; groups: array of objects \{ id: group id string } (from list\_groups); emails, phones, urls, addresses: arrays of strings, max 20, the first is primary; customFieldValues: object \{ "\<groupId>": \{ "\<field name>": value } } — every groupId used here must also be in groups. |
| `create_interaction` | Log an interaction with a person or company. Arguments: entity: object \{ id: string } (per\_… or com\_…), required; dateTime: ISO 8601 date-time string, e.g. "2026-09-26T09:00:00.000Z", required; title: string, required; content: string, multi-line, required; activityType: string, optional — "call", "meeting", "message", "coffee", "lunch", "event", "drink", a messaging app ("slack", "linkedin", "whatsapp"…) or one emoji. |
| `create_note` | Create a note on a person, company or deal. Arguments: entity: object \{ id: string } (per\_…, com\_… or a deal id), required; visibility: "public" (whole workspace) or "private" (only the key owner), required; content: string, plain text or markdown, required; parentNote: object \{ id: string } to reply to a note, optional. |
| `create_person` | Create a person. Arguments (all optional, exact folk names): firstName, lastName, fullName, description, jobTitle: strings; birthday: "YYYY-MM-DD" string (null or "" clears it); gender: "Male" \| "Female" \| "Unknown" \| "Other" \| null; groups: array of objects \{ id: group id string } (from list\_groups); companies: array of objects \{ id: company id } or \{ name: string } (a name creates the company if missing), max 20, the first is primary; emails, phones, urls, addresses: arrays of strings, max 20, the first is primary; customFieldValues: object \{ "\<groupId>": \{ "\<field name>": value } } — every groupId used here must also be in groups. |
| `update_company` | Update a company; only the fields sent change. companyId: string (com\_…), required. Arguments (all optional, exact folk names): name, description, industry: strings; fundingRaised: number or numeric string (USD); lastFundingDate: "YYYY-MM-DD" string; foundationYear: 4-digit year, number or string; employeeRange: "1-10" \| "11-50" \| "51-200" \| "201-500" \| "501-1000" \| "1001-5000" \| "5001-10000" \| "10000+"; groups: array of objects \{ id: group id string } (from list\_groups); emails, phones, urls, addresses: arrays of strings, max 20, the first is primary; customFieldValues: object \{ "\<groupId>": \{ "\<field name>": value } } — every groupId used here must also be in groups. List fields (groups, emails, phones, urls, addresses) REPLACE the stored list: to add a group, read the record first and send its current group ids plus the new one. Removing a group also removes that group's custom field values. |
| `update_person` | Update a person; only the fields sent change. personId: string (per\_…), required. Arguments (all optional, exact folk names): firstName, lastName, fullName, description, jobTitle: strings; birthday: "YYYY-MM-DD" string (null or "" clears it); gender: "Male" \| "Female" \| "Unknown" \| "Other" \| null; groups: array of objects \{ id: group id string } (from list\_groups); companies: array of objects \{ id: company id } or \{ name: string } (a name creates the company if missing), max 20, the first is primary; emails, phones, urls, addresses: arrays of strings, max 20, the first is primary; customFieldValues: object \{ "\<groupId>": \{ "\<field name>": value } } — every groupId used here must also be in groups. List fields (groups, companies, emails, phones, urls, addresses) REPLACE the stored list: to add a group, read the record first and send its current group ids plus the new one. Removing a group also removes that group's custom field values. |

## Permissions

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

***

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


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