folk CLI
Use folkctl to inspect and update folk.app CRM data through its REST API. Covers people, companies, groups, members, custom fields, deals, custom objects, users, notes, tasks, inte…
j-edel
@j-edel
Install
$ openclaw skills install @j-edel/folk-clifolk CLI skill
Use this skill when the user wants to work with folk.app CRM data through the first-party folk API and does not want a third-party connector.
Tooling
The CLI command is folkctl. It is designed for OpenClaw-style agent use:
--jsonfor machine-readable output--dry-runbefore mutations when you need to preview requests--allto follow pagination--no-inputto fail instead of prompting--yesor--forceonly when the user has explicitly confirmed deletion
Never print, log, or include FOLK_API_KEY in responses. Prefer environment variables over stored config in automated environments.
First checks
Run these before doing unfamiliar work:
folkctl --version
folkctl api ls
folkctl api docs people.list
folkctl people --help
When a command is missing or the schema is unclear, use the generic escape hatch:
folkctl api request GET /v1/users/me --json
folkctl api request POST /v1/people --data '{"firstName":"Ada"}' --dry-run --json
Authentication
For OpenClaw, expect FOLK_API_KEY to be set in the environment:
export FOLK_API_KEY="fk_live_..."
folkctl auth status
For local setup:
printf '%s' "$FOLK_API_KEY" | folkctl auth login --token-stdin
Common tasks
List or search people
folkctl people list --limit 20 --json
folkctl people search "Ada Lovelace" --json
folkctl people list --filter fullName:like:Ada --json
Create a person
Preview first:
folkctl people create \
--first-name Ada \
--last-name Lovelace \
--email ada@example.com \
--group-id grp_123 \
--dry-run --json
Then run without --dry-run once confirmed.
Create or update companies
folkctl companies create --name "Acme Inc" --url https://acme.example --group-id grp_123 --dry-run --json
folkctl companies update com_123 --name "Acme Corporation" --dry-run --json
Discover groups and custom fields
folkctl groups list --json
folkctl groups fields grp_123 person --json
folkctl groups fields grp_123 company --json
folkctl groups fields grp_123 Deals --json
folkctl groups members list grp_123 --json
folkctl groups fields get grp_123 person "Status" --json
folkctl groups create --name "Partners" --visibility private --dry-run --json
folkctl groups members add grp_123 usr_123 --role reader --dry-run --json
folkctl groups fields create grp_123 person --name "Region" --type textField --dry-run --json
Use groups fields update with raw JSON for addOptions, updateOptions, and removeOptions. Removing options also removes their associated contact data and requires the same confirmation as deletion. Names containing spaces must be quoted.
Deals
folk deals are addressed under a group and an object type, usually the name of the deal object field, for example Deals.
folkctl deals list --group-id grp_123 --object-type Deals --json
folkctl deals create --group-id grp_123 --object-type Deals --name "Project Alpha" --company-id com_123 --person-id per_123 --custom Status=Active --dry-run --json
folkctl objects list --group-id grp_123 --object-type Projects --json
folkctl objects create --group-id grp_123 --object-type Projects --name "Website launch" --dry-run --json
objects exposes the same API for any custom object type. Discover the exact group and object type names before creating or updating records.
Notes and interaction history
folkctl notes create --entity-id per_123 --content "Met at SaaStr. Follow up next week." --visibility private --dry-run --json
folkctl notes search "contract renewal" --created-after 2026-08-01T00:00:00Z --all --json
folkctl interactions past --entity-id per_123 --all --json
folkctl interactions upcoming --entity-id per_123 --json
folkctl interactions get lit_123 --entity-id per_123 --json
folkctl interactions create --entity-id per_123 --date-time 2026-09-06T09:00:00.000Z --title "Coffee" --content "Discussed the new project." --activity-type coffee --dry-run --json
folkctl interactions update lit_123 --entity-id per_123 --content "Updated notes." --dry-run --json
Interaction history and editing are in open beta. Reads need the linked entity ID; update needs it in the body (--entity-id constructs it). Only manually logged interactions can be updated or deleted. Imported email, calendar, and WhatsApp content may be hidden by workspace privacy rules; missing content is not evidence that an interaction never occurred.
Tasks and follow-ups
folkctl tasks list --only-assigned-to-me --empty completedAt --all --json
folkctl tasks list --entity-id per_123 --filter dueAt:lt:2026-09-30 --json
folkctl tasks create --entity-id per_123 --title "Follow up" --due-at 2026-09-08 --due-time 09:00 --is-public=false --dry-run --json
folkctl tasks update tsk_123 --due-at 2026-09-10 --description "Review the proposal." --dry-run --json
folkctl tasks done tsk_123 --completed-at 2026-09-08T14:00:00Z --dry-run --json
folkctl tasks todo tsk_123 --dry-run --json
Use real user-supplied dates and identifiers. dueAt is a date, dueTime is an optional HH:mm time, and recurrenceFrequency is weekday, weekly, biweekly, monthly, quarterly, yearly, or null. Tasks default to public in the API; set --is-public=false when a private task is intended. Completion is a deliberate POST action; do not send completedAt through tasks update or mark work complete merely because its due date has passed.
Task --entity-id uses filter[entity][in]; task text search is not supported. Existing reminders commands remain available but are deprecated and are not automatically migrated. Folk's sunset documentation differs between February 11 and 13, 2027; migrate before the earlier date and consult the live endpoint's Sunset header and migration guide.
Official MCP setup
folkctl mcp info --json
folkctl mcp config codex
folkctl mcp config cursor
These commands print offline setup snippets for https://mcp.folk.app/mcp. Merge them with existing client configuration and authenticate through the client's OAuth flow. The REST API key is separate from MCP authentication. folkctl does not execute MCP tools or run an MCP server. For current tools and schemas, use Folk's MCP reference.
Webhooks
folkctl webhooks list --json
folkctl webhooks create --name "My app" --target-url https://example.com/webhook --event person.created --dry-run --json
Safety rules
Before create/update/delete commands, prefer --dry-run --json and summarize the exact resource, method, path, and body for the user.
For deletes, do not pass --yes or --force unless the user explicitly asks to delete the exact record. If the user has not confirmed, run a dry-run or ask for confirmation.
If the API returns 401/403, tell the user to verify or rotate FOLK_API_KEY. Do not ask them to paste secrets into chat.
Installation hint
Skill 0.2.2 targets CLI 0.2.1. If folkctl is missing, install the immutable CLI source used in v0.2.1, including the task boolean validation fix:
npm install -g --ignore-scripts github:j-edel/folkctl#4a9c2af28427432beee018561f5f43e3ecfc2645
folkctl --version
The expected CLI version is 0.2.1. The commit pin fixes the installed source even if the default branch or release tag changes. Its CLI source and package metadata match the release tag; the tag also includes this updated companion skill. This release has no runtime dependencies or installation lifecycle scripts. Complete installation and check the version before making FOLK_API_KEY available to the CLI.
Top skills in this category
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, etc.
HubSpot
@hith3shHubSpot CRM API integration with managed OAuth. Manage contacts, companies, deals, pipelines, tickets, products, line items, marketing emails, and workflows....
Master Marketing
@tevfikgulepAll-in-one marketing engine combining growth strategy, content remixing, and trend monitoring. Drive growth with data-driven strategies, repurposed content across all platforms, and real-time trend analysis.
Feishu Bridge
@alexanysConnect a Feishu (Lark) bot to Clawdbot via WebSocket long-connection. No public server, domain, or ngrok required. Use when setting up Feishu/Lark as a messaging channel, troubleshooting the Feishu bridge, or managing the bridge service (start/stop/logs). Covers bot creation on Feishu Open Platform, credential setup, bridge startup, macOS launchd auto-restart, and group chat behavior tuning.
Zoho CRM
@byungkyuZoho CRM API integration with managed OAuth. Manage leads, contacts, accounts, deals, and other CRM records. Use this skill when users want to read, create, update, or delete CRM records, search contacts, manage sales pipelines, access organization settings, manage users, or retrieve module metadata in Zoho CRM. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key. Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Zoho CRM connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Zoho CRM action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Zoho CRM examples; they add no Zoho CRM capability - Zoho CRM is not an event source, a trigger cannot read Zoho CRM data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).