The Folk MCP connector routes your AI agent's tool calls to Folk's own MCP server through Scalekit. Each user signs in to Folk once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 47 tools.
- Tools
- 47
- What they doRead · write · destructive
- 8 · 38 · 18 read38 write1 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Folk MCP connection
In AgentKit > Connections, create a Folk MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Folk MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts 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.actionsconst connector = 'folkmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Folk MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'folkmcp_folk_get_current_user',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_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.actionsconnection_name = "folkmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Folk MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="folkmcp_folk_get_current_user",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolfolkmcp_folk_get_companyRetrieve a single company record from Folk CRM by its ID, including all native and custom fields.Read-onlyGet Company
Retrieve a single company record from Folk CRM by its ID, including all native and custom fields.
Inputs
companyIdstringrequired- The ID of the company to retrieve, as returned by other folk tools (format: "com_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_current_userReturns the identity of the authenticated folk user for this MCP session: their id, email, and fullName.Read-onlyGet Current User
Returns the identity of the authenticated folk user for this MCP session: their id, email, and fullName.
Inputs
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_objectRetrieve a single custom object record from Folk CRM by its ID, including all native and custom fields.Read-onlyGet Object
Retrieve a single custom object record from Folk CRM by its ID, including all native and custom fields.
Inputs
groupIdstringrequired- The ID of the group containing the object.
objectIdstringrequired- The ID of the object to retrieve (format: "obj_<uuid>").
objectTypestringrequired- The name of the object type (e.g. "Deals").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_personRetrieve a single person (contact) record from Folk CRM by its ID, including all native and custom fields.Read-onlyGet Person
Retrieve a single person (contact) record from Folk CRM by its ID, including all native and custom fields.
Inputs
personIdstringrequired- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_workspace_structureRetrieves the complete structure of the folk workspace: groups, entity types per group, native fields, custom field definitions, pipeline views, and workspace members.Read-onlyGet Workspace Structure
Retrieves the complete structure of the folk workspace: groups, entity types per group, native fields, custom field definitions, pipeline views, and workspace members.
Inputs
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_search_companiesSearch for companies in the Folk CRM workspace by name, domain, or custom field values.Read-onlySearch Companies
Search for companies in the Folk CRM workspace by name, domain, or custom field values.
Inputs
filterobjectrequired- No description.
combinatorstring- No description.one of
andordefaultand cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_search_objectsSearch for custom objects in the Folk CRM workspace by name or custom field values within a specific group.Read-onlySearch Objects
Search for custom objects in the Folk CRM workspace by name or custom field values within a specific group.
Inputs
filterobjectrequired- No description.
groupIdstringrequired- The ID of the group containing the objects. Use folk_get_workspace_structure to retrieve group IDs.
objectTypestringrequired- The name of the object type (e.g. "Deals"). Retrieve available types from folk_get_workspace_structure.
combinatorstring- No description.one of
andordefaultand cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_search_peopleSearch for people (contacts) in the Folk CRM workspace by name, email, or custom field values.Read-onlySearch People
Search for people (contacts) in the Folk CRM workspace by name, email, or custom field values.
Inputs
filterobjectrequired- No description.
combinatorstring- No description.one of
andordefaultand cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_add_group_memberAdd a workspace member to a group with the given role.WriteFolk Add Group Member
Add a workspace member to a group with the given role.
Inputs
groupIdstringrequired- The ID of the group to add a member to (format: "grp_<uuid>").
idstringrequired- The ID of the workspace member to add (format: "usr_<uuid>").
rolestringrequired- The role to grant to the new member: admin, contributor, or reader.one of
admincontributorreader intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_create_companiesCreate several new companies in the folk workspace in one call, each record taking the fields folk_create_company accepts, at least a name.WriteFolk Create Companies
Create several new companies in the folk workspace in one call, each record taking the fields folk_create_company accepts, at least a name. As with folk_create_company, a record naming an existing company, or a company named by an earlier record of the call, returns that company's id: its fields are kept, but the record's groups and custom field values are added to it. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
recordsarrayrequired- The companies to create, each with the fields folk_create_company accepts.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_create_companyCreate a new company record in the Folk CRM workspace with native and custom field values.WriteCreate Company
Create a new company record in the Folk CRM workspace with native and custom field values.
Inputs
namestringrequired- No description.
addressesarray- No description.
customFieldValuesobject- No description.
descriptionstring- No description.
emailsarray- No description.
employeeRangestring- No description.
foundationYearstring- No description.
fundingRaisedstring- No description.
groupsarray- No description.
industrystring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
lastFundingDatestring- No description.
phonesarray- No description.
urlsarray- No description.
folkmcp_folk_create_groupCreate a new group in the folk workspace.WriteFolk Create Group
Create a new group in the folk workspace. name: required â the name of the group. visibility: "public" (visible to all workspace members) or "private" (visible only to explicitly added group members). A default "All people" table view is automatically created for the group. Creation is atomic: if the view cannot be created, the group is not created either. Returns the full created group object.
Inputs
namestringrequired- No description.
visibilitystringrequired- No description.one of
publicprivate intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_create_group_custom_fieldCreates a new group custom field for an entity type (person, company, or a custom object name).WriteFolk Create Group Custom Field
Creates a new group custom field for an entity type (person, company, or a custom object name).
Inputs
entityTypestringrequired- The entity type the custom field belongs to. It can be `person`, `company`, or a custom object name.
groupIdstringrequired- The ID of the group the custom field belongs to (format: "grp_<uuid>").
namestringrequired- No description.
typestringrequired- No description.one of
textFielddateFielduserFieldcontactFieldobjectFieldsingleSelectmultipleSelectnumericField configstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
optionsarray- No description.
folkmcp_folk_create_interactionLog a past interaction (a recorded touchpoint such as a call, meeting, or message) with a person or company.WriteFolk Create Interaction
Log a past interaction (a recorded touchpoint such as a call, meeting, or message) with a person or company. Use for: - recording that a conversation or meeting happened (e.g. "Had a coffee with John Doe") Only manually logged interactions can be created here. Imported interactions (email, calendar, WhatsApp, calls) sync automatically from connected sources and cannot be created with this tool. Required: - entity.id â the person (`per_<uuid>`) or company (`com_<uuid>`) the interaction is linked to - dateTime â when the interaction happened, as an ISO 8601 timestamp (e.g. "2025-07-17T09:00:00.000Z") - title â short summary of the interaction - content â the multi-line body of the interaction - activityType â the kind of interaction: a predefined activity (call, meeting, message, coffee, lunch, event, drink), a messaging app (slack, whatsapp, linkedin, telegram, etc.), or a single emoji Returns the full created logged interaction.
Inputs
contentstringrequired- No description.
dateTimestringrequired- No description.
entityobjectrequired- No description.
titlestringrequired- No description.
activityTypestring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
typestring- No description.
folkmcp_folk_create_noteCreate a new note linked to a person or company in the folk workspace.WriteFolk Create Note
Create a new note linked to a person or company in the folk workspace. entity.id: required â the entity to attach the note to. Format: `per_<uuid>` for a person, `com_<uuid>` for a company and `obj_<uuid>` for an object . Obtain entity IDs from folk_search_people, folk_search_companies or folk_search_objects. content: required â note body in markdown (max 100 000 chars). visibility: "public" (visible to all workspace members) or "private" (visible only to you). Defaults to "public". parentNote.id: optional â attach as a reply to an existing note on the same entity. Returns the full created note object.
Inputs
contentstringrequired- No description.
entityobjectrequired- No description.
visibilitystringrequired- No description.one of
publicprivate intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
parentNoteobject- No description.
folkmcp_folk_create_objectCreate a new custom object record in a Folk CRM group with specified field values.WriteCreate Object
Create a new custom object record in a Folk CRM group with specified field values.
Inputs
groupIdstringrequired- The ID of the group where the object will be created.
namestringrequired- Name of the object.
objectTypestringrequired- The name of the object type (e.g. "Deals").
companiesarray- Companies to associate with the object.
customFieldValuesobject- Custom field values keyed by field name (e.g. { "Status": "Active", "Deal value": "42000" }). No group nesting needed â the group is set by groupId.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
peoplearray- People to associate with the object.
folkmcp_folk_create_objectsCreate several new objects (e.g.WriteFolk Create Objects
Create several new objects (e.g. deals) of one object type within one group in one call, each record taking the fields folk_create_object accepts besides groupId and objectType. Use folk_get_workspace_structure first to discover available groupIds and object types. An object type that does not exist in the group fails the whole call. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
groupIdstringrequired- The ID of the group where the object will be created.
objectTypestringrequired- The name of the object type (e.g. "Deals").
recordsarrayrequired- The objects to create in the group, each with the fields folk_create_object accepts besides groupId and objectType.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_create_peopleCreate several new people in the folk workspace in one call, each record taking the fields folk_create_person accepts.WriteFolk Create People
Create several new people in the folk workspace in one call, each record taking the fields folk_create_person accepts. Each record needs at least a name (fullName, or firstName/lastName) or at least one email. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
recordsarrayrequired- The people to create, each with the fields folk_create_person accepts.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_create_personCreate a new person (contact) record in the Folk CRM workspace with native and custom field values.WriteCreate Person
Create a new person (contact) record in the Folk CRM workspace with native and custom field values.
Inputs
addressesarray- No description.
birthdaystring- No description.
companiesarray- No description.
customFieldValuesobject- No description.
descriptionstring- No description.
emailsarray- No description.
firstNamestring- No description.
fullNamestring- No description.
genderstring- No description.
groupsarray- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
jobTitlestring- No description.
lastNamestring- No description.
phonesarray- No description.
urlsarray- No description.
folkmcp_folk_create_taskCreate a new task linked to a person, company, or object in folk.WriteFolk Create Task
Create a new task linked to a person, company, or object in folk. entity.id format: `per_<uuid>` | `com_<uuid>` | `obj_<uuid>`. Obtain IDs from folk_search_people, folk_search_companies, or folk_search_objects. assignedUsers: accepts user IDs or emails. Defaults to the current user if omitted. Returns the full created task object.
Inputs
dueAtstringrequired- No description.
entityobjectrequired- No description.
titlestringrequired- No description.
assignedUsersarray- No description.
completedAtstring- No description.
descriptionstring- No description.
dueTimestring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
isPublicboolean- No description.default
true recurrenceFrequencystring- No description.
folkmcp_folk_enrich_peopleStart an enrichment of the emails and/or phones of up to 500 people, using third-party data providers.WriteFolk Enrich People
Start an enrichment of the emails and/or phones of up to 500 people, using third-party data providers. The data found is added to the people in folk. Enriching people is an asynchronous job: this tool returns right away with the enrichment and its id, usually "pending" (already "completed" when every id is skipped). Then: 1. Poll folk_get_person_enrichment with the enrichment id until its status is "completed" or "failed". An enrichment usually takes from a few seconds to a few minutes, depending on the number of people. 2. Do not request another enrichment of the same people while this one is running. 3. Once "completed", the enrichment holds a report for every person of the batch you can access: status, enrichedFields and missingInputs (see folk_get_person_enrichment). Before retrying people that were not (fully) enriched: a person's missingInputs lists the data the providers search with that the person was missing. As long as it is not fixed, a new enrichment would most likely give the same result and use credits for nothing. Add the missing data to the person first, then enrich only those people again: - "name", "linkedinUrl" (add a LinkedIn URL to urls) and "company" (link a company with companyIds): folk_update_person (or folk_update_people). - "companyWebsite" (a website on the person's primary company): folk_update_company (urls) (or folk_update_companies). Credits: person_enrichment credits are charged per person and per field found: searching the emails of a person costs 1 credit, searching their phones costs 4 credits. The check needs the full cost upfront (every requested field for every person that can be enriched): if the workspace doesn't have enough credits, nothing is enriched and an "insufficient credits" error states the credits needed and left. Credits are reserved when the job starts and the fields not found are refunded when it finishes, so "used" in folk_get_credits looks higher while a job runs. Call folk_get_credits before a large enrichment. Large batches: only enrich the people missing the requested field, instead of a whole group for instance. Use folk_search_people with an "empty" filter on the field, e.g. to enrich the emails of a group: `{ "groups": { "in": { "id": ["grp_<uuid>"] } }, "emails": { "empty": "" } }`. ids: person ids ("per_<uuid>"), from folk_search_people. Duplicates are enriched once. Ids that don't match a person you can access and edit (enriching needs the contributor role or above on one of the person's groups) are not rejected: they are reported with the "skipped" status. Returns the enrichment, usually with status "pending".
Inputs
fieldsarrayrequired- The fields to enrich on each person. Each field can only be requested once.
idsarrayrequired- The IDs of the people to enrich, up to 500. Duplicate IDs are enriched once. IDs that don't match a person you can access and edit don't reject the request: they are reported as items with the `skipped` status.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_creditsGet the credits used and available for each metered feature of the workspace in the current period.WriteFolk Get Credits
Get the credits used and available for each metered feature of the workspace in the current period. Credits reset at the end of the period (periodEnd). Use before a large enrichment with folk_enrich_people: person_enrichment credits are charged per person and per field found. If the workspace doesn't have enough credits, folk_enrich_people returns an insufficient credits error stating the credits needed and left. For each feature: - scope: "workspace" when the whole workspace shares the credits, "user" when each member has their own. - used: the credits consumed in the current period. Can exceed limit if the limit was lowered during the period. - limit: the credits available per period. null means unlimited, 0 means the feature is not available. New features and values may be added in the future: handle unknown values gracefully.
Inputs
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_group_custom_fieldFetch a single group custom field by group, entity type, and custom field name.WriteFolk Get Group Custom Field
Fetch a single group custom field by group, entity type, and custom field name. Returns the detailed custom field definition (name, type, options, config) for that entity type. Use folk_list_group_custom_fields if the custom field name isn't already known.
Inputs
customFieldNamestringrequired- The name of the custom field to retrieve.
entityTypestringrequired- The entity type the custom fields belong to. It can be `person`, `company`, or a custom object name.
groupIdstringrequired- The ID of the group to get the custom field from (format: "grp_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_interactionFetch a single interaction by its id, including the full email or calendar body, or the call transcript, when interaction privacy rules allow it.WriteFolk Get Interaction
Fetch a single interaction by its id, including the full email or calendar body, or the call transcript, when interaction privacy rules allow it. Use this when you already have an interactionId (e.g. from folk_list_interactions) and need its full details. To find an interaction in the first place, use folk_list_interactions instead. Both interactionId and entityId are required, and the entityId must match the entity the interaction is linked to.
Inputs
entityIdstringrequired- The person ("per_<uuid>"), company ("com_<uuid>"), or object ("obj_<uuid>") the interaction is linked to. Must match the entity the interaction was listed under.
interactionIdstringrequired- The ID of the interaction to retrieve, as returned by folk_list_interactions. Logged interactions use the "lit_<uuid>" format; imported interactions (email, calendar, WhatsApp, calls) use their raw external ID.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_person_enrichmentGet an enrichment of people by its id, from folk_enrich_people or folk_list_person_enrichments.WriteFolk Get Person Enrichment
Get an enrichment of people by its id, from folk_enrich_people or folk_list_person_enrichments. Use it to follow an enrichment: enriching people is asynchronous, so poll this tool until status is "completed" or "failed". Wait a few seconds between calls. - "pending": not started yet. "in_progress": running. Keep polling. - "failed": the enrichment couldn't run, see errorReason. "insufficient_credits": nothing was enriched. "internal_error": some people may already have been enriched, so check them (e.g. with folk_search_people) before enriching again. - "completed": over. summary counts the people per result, and items holds a report for every person of the batch you can access. Each item of a completed enrichment: - status: "enriched" (every requested field found), "partially_enriched" (some found), "not_enriched" (searched, nothing found), "skipped" (the id doesn't match a person you can access and edit, not searched), "error" (the providers were unavailable, can be retried later). - enrichedFields: the requested fields found during this enrichment. - missingInputs: the data the providers search with that the person was missing: "name" (a first or last name), "company" (a company linked to the person), "companyWebsite" (a website on the person's primary company), "linkedinUrl" (a LinkedIn profile URL in the person's URLs). Adding it may improve a new enrichment, with no guarantee. Don't enrich a "not_enriched" or "partially_enriched" person again until its missingInputs are fixed: the result would most likely be the same and use credits for nothing. New values may be added in the future: handle unknown values gracefully.
Inputs
enrichmentIdstringrequired- The ID of the enrichment to get (format: "enr_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_get_taskFetch a single task by its ID.WriteFolk Get Task
Fetch a single task by its ID. Use when you already have a taskId from a previous folk_search_tasks or folk_create_task call. Do not use to find or look up a task by title, due date, or other attribute â use folk_search_tasks instead. Returns the full task object: title, description, entity, dueAt, dueTime, completedAt, recurrenceFrequency, isPublic, assignedUsers, and createdBy.
Inputs
taskIdstringrequired- The ID of the task to retrieve (format: "tsk_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_list_group_custom_fieldsReturns the list of the group's custom fields for an entity type.WriteFolk List Group Custom Fields
Returns the list of the group's custom fields for an entity type.
Inputs
entityTypestringrequired- The entity type the custom fields belong to. It can be `person`, `company`, or a custom object name.
groupIdstringrequired- The ID of the group to list custom fields for (format: "grp_<uuid>").
cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_list_group_membersList the members of a group, paginated.WriteFolk List Group Members
List the members of a group, paginated. For a public group, this returns every workspace member as they are all members of the group â role defaults to admin unless the member has an explicit role in the group.
Inputs
groupIdstringrequired- The ID of the group to list members for (format: "grp_<uuid>").
cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_list_groupsList the groups in the folk workspace that the caller can access.WriteFolk List Groups
List the groups in the folk workspace that the caller can access. Use for: - listing the workspace's groups (no filters needed) - retrieving group ids to use with other endpoints, such as listing a group's custom fields. Parameters: - limit / cursor: pagination. Returns paginated group objects (id, name, visibility) with nextCursor when more pages exist. Group ids are formatted `grp_<uuid>`.
Inputs
cursorstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20
folkmcp_folk_list_interactionsList past or upcoming interactions for a single person, company, or object.WriteFolk List Interactions
List past or upcoming interactions for a single person, company, or object. Use for: - reviewing the recent communication history with a contact (timeframe "past") - checking what meetings or events are scheduled with a contact (timeframe "upcoming") - finding an interaction's id to pass to folk_get_interaction or folk_update_interaction Provide entityId to scope results (this tool always targets one entity â it cannot search across the whole workspace). Returns both imported interactions (email, calendar, WhatsApp, calls) and manually logged ones. Pass importedTypes to keep only some imported types, and userIds to keep only the interactions of some workspace members. Some content may be hidden depending on the workspace's interaction privacy rules. The response includes nextCursor when more results are available; pass it back as cursor to fetch the next page.
Inputs
entityIdstringrequired- The person ("per_<uuid>"), company ("com_<uuid>"), or object ("obj_<uuid>") whose interactions to list. Required.
timeframestringrequired- Whether to list past interactions ("past", most recent first) or future-dated ones ("upcoming"). Required.one of
pastupcoming cursorstring- No description.
importedTypesarray- The imported interaction types to include ("email", "calendar", "whatsapp", "call"). Omit to include every imported type. Pass an empty list to return only manually logged interactions. Manually logged interactions are always included.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
userIdsarray- Only return interactions of these workspace members ("usr_<uuid>"). Omit to include every member.
folkmcp_folk_list_person_enrichmentsList the enrichments of people of the workspace, most recent first, paginated via cursor.WriteFolk List Person Enrichments
List the enrichments of people of the workspace, most recent first, paginated via cursor. Use to find an enrichment without its id, e.g. the enrichments still running before requesting a new one. Use folk_get_person_enrichment if the enrichment id is already known. Filter shape: `{ "<attribute>": { "<operator>": <operand> } }` | Attribute | Operators | Values | |------------|--------------------------|----------------------------------------------------------------| | status | eq, not_eq, in, not_in | one or more of: pending, in_progress, completed, failed | | createdAt | gt, lt | one date string "YYYY-MM-DD" | | finishedAt | empty, not_empty, gt, lt | empty/not_empty take no value; gt/lt take one date "YYYY-MM-DD" | Examples: - running enrichments: `{ "status": { "in": ["pending", "in_progress"] } }` - finished enrichments: `{ "finishedAt": { "not_empty": "" } }` - requested after a date: `{ "createdAt": { "gt": "2026-09-01" } }` Use combinator to control AND/OR logic across filters. Omit filter to list every enrichment. Returns up to `limit` enrichments (default and max 10), each with its report once completed (see folk_get_person_enrichment). The response includes nextCursor when more results are available; pass it back as cursor to get the next page.
Inputs
combinatorstring- How to combine the filters: "and" (default) or "or".one of
andordefaultand cursorstring- Cursor from a previous call (nextCursor) to get the next page. Omit on the first call.
filterobject- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- The number of enrichments to return, up to 10.default
10
folkmcp_folk_search_notesSearch notes in the folk workspace.WriteFolk Search Notes
Search notes in the folk workspace. Use for: - listing recent notes across the workspace (no filters needed) - finding notes attached to a specific contact or company - filtering notes by creation date or content Parameters: - entityId (optional): filter by entity. Format `per_<uuid>` for a person, `com_<uuid>` for a company, `obj_<uuid>` for objects. - query (optional): full-text search against note content. - createdAfter (optional): ISO 8601 timestamp â return only notes created after this date. - createdBefore (optional): ISO 8601 timestamp â return only notes created before this date. - limit / cursor: pagination. Returns paginated note objects with nextCursor when more pages exist.
Inputs
createdAfterstring- Return only notes created after this ISO 8601 timestamp. Example: "2024-01-01T00:00:00.000Z".
createdBeforestring- Return only notes created before this ISO 8601 timestamp. Example: "2024-12-31T23:59:59.999Z".
cursorstring- No description.
entityIdstring- Filter by entity. Only notes linked to this entity are returned. Format: "per_<uuid>" or "com_<uuid>".
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20 querystring- Full-text search against note content.
folkmcp_folk_search_tasksSearch tasks in the folk workspace with optional attribute filters, paginated via cursor.WriteFolk Search Tasks
Search tasks in the folk workspace with optional attribute filters, paginated via cursor. Use for: - listing tasks, optionally filtered by completion state, due date, or attributes - finding tasks assigned to specific users, or linked to specific people, companies, or objects - finding tasks created, due, or completed within a date range Filter shape: `{ "<fieldName>": { "<operator>": <operand> } }` Attribute â operator â value table: | Attribute | Operators | Values | |-------------------|-----------------------------|------------------------------------------| | dueAt | eq, not_eq, gt, lt | one date string "YYYY-MM-DD" | | createdAt | gt, lt | one date string "YYYY-MM-DD" | | completedAt | empty, not_empty, gt, lt | empty/not_empty take no value; gt/lt take one ISO 8601 datetime string | | assigneeUserId | in, not_in | one or more folk-prefixed user ids | | entity | in, not_in | one or more folk-prefixed entity ids | Operand-shape rules: - dueAt / createdAt â operand is a plain date string. Example: `{ "dueAt": { "gt": "2025-01-01" } }` - completedAt â empty/not_empty take no operand (task not yet completed / already completed). gt/lt take an ISO 8601 datetime string. Example: `{ "completedAt": { "not_empty": "" } }` Example: `{ "completedAt": { "gt": "2025-01-01T00:00:00.000Z" } }` - assigneeUserId â operand is one or more folk-prefixed user ids (`usr_...`). Obtain ids from folk_get_workspace_structure. Example: `{ "assigneeUserId": { "in": "usr_7dfc21aa-feb2-40d9-92c9-17ccbe8bbddf" } }` Example (exclude): `{ "assigneeUserId": { "not_in": "usr_7dfc21aa-feb2-40d9-92c9-17ccbe8bbddf" } }` - entity â operand is one or more folk-prefixed ids, all of the SAME entity type (`per_...` for people, `com_...` for companies, `obj_...` for objects â do not mix types in one filter). Obtain ids from folk_search_people, folk_search_companies, or folk_search_objects. Example: `{ "entity": { "in": ["per_7dfc21aa-feb2-40d9-92c9-17ccbe8bbddf"] } }` Example (exclude): `{ "entity": { "not_in": ["per_7dfc21aa-feb2-40d9-92c9-17ccbe8bbddf"] } }` Use combinator to control AND/OR logic across multiple filter entries. Omit filter entirely to return every task. onlyAssignedToMe (optional): when true, restricts results to tasks assigned to the current user, combined with any other filters. Returns paginated full task objects: up to `limit` tasks (default 20, max 100). The response includes nextCursor when more results are available; pass it back as cursor to get the next page. Use folk_get_task if taskId is already known.
Inputs
combinatorstring- No description.one of
andordefaultand cursorstring- No description.
filterobject- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
limitinteger- No description.default
20 onlyAssignedToMeboolean- When true, restricts results to tasks assigned to the current user.
folkmcp_folk_update_companiesUpdate several existing companies in the folk workspace in one call, each record taking the fields folk_update_company accepts.WriteFolk Update Companies
Update several existing companies in the folk workspace in one call, each record taking the fields folk_update_company accepts. Only the fields a record provides are changed. For multi-value fields (emails, phones, addresses, urls) use add* / remove* for incremental changes or set* to replace the full list. addGroupIds is additive only. Several records may update the same company: they apply in order, and every add and remove operation is kept. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
recordsarrayrequired- The updates to apply, each with the fields folk_update_company accepts. Several records may update the same company: they apply in order.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_update_companyUpdate an existing company record in Folk CRM with new native or custom field values.WriteUpdate Company
Update an existing company record in Folk CRM with new native or custom field values.
- Idempotent
Inputs
companyIdstringrequired- The ID of the company to update, as returned by other folk tools (format: "com_<uuid>").
addAddressesarray- Append addresses to the existing list.
addEmailsarray- Append email addresses to the existing list.
addGroupIdsarray- Group ids to add the company to. Groups cannot be removed via this tool.
addPhonesarray- Append phone numbers to the existing list.
addUrlsarray- Append URLs to the existing list.
customFieldValuesobject- The custom field values associated with the company, grouped by group ids. The format is the following: ```json { "<groupId>": { "<customFieldName>": "<customFieldValue>" } } ``` The group ids passed must also be provided in the `groups` field, otherwise a validation error will be thrown. The format of the custom field value depends on the type of the custom field: - `textField`: string, eg: `"Foo"` - `numericField`: number or numeric string, eg: `42` or `"42"` - `dateField`: ISO 8601 string (YYYY-MM-DD), eg: `"2021-01-01"` - `singleSelect`: string (option label), eg: `"Active"` - `multipleSelect`: array of strings (option labels), eg: `["B2B", "B2C"]` - `contactField`: array of objects with `id` property, eg: `[{"id": "per_20228901-ce2b-418c-a267-671823107d8c"}]` - `userField`: array of objects with either `id` (workspace user id) or `email` (workspace user email) property, eg: `[{"id": "usr_a23373bb-5296-4c59-b2e8-8f121707d562"}, {"email": "jane@example.com"}]` - `objectField`: array of objects with `id` property, eg: `[{"id": "obj_2f62707c-52c0-421a-a11f-68e1ce9610f4"}]` Passing a `null` value or an empty array will unset the custom field value.
descriptionstring- No description.
employeeRangestring- No description.
foundationYearstring- No description.
fundingRaisedstring- No description.
industrystring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
lastFundingDatestring- No description.
namestring- No description.
removeAddressesarray- Remove specific addresses from the existing list.
removeEmailsarray- Remove specific email addresses from the existing list.
removePhonesarray- Remove specific phone numbers from the existing list.
removeUrlsarray- Remove specific URLs from the existing list.
setAddressesarray- Replace the entire address list.
setEmailsarray- Replace the entire email address list.
setPhonesarray- Replace the entire phone number list.
setUrlsarray- Replace the entire URL list.
folkmcp_folk_update_groupUpdate the name and/or visibility of an existing group.WriteFolk Update Group
Update the name and/or visibility of an existing group. Partial update â omit any field you do not want to change. groupId: the group to update (format: `grp_<uuid>`). Obtain from folk_list_groups. name: new name of the group (optional). visibility: "public" or "private" (optional). Changing visibility resets group membership: all current members are removed and the caller becomes the sole owner. Returns the full updated group object.
Inputs
groupIdstringrequired- The ID of the group to update (format: "grp_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
namestring- No description.
visibilitystring- No description.one of
publicprivate
folkmcp_folk_update_group_custom_fieldUpdates a group custom field: rename it, update its numeric config, or add/update/remove its select options.WriteFolk Update Group Custom Field
Updates a group custom field: rename it, update its numeric config, or add/update/remove its select options.
Inputs
customFieldNamestringrequired- The name of the custom field to update.
entityTypestringrequired- The entity type the custom field belongs to. It can be `person`, `company`, or a custom object name.
groupIdstringrequired- The ID of the group the custom field belongs to (format: "grp_<uuid>").
addOptionsarray- No description.
configstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
namestring- No description.
removeOptionsarray- No description.
updateOptionsarray- No description.
folkmcp_folk_update_group_member_roleUpdate the role of an existing group member.WriteFolk Update Group Member Role
Update the role of an existing group member. Fails on a public group, and when the target user is not an explicit member of the group.
Inputs
groupIdstringrequired- The ID of the group the member belongs to (format: "grp_<uuid>").
rolestringrequired- The new role for the member: admin, contributor, or reader.one of
admincontributorreader userIdstringrequired- The ID of the group member to update (format: "usr_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_update_interactionUpdate an existing manually logged interaction.WriteFolk Update Interaction
Update an existing manually logged interaction. Partial update â provide only the fields you want to change (title, content, dateTime, activityType). Only logged interactions (id format `lit_<uuid>`) can be updated; imported interactions (email, calendar, WhatsApp, calls) cannot. Besides interactionId and entity, at least one updatable field must be provided. Returns the full updated interaction.
Inputs
entityobjectrequired- No description.
interactionIdstringrequired- The ID of the logged interaction to update (format: "lit_<uuid>"). Only manually logged interactions can be updated; imported interactions (email, calendar, WhatsApp, calls) cannot.
activityTypestring- No description.
contentstring- No description.
dateTimestring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
titlestring- No description.
folkmcp_folk_update_noteUpdate the content or visibility of an existing note.WriteFolk Update Note
Update the content or visibility of an existing note. Partial update â omit any field you do not want to change. noteId: the note to update (format: `nte_<uuid>`). Obtain from folk_search_notes. content: new markdown body (optional). visibility: "public" or "private" (optional). Returns only noteId. Call folk_search_notes to retrieve the updated note object. Note: only user-authored notes can be updated.
Inputs
noteIdstringrequired- The ID of the note to update (format: "nte_<uuid>").
contentstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
visibilitystring- No description.one of
publicprivate
folkmcp_folk_update_objectUpdate an existing custom object record in Folk CRM with new field values.WriteUpdate Object
Update an existing custom object record in Folk CRM with new field values.
- Idempotent
Inputs
groupIdstringrequired- The ID of the group containing the object.
objectIdstringrequired- The ID of the object to update (format: "obj_<uuid>").
objectTypestringrequired- The name of the object type (e.g. "Deals").
companiesarray- Replace all associated companies with this list.
customFieldValuesobject- Custom field values to update, keyed by field name.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
namestring- New name for the object.
peoplearray- Replace all associated people with this list.
folkmcp_folk_update_objectsUpdate several existing objects (e.g.WriteFolk Update Objects
Update several existing objects (e.g. deals) of one object type within one group in one call, each record taking the fields folk_update_object accepts besides groupId and objectType. Partial update â omit any field you don't want to change. people / companies: providing a list REPLACES all current associations. Omit to leave unchanged. Several records may update the same object: they apply in order, the last value given for a field winning. An object type that does not exist in the group fails the whole call. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
groupIdstringrequired- The ID of the group containing the object.
objectTypestringrequired- The name of the object type (e.g. "Deals").
recordsarrayrequired- The updates to apply to objects of the group, each with the fields folk_update_object accepts besides groupId and objectType. Several records may update the same object: they apply in order.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_update_peopleUpdate several existing people in the folk workspace in one call, each record taking the fields folk_update_person accepts.WriteFolk Update People
Update several existing people in the folk workspace in one call, each record taking the fields folk_update_person accepts. Only the fields a record provides are changed. For multi-value fields (emails, phones, addresses, urls, companyIds) use addX / removeX for incremental changes or setX to replace the full list. addGroupIds is additive only. Several records may update the same person: they apply in order, and every add and remove operation is kept. Accepts at most 100 records per call: split a larger set into several calls, or narrow it down first. Each record is processed on its own: one that fails does not prevent the others from being written. Returns one result per record, in the order of records, with only its id, status and error: call the matching get tool for a full record. Records cannot be deleted through the folk MCP.
Inputs
recordsarrayrequired- The updates to apply, each with the fields folk_update_person accepts. Several records may update the same person: they apply in order.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_update_personUpdate an existing person (contact) record in Folk CRM with new native or custom field values.WriteUpdate Person
Update an existing person (contact) record in Folk CRM with new native or custom field values.
- Idempotent
Inputs
personIdstringrequired- No description.
addAddressesarray- No description.
addCompanyIdsarray- No description.
addEmailsarray- No description.
addGroupIdsarray- No description.
addPhonesarray- No description.
addUrlsarray- No description.
birthdaystring- No description.
customFieldValuesobject- No description.
descriptionstring- No description.
firstNamestring- No description.
fullNamestring- No description.
genderstring- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
jobTitlestring- No description.
lastNamestring- No description.
removeAddressesarray- No description.
removeCompanyIdsarray- No description.
removeEmailsarray- No description.
removePhonesarray- No description.
removeUrlsarray- No description.
setAddressesarray- No description.
setCompanyIdsarray- No description.
setEmailsarray- No description.
setPhonesarray- No description.
setUrlsarray- No description.
folkmcp_folk_update_taskUpdate an existing task.WriteFolk Update Task
Update an existing task. All fields are optional â omit any to leave unchanged. To update the completion date (to mark a task as done or todo), use folk_update_task_todo_or_done instead. Returns the taskId. Call folk_get_task to retrieve the full updated task.
Inputs
taskIdstringrequired- The ID of the task to update (format: "tsk_<uuid>").
assignedUsersarray- No description.
descriptionstring- No description.
dueAtstring- No description.
dueTimestring- No description.
entityobject- No description.
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
isPublicboolean- No description.
recurrenceFrequencystring- No description.
titlestring- No description.
folkmcp_folk_update_task_todo_or_doneMark a task as done or todo.WriteFolk Update Task Todo Or Done
Mark a task as done or todo. Pass a completedAt datetime to mark as done, or null to mark as todo. Returns the taskId. Call folk_get_task to retrieve the full updated task.
Inputs
completedAtstringrequired- ISO 8601 datetime to mark the task as done, or null to mark it as todo.
taskIdstringrequired- The ID of the task (format: "tsk_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
folkmcp_folk_remove_group_memberRemove a member from a group.DestructiveFolk Remove Group Member
Remove a member from a group. Fails on a public group, when the target is not a member, or when the target is the group owner.
Inputs
groupIdstringrequired- The ID of the group to remove a member from (format: "grp_<uuid>").
userIdstringrequired- The ID of the group member to remove (format: "usr_<uuid>").
intentstring- Brief explanation of why you are calling this tool and what you intend to do with the result.
No tools match.