Connection
- Authentication: API key.
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.
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 for the grant model and Security for how credentials are protected.Last reviewed against the provider API: September 2026.