Read and write Folk CRM people, companies, groups and notes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new company. `name` is required. Folk REST: POST /v1/companies.
The company name (required).
URLs (website, social, etc.).
Email addresses.
Groups to add this company to (array of {id}).
Phone numbers.
Industry.
Postal addresses.
Freeform description / notes.
Employee-count range bucket.
Total funding raised.
Year the company was founded.
Date of last funding round, formatted YYYY-MM-DD.
Custom field values, keyed by field.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a new company. `name` is required. Folk REST: POST /v1/companies.
| Argument | Type | Description |
|---|---|---|
| name* | string | The company name (required). |
| urls | array | URLs (website, social, etc.). |
| emails | array | Email addresses. |
| groups | array | Groups to add this company to (array of {id}). |
| phones | array | Phone numbers. |
| industry | string | Industry. |
| addresses | array | Postal addresses. |
| description | string | Freeform description / notes. |
| employeeRange | string | Employee-count range bucket. |
| fundingRaised | string | number | Total funding raised. |
| foundationYear | string | number | Year the company was founded. |
| lastFundingDate | string | Date of last funding round, formatted YYYY-MM-DD. |
| customFieldValues | object | Custom field values, keyed by field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The company name (required)."
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "URLs (website, social, etc.)."
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email addresses."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The group id."
}
},
"description": "A reference to a group by id."
},
"description": "Groups to add this company to (array of {id})."
},
"phones": {
"type": "array",
"items": {
"type": "string"
},
"description": "Phone numbers."
},
"industry": {
"type": "string",
"description": "Industry."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Postal addresses."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"employeeRange": {
"enum": [
"1-10",
"11-50",
"51-200",
"201-500",
"501-1000",
"1001-5000",
"5001-10000",
"10000+"
],
"type": "string",
"description": "Employee-count range bucket."
},
"fundingRaised": {
"type": [
"string",
"number"
],
"description": "Total funding raised."
},
"foundationYear": {
"type": [
"string",
"number"
],
"description": "Year the company was founded."
},
"lastFundingDate": {
"type": "string",
"description": "Date of last funding round, formatted YYYY-MM-DD."
},
"customFieldValues": {
"type": "object",
"description": "Custom field values, keyed by field.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Create a note attached to an entity (person/company). Folk REST: POST /v1/notes.
| Argument | Type | Description |
|---|---|---|
| content* | string | The note content. |
| entity_id* | string | Id of the entity (person/company) to attach the note to — maps to body entity:{id}. |
| visibility* | string | Note visibility — 'public' (workspace) or 'private' (you). |
| parent_note_id | string | Id of a parent note to reply under — maps to body parentNote:{id}. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"entity_id",
"visibility",
"content"
],
"properties": {
"content": {
"type": "string",
"description": "The note content."
},
"entity_id": {
"type": "string",
"description": "Id of the entity (person/company) to attach the note to — maps to body entity:{id}."
},
"visibility": {
"enum": [
"public",
"private"
],
"type": "string",
"description": "Note visibility — 'public' (workspace) or 'private' (you)."
},
"parent_note_id": {
"type": "string",
"description": "Id of a parent note to reply under — maps to body parentNote:{id}."
}
}
}Create a new person (contact). All fields are optional. Folk REST: POST /v1/people.
| Argument | Type | Description |
|---|---|---|
| urls | array | URLs (website, social, etc.). |
| emails | array | Email addresses. |
| gender | string | Gender — one of Male, Female, Unknown, Other. |
| groups | array | Groups to add this person to (array of {id}). |
| phones | array | Phone numbers. |
| birthday | string | Birthday, formatted YYYY-MM-DD. |
| fullName | string | Full name (if not split into first/last). |
| jobTitle | string | Job title. |
| lastName | string | Last name. |
| addresses | array | Postal addresses. |
Get a single company by id. Folk REST: GET /v1/companies/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The company id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id."
}
}
}Get the user associated with the current Folk API key. Folk REST: GET /v1/users/me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get a single note by id. Folk REST: GET /v1/notes/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The note id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The note id."
}
}
}Get a single person (contact) by id. Folk REST: GET /v1/people/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The person id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The person id."
}
}
}List/filter companies. Supports cursor pagination and structured filters. Folk REST: GET /v1/companies.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page (1-100, default 20). |
| cursor | string | Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page. |
| filter | object | Structured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {"firstName":{"eq":"John"}}. |
| combinator | string | How to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, default 20)."
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page."
},
"filter": {
"type": "object",
"description": "Structured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {\"firstName\":{\"eq\":\"John\"}}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
}
},
"combinator": {
"enum": [
"and",
"or"
],
"type": "string",
"description": "How to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'."
}
}
}List groups in the Folk workspace (ids needed to place people/companies). Folk REST: GET /v1/groups.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page (1-100, default 20). |
| cursor | string | Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, default 20)."
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page."
}
}
}List notes, optionally scoped to an entity or filtered by full text and creation date. Folk REST: GET /v1/notes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page (1-100, default 20). |
| query | string | Full-text search over note content. |
| cursor | string | Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page. |
| entity_id | string | Restrict to notes on this entity (person/company) id — maps to query key entity.id. |
| created_after | string | Only notes created after this ISO 8601 timestamp — maps to query createdAfter. |
| created_before | string | Only notes created before this ISO 8601 timestamp — maps to query createdBefore. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, default 20)."
},
"query": {
"type": "string",
"description": "Full-text search over note content."
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page."
},
"entity_id": {
"type": "string",
"description": "Restrict to notes on this entity (person/company) id — maps to query key entity.id."
},
"created_after": {
"type": "string",
"description": "Only notes created after this ISO 8601 timestamp — maps to query createdAfter."
},
"created_before": {
"type": "string",
"description": "Only notes created before this ISO 8601 timestamp — maps to query createdBefore."
}
}
}List/filter people (contacts). Supports cursor pagination and structured filters. Folk REST: GET /v1/people.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page (1-100, default 20). |
| cursor | string | Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page. |
| filter | object | Structured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {"firstName":{"eq":"John"}}. |
| combinator | string | How to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, default 20)."
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page."
},
"filter": {
"type": "object",
"description": "Structured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {\"firstName\":{\"eq\":\"John\"}}.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
}
},
"combinator": {
"enum": [
"and",
"or"
],
"type": "string",
"description": "How to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'."
}
}
}List users in the Folk workspace (id, name, email) — useful for resolving owner ids. Folk REST: GET /v1/users.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Results per page (1-100, default 20). |
| cursor | string | Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (1-100, default 20)."
},
"cursor": {
"type": "string",
"description": "Pagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page."
}
}
}Update fields on an existing company. Only provided fields are changed; list-valued fields REPLACE the existing values. Folk REST: PATCH /v1/companies/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The company id to update. |
| name | string | The company name. |
| urls | array | Replace the company's URLs. |
| emails | array | Replace the company's email addresses. |
| groups | array | Replace the company's groups (array of {id}). |
| phones | array | Replace the company's phone numbers. |
| industry | string | Industry. |
| addresses | array | Replace the company's addresses. |
| description | string | Freeform description / notes. |
| employeeRange | string |
Update fields on an existing person. Only provided fields are changed; list-valued fields (emails, phones, groups, companies, etc.) REPLACE the existing values. Folk REST: PATCH /v1/people/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The person id to update. |
| urls | array | Replace the person's URLs. |
| emails | array | Replace the person's email addresses. |
| gender | string | Gender — one of Male, Female, Unknown, Other. |
| groups | array | Replace the person's groups (array of {id}). |
| phones | array | Replace the person's phone numbers. |
| birthday | string | Birthday, formatted YYYY-MM-DD. |
| fullName | string | Full name. |
| jobTitle | string | Job title. |
| lastName |
| companies |
| array |
| Companies this person is linked to (array of {id} or {name}). |
| firstName | string | First name. |
| description | string | Freeform description / notes. |
| customFieldValues | object | Custom field values, keyed by field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "URLs (website, social, etc.)."
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Email addresses."
},
"gender": {
"enum": [
"Male",
"Female",
"Unknown",
"Other"
],
"type": "string",
"description": "Gender — one of Male, Female, Unknown, Other."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The group id."
}
},
"description": "A reference to a group by id."
},
"description": "Groups to add this person to (array of {id})."
},
"phones": {
"type": "array",
"items": {
"type": "string"
},
"description": "Phone numbers."
},
"birthday": {
"type": "string",
"description": "Birthday, formatted YYYY-MM-DD."
},
"fullName": {
"type": "string",
"description": "Full name (if not split into first/last)."
},
"jobTitle": {
"type": "string",
"description": "Job title."
},
"lastName": {
"type": "string",
"description": "Last name."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Postal addresses."
},
"companies": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id."
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The company name (creates/links by name)."
}
}
}
],
"description": "A reference to a company by id or by name."
},
"description": "Companies this person is linked to (array of {id} or {name})."
},
"firstName": {
"type": "string",
"description": "First name."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"customFieldValues": {
"type": "object",
"description": "Custom field values, keyed by field.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}| Employee-count range bucket. |
| fundingRaised | string | number | Total funding raised. |
| foundationYear | string | number | Year the company was founded. |
| lastFundingDate | string | Date of last funding round, formatted YYYY-MM-DD. |
| customFieldValues | object | Custom field values, keyed by field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id to update."
},
"name": {
"type": "string",
"description": "The company name."
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the company's URLs."
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the company's email addresses."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The group id."
}
},
"description": "A reference to a group by id."
},
"description": "Replace the company's groups (array of {id})."
},
"phones": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the company's phone numbers."
},
"industry": {
"type": "string",
"description": "Industry."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the company's addresses."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"employeeRange": {
"enum": [
"1-10",
"11-50",
"51-200",
"201-500",
"501-1000",
"1001-5000",
"5001-10000",
"10000+"
],
"type": "string",
"description": "Employee-count range bucket."
},
"fundingRaised": {
"type": [
"string",
"number"
],
"description": "Total funding raised."
},
"foundationYear": {
"type": [
"string",
"number"
],
"description": "Year the company was founded."
},
"lastFundingDate": {
"type": "string",
"description": "Date of last funding round, formatted YYYY-MM-DD."
},
"customFieldValues": {
"type": "object",
"description": "Custom field values, keyed by field.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}| string |
| Last name. |
| addresses | array | Replace the person's addresses. |
| companies | array | Replace the person's linked companies (array of {id} or {name}). |
| firstName | string | First name. |
| description | string | Freeform description / notes. |
| customFieldValues | object | Custom field values, keyed by field. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The person id to update."
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the person's URLs."
},
"emails": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the person's email addresses."
},
"gender": {
"enum": [
"Male",
"Female",
"Unknown",
"Other"
],
"type": "string",
"description": "Gender — one of Male, Female, Unknown, Other."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The group id."
}
},
"description": "A reference to a group by id."
},
"description": "Replace the person's groups (array of {id})."
},
"phones": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the person's phone numbers."
},
"birthday": {
"type": "string",
"description": "Birthday, formatted YYYY-MM-DD."
},
"fullName": {
"type": "string",
"description": "Full name."
},
"jobTitle": {
"type": "string",
"description": "Job title."
},
"lastName": {
"type": "string",
"description": "Last name."
},
"addresses": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the person's addresses."
},
"companies": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id."
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The company name (creates/links by name)."
}
}
}
],
"description": "A reference to a company by id or by name."
},
"description": "Replace the person's linked companies (array of {id} or {name})."
},
"firstName": {
"type": "string",
"description": "First name."
},
"description": {
"type": "string",
"description": "Freeform description / notes."
},
"customFieldValues": {
"type": "object",
"description": "Custom field values, keyed by field.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}