Skip to main content
Glama

Folk MCP by usefulapi

Server Details

Read and write Folk CRM people, companies, groups and notes.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
49.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource+action pair (company/person/note × create/get/list/update), with list vs get clearly separated and no observable overlap. An agent can trivially select the right tool.

Naming Consistency5/5

All 14 tools follow a uniform folk_verb_noun pattern (folk_create_company, folk_get_person, folk_list_notes, etc.). The convention is applied without deviation.

Tool Count5/5

14 tools is well within the ideal 3-15 range and each maps to a meaningful resource/action in the CRM domain. No redundant or filler tools.

Completeness3/5

Create/list/get/update are covered for companies, people, and notes, but there are no delete operations anywhere and notes cannot be updated, leaving clear lifecycle gaps. Groups and users are read-only, which is defensible, but the missing deletes are a notable limitation.

Available Tools

14 tools
folk_create_companyCreate companyC
Destructive
Inspect

Create a new company. name is required. Folk REST: POST /v1/companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe company name (required).
urlsNoURLs (website, social, etc.).
emailsNoEmail addresses.
groupsNoGroups to add this company to (array of {id}).
phonesNoPhone numbers.
industryNoIndustry.
addressesNoPostal addresses.
descriptionNoFreeform description / notes.
employeeRangeNoEmployee-count range bucket.
fundingRaisedNoTotal funding raised.
foundationYearNoYear the company was founded.
lastFundingDateNoDate of last funding round, formatted YYYY-MM-DD.
customFieldValuesNoCustom field values, keyed by field.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The tool is a creation/mutation operation, and the annotation only supplies destructiveHint=true, which is about destruction rather than creation semantics. The description does not disclose whether creation is idempotent, whether duplicates are detected, what happens to nested structures like groups or customFieldValues, or what the response returns. For a 13-parameter create tool, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded statements with no filler. The endpoint reference is compact and useful for developers, though it borders on implementational detail rather than agent-facing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, nested objects, and no output schema, the description is minimal. It is adequate for identifying the tool but does not help an agent understand return values, error cases, or the semantics of fields like groups and customFieldValues when populating them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 13 parameters are already documented in the schema. The description only restates that `name` is required, which the schema already marks as required. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Create) and resource (company), and the 'folk_create_' prefix distinguishes it from sibling creation tools like folk_create_person and folk_create_note. It stops short of differentiating the tool's scope from folk_update_company or folk_get_company, but the intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as folk_update_company (for existing companies) or folk_create_person. The only usage-adjacent statement is that `name` is required, which is already in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_create_noteCreate noteB
Destructive
Inspect

Create a note attached to an entity (person/company). Folk REST: POST /v1/notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe note content.
entity_idYesId of the entity (person/company) to attach the note to — maps to body entity:{id}.
visibilityYesNote visibility — 'public' (workspace) or 'private' (you).
parent_note_idNoId of a parent note to reply under — maps to body parentNote:{id}.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation declares destructiveHint=true, yet the description says nothing about side effects, permissions, or what the 'destructive' aspect entails for a create operation — the one behavioral trait flagged by annotations is left unexplained. It adds only an endpoint reference, and no auth or rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the purpose is front-loaded and the API mapping is a compact addendum. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with no output schema, the description is adequate but thin: it never indicates what is returned (e.g. the new note id) or how replies via parent_note_id behave. Minimum viable, with clear gaps given the destructiveHint annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains each parameter, including the visibility enum values and the parentNote mapping for replies. The description adds nothing beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Create a note') and scopes it ('attached to an entity (person/company)'), which separates it from folk_create_company and folk_create_person. It does not explicitly route to sibling tools, but the resource distinction is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (e.g. the entity must already exist), and no mention of how this relates to siblings like folk_update_company or folk_get_note. Usage is only implied by the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_create_personCreate personB
Destructive
Inspect

Create a new person (contact). All fields are optional. Folk REST: POST /v1/people.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNoURLs (website, social, etc.).
emailsNoEmail addresses.
genderNoGender — one of Male, Female, Unknown, Other.
groupsNoGroups to add this person to (array of {id}).
phonesNoPhone numbers.
birthdayNoBirthday, formatted YYYY-MM-DD.
fullNameNoFull name (if not split into first/last).
jobTitleNoJob title.
lastNameNoLast name.
addressesNoPostal addresses.
companiesNoCompanies this person is linked to (array of {id} or {name}).
firstNameNoFirst name.
descriptionNoFreeform description / notes.
customFieldValuesNoCustom field values, keyed by field.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, which is counterintuitive for a create operation and deserves explanation, but the description is silent about it. The description does add the useful fact that all fields are optional (so an empty person can be created) and names the underlying REST endpoint. It does not mention permissions, deduplication behavior, or what happens to nested references like companies by name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, front-loaded with the core action, then the optionality note and endpoint. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter creation tool with nested objects and a destructiveHint annotation, the description omits important context: what the endpoint returns (no output schema), whether an empty creation is allowed, and why destructiveHint is set. The minimum viable content is present but significant gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 14 parameters including nested company/group references. The description adds no parameter-level semantics beyond repeating that fields are optional. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new person (contact)'), which is unambiguous and clearly distinct from siblings like folk_create_company or folk_update_person. The parenthetical clarifies that 'person' means a contact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives such as folk_create_company or when to prefer linking an existing person. The note that all fields are optional is useful but does not route the agent among tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_get_companyGet companyB
Read-only
Inspect

Get a single company by id. Folk REST: GET /v1/companies/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe company id.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description adds only the underlying REST route, which is not behavioral context. Nothing is said about what happens on a missing/invalid id or whether the result is paginated or expanded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose; nothing is redundant padding. It is close to minimal viable size rather than maximally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read with one well-documented param, annotations covering readOnly, and no output schema requirements, the definition is adequate. Only error/not-found behavior is left unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single required 'id' param is documented in the schema, so the schema carries the semantics. The description adds only 'by id', matching baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a single company by id'), and the word 'single' distinguishes it from the sibling folk_list_companies. It is clear but does not explicitly name or contrast the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance or mention of alternatives; the agent must infer that this is the lookup path when an id is known versus listing companies. The REST endpoint reference adds no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_get_current_userGet current userA
Read-only
Inspect

Get the user associated with the current Folk API key. Folk REST: GET /v1/users/me.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds meaningful context beyond that: the result is scoped to the credential identity rather than a query parameter, and it maps to GET /v1/users/me, which confirms no state change and no side effects. It stops short of describing the returned payload's shape or failure modes (e.g. invalid key).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the core purpose front-loaded and the REST mapping relegated to supporting detail. Nothing needs to be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with no output schema and readOnlyHint already set, the description supplies enough to call it correctly and interpret the result as 'the caller's own user record'. A brief note on the returned user object or the error condition for an invalid key would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly does not invent parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the user') and pins the scope with 'associated with the current Folk API key', which cleanly separates it from folk_get_person and folk_list_users. It even names the underlying REST route (GET /v1/users/me). An agent can identify the tool's identity semantics without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'current Folk API key' tells the agent this is a self-identity lookup rather than a lookup of an arbitrary user, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative (e.g. folk_list_users for enumerating users). Minimum viable but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_get_noteGet noteC
Read-only
Inspect

Get a single note by id. Folk REST: GET /v1/notes/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe note id.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation already tells the agent this is a safe read, so the bar for added behavioral context is low. The description adds only a REST endpoint mapping, which is not behavioral; it says nothing about what happens when the id is unknown, whether results are cached, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose, with no padding. The REST endpoint sentence adds little value for an agent already given structured tool metadata, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with annotations covering the safety profile and no output schema, the definition is minimally complete. However, it omits any error or not-found behavior, which is the main remaining thing an agent would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single required parameter, so the schema already documents 'id' fully. The description's 'by id' restates the schema without adding format, sourcing, or valid-value detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get a single note by id'), which is unambiguous and implicitly distinguishes it from folk_list_notes by specifying a single note. It does not explicitly name a sibling or contrast with one, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool rather than folk_list_notes, nor any prerequisites or exclusions. The only implicit cue is 'single note by id', which an agent must infer on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_get_personGet personA
Read-only
Inspect

Get a single person (contact) by id. Folk REST: GET /v1/people/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe person id.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the lower bar applies. The description adds the underlying REST mapping (GET /v1/people/{id}), which is mild context, but says nothing about not-found/error behavior or the shape of the returned person beyond the word 'person (contact)'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action front-loaded and no filler. The trailing REST endpoint reference is marginally redundant for an MCP caller but is compact and does anchor the tool to a known API.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema and annotations covering the safety profile, the description is sufficient to call the tool correctly. Some detail about the returned person fields could be added, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'id' parameter is documented in the schema, so the schema carries the semantics. The description's 'by id' restates rather than extends that, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a single person (contact) by id'), and the 'single'/'by id' framing distinguishes it from the plural folk_list_people and the write-oriented folk_create_person. It stops short of naming the sibling it is not, so it is clear but not fully self-differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'by id' — the agent can infer this is the lookup path when a person id is known, versus the list tools. There is no explicit when-to-use/when-not statement or reference to alternatives, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_list_companiesList companiesA
Read-only
Inspect

List/filter companies. Supports cursor pagination and structured filters. Folk REST: GET /v1/companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-100, default 20).
cursorNoPagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page.
filterNoStructured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {"firstName":{"eq":"John"}}.
combinatorNoHow to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so safety is covered. The description then adds pagination behavior and the existence of structured filtering, and the REST endpoint implies GET/idempotent semantics. It still omits default/maximum page sizes and rate-limit behavior, but it meaningfully extends the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses front-loaded with the core verb+resource, then pagination support, then the REST endpoint. No filler and nothing redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param read-only list tool with a fully documented schema and no output schema, the description gives purpose, filtering, and pagination. It lacks any mention of what a page/response looks like or when an agent should prefer a filtered query over fetching all, but annotations plus schema cover most of the burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all four parameters (limit, cursor, filter, combinator) are fully documented in the schema, including the filter example and default values. The description only repeats 'cursor pagination and structured filters' without adding syntax or format beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list/filter) and resource (companies) and adds the underlying REST endpoint, which reinforces the resource mapping. It does not differentiate from sibling list tools (folk_list_people, folk_list_notes, folk_list_groups), but the resource name is unambiguous against the create/get/update variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Supports cursor pagination and structured filters,' implying that this tool is the collection-listing entry point, but it never states when to use it over folk_get_company or how it relates to the create/update siblings. Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_list_groupsList groupsA
Read-only
Inspect

List groups in the Folk workspace (ids needed to place people/companies). Folk REST: GET /v1/groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-100, default 20).
cursorNoPagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds the underlying REST endpoint mapping (GET /v1/groups) but says nothing about pagination behavior, result ordering, or whether all groups are returned — gaps that matter for a paginated list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler: purpose and rationale first, endpoint mapping as a trailing reference. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only list tool with no output schema, the description plus annotations cover what an agent needs; it implies group ids are returned. Minor gaps (pagination expectations, whether results are scoped) keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with limit and cursor fully documented in the schema. The description adds no parameter-level detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List groups") plus the reason they matter ("ids needed to place people/companies"), which is more than a tautology. It doesn't explicitly differentiate from siblings like folk_list_companies, though the distinct resource name makes the boundary inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "ids needed to place people/companies" implies the upstream workflow that motivates calling this tool, but there is no explicit when-to-use, when-not, or named alternative among the many list_* siblings. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_list_notesList notesA
Read-only
Inspect

List notes, optionally scoped to an entity or filtered by full text and creation date. Folk REST: GET /v1/notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-100, default 20).
queryNoFull-text search over note content.
cursorNoPagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page.
entity_idNoRestrict to notes on this entity (person/company) id — maps to query key entity.id.
created_afterNoOnly notes created after this ISO 8601 timestamp — maps to query createdAfter.
created_beforeNoOnly notes created before this ISO 8601 timestamp — maps to query createdBefore.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds only the REST endpoint mapping (GET /v1/notes) and restates the optional filters; it says nothing about pagination behavior, default page size behavior, or result ordering beyond what the schema already encodes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core verb and resource, with no filler. The trailing endpoint reference is mildly redundant but compact and potentially useful for API-level debugging.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully described schema, this is nearly sufficient; pagination is conveyed via the cursor parameter's reference to pagination.nextLink. The absence of any statement about result shape or ordering is a minor gap, not a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, query, cursor, entity_id, created_after and created_before are already fully documented. The description only paraphrases the filter set and adds no format or syntax detail (e.g. ISO 8601 semantics, cursor source), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List notes') plus its three filtering modes (entity scope, full-text, creation date), which lets an agent separate it from the single-record folk_get_note. It never names a sibling explicitly, so differentiation comes mostly from the tool name rather than the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (bulk retrieval with optional narrowing) but gives no when-to-use/when-not guidance, e.g. 'use folk_get_note when you already have a note id' or that all filters are optional. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_list_peopleList peopleA
Read-only
Inspect

List/filter people (contacts). Supports cursor pagination and structured filters. Folk REST: GET /v1/people.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-100, default 20).
cursorNoPagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page.
filterNoStructured filter: attribute → operator → value, expanded to filter[attribute][operator]=value query keys. Example: {"firstName":{"eq":"John"}}.
combinatorNoHow to combine multiple filters — 'and' (all must match) or 'or' (any). Default 'and'.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description adds only that pagination and structured filters are supported and cites the REST endpoint, without disclosing auth requirements, rate limits, or default result shape beyond what the schema covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, capability and endpoint, with zero filler and the list/filter scope front-loaded. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description could have said more about the returned page shape, but the cursor parameter already explains pagination.nextLink. For a 4-param, zero-required read tool with full schema coverage, the definition is essentially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, cursor, filter, and combinator are all fully documented in the schema itself. The description's 'cursor pagination and structured filters' adds framing but no meaning beyond the schema, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List/filter people (contacts)') and adds the mechanics it supports, so it is clearly distinct from folk_list_companies, folk_list_groups, and folk_list_users. No explicit sibling contrast sentence, which keeps it just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The listing purpose implies when to reach for it versus folk_get_person, and the mention of cursor pagination hints at multi-page retrieval, but there is no explicit when-to-use/when-not guidance or named alternative. Usage is inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_list_usersList usersA
Read-only
Inspect

List users in the Folk workspace (id, name, email) — useful for resolving owner ids. Folk REST: GET /v1/users.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (1-100, default 20).
cursorNoPagination cursor — pass the value from a previous page's pagination.nextLink to fetch the next page.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the description only needs to add context. It discloses the return fields and the underlying REST endpoint but says nothing about auth scope, rate limits, or default page size behavior beyond what the annotation and schema carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence front-loads the verb, scope, and returned fields. The trailing REST endpoint note is mildly redundant metadata but does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description helpfully enumerates the returned fields (id, name, email), filling the main gap an agent would face. Both parameters are schema-documented, so the definition is nearly complete, lacking only pagination/auth context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit and cursor are already fully documented in the schema (including the pagination.nextLink contract). The description adds no parameter meaning beyond that, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List users in the Folk workspace') and names the returned fields (id, name, email). This cleanly separates it from folk_get_current_user, which returns only the caller, so an agent can pick the right tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for resolving owner ids' gives an explicit use case, and the workspace-wide scope is implied by the resource. It stops short of naming when NOT to use it (e.g., folk_get_current_user for the caller's own profile), so no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_update_companyUpdate companyA
Destructive
Inspect

Update fields on an existing company. Only provided fields are changed; list-valued fields REPLACE the existing values. Folk REST: PATCH /v1/companies/{id}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe company id to update.
nameNoThe company name.
urlsNoReplace the company's URLs.
emailsNoReplace the company's email addresses.
groupsNoReplace the company's groups (array of {id}).
phonesNoReplace the company's phone numbers.
industryNoIndustry.
addressesNoReplace the company's addresses.
descriptionNoFreeform description / notes.
employeeRangeNoEmployee-count range bucket.
fundingRaisedNoTotal funding raised.
foundationYearNoYear the company was founded.
lastFundingDateNoDate of last funding round, formatted YYYY-MM-DD.
customFieldValuesNoCustom field values, keyed by field.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond the destructiveHint annotation: partial-update semantics ('Only provided fields are changed') and the destructive list-replacement rule ('list-valued fields REPLACE the existing values'), plus the underlying REST verb. It still omits permission/auth requirements and error behavior on an unknown id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero waste: the update scope, the two mutation rules, and the endpoint. The most decision-relevant fact (partial update, list replacement) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter PATCH tool with no output schema, the description covers the two semantics an agent would otherwise get wrong (partial update, list replacement). Missing only operational details such as auth needs and failure handling, which is minor given full schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented, including the per-field 'Replace the company's ...' notes. The description's generalization about list replacement is useful reinforcement but adds no syntax or format detail the schema lacks, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update fields on an existing company', which clearly separates it from folk_create_company and folk_get_company. It does not name siblings explicitly, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no exclusions; nothing tells the agent when to pick this over folk_update_person or when a create/merge would be more appropriate. Usage is only inferable from the name and the required 'id' parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folk_update_personUpdate personA
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe person id to update.
urlsNoReplace the person's URLs.
emailsNoReplace the person's email addresses.
genderNoGender — one of Male, Female, Unknown, Other.
groupsNoReplace the person's groups (array of {id}).
phonesNoReplace the person's phone numbers.
birthdayNoBirthday, formatted YYYY-MM-DD.
fullNameNoFull name.
jobTitleNoJob title.
lastNameNoLast name.
addressesNoReplace the person's addresses.
companiesNoReplace the person's linked companies (array of {id} or {name}).
firstNameNoFirst name.
descriptionNoFreeform description / notes.
customFieldValuesNoCustom field values, keyed by field.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply destructiveHint=true, so the description carries real weight here and delivers the most important behavioral fact: list-valued fields (emails, phones, groups, companies) REPLACE existing values rather than merging, while omitted fields are left untouched. That replacement warning is exactly what an agent needs before calling a destructive PATCH, though auth requirements and failure behavior are still unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the mutation and its replacement caveat, ending with the API endpoint. Nothing redundant and nothing missing that belongs here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation tool with no output schema and only destructiveHint in annotations, the description covers the critical partial-update and replacement semantics that could otherwise silently destroy data. Missing only secondary details such as permissions, error responses, and whether the update is atomic.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value the per-field schema text does not: the aggregate rule that only supplied fields mutate and that all list-valued parameters are wholesale replacements. It still adds no format or validation detail beyond the schema, so it does not reach a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update fields on an existing person') and even pins the underlying REST operation (PATCH /v1/people/{id}), which clearly separates it from folk_create_person and folk_get_person. It stops short of naming those siblings explicitly, so an agent still infers the routing rather than reading it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Only provided fields are changed' clause implies a partial-update use case, but there is no explicit when-to-use / when-not-to-use guidance and no named alternative (e.g. use create for new people). Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updates
    • Changedfolk_create_company5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / foundationYear / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / foundationYear / type
        Added value: +[
        +  "string",
        +  "number"
        +]
      • removedInput schema / properties / fundingRaised / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / fundingRaised / type
        Added value: +[
        +  "string",
        +  "number"
        +]
    • Changedfolk_create_note1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_create_person1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_get_company1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_get_current_user1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_get_note1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_get_person1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_list_companies3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / filter / additionalProperties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / filter / additionalProperties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedfolk_list_groups1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_list_notes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_list_people3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / filter / additionalProperties / additionalProperties / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]
      • addedInput schema / properties / filter / additionalProperties / additionalProperties / type
        Added value: +[
        +  "string",
        +  "number",
        +  "boolean"
        +]
    • Changedfolk_list_users1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfolk_update_company5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / foundationYear / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / foundationYear / type
        Added value: +[
        +  "string",
        +  "number"
        +]
      • removedInput schema / properties / fundingRaised / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / fundingRaised / type
        Added value: +[
        +  "string",
        +  "number"
        +]
    • Changedfolk_update_person1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 14 tool updates
    • First observedfolk_create_company
    • First observedfolk_create_note
    • First observedfolk_create_person
    • First observedfolk_get_company
    • First observedfolk_get_current_user
    • First observedfolk_get_note
    • First observedfolk_get_person
    • First observedfolk_list_companies
    • First observedfolk_list_groups
    • First observedfolk_list_notes
    • First observedfolk_list_people
    • First observedfolk_list_users
    • First observedfolk_update_company
    • First observedfolk_update_person

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Interact with Folk CRM to manage people, companies, groups, and notes via MCP tools.
    4
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants like Claude to read and write contacts, relationships, and interactions in a personal CRM via a graph-based API.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects Twenty CRM with AI assistants like Claude, enabling natural language interactions with customer data. Supports CRUD operations for people, companies, tasks, notes, and advanced search.
    21 npm
    105
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.