بنقرة واحدة
Create or update tasks and lists in ClickUp
npx skills add https://github.com/ferosai/feros --skill clickupانسخ والصق هذا الأمر في Claude Code لتثبيت المهارة
Create or update tasks and lists in ClickUp
npx skills add https://github.com/ferosai/feros --skill clickupانسخ والصق هذا الأمر في Claude Code لتثبيت المهارة
Read or update contacts, opportunities, notes, and conversations in GoHighLevel
Save or retrieve records from Airtable bases
Send emails, SMS, or manage contacts via Brevo (formerly Sendinblue)
Manage bookings, availability, and event types in Cal.com
Check availability, create scheduling links, or list upcoming events in Calendly
Call any custom HTTPS endpoint
| name | clickup |
| display_name | ClickUp |
| description | Create or update tasks and lists in ClickUp |
| auth_type | oauth2 |
| category | productivity |
When the user wants their voice agent to create or manage tasks in ClickUp. Common triggers:
Check connection via check_connection("clickup").
If not connected: Use secret("clickup") in tool scripts. The system
will automatically emit the correct action card based on the platform
configuration. Do NOT emit action cards manually.
Discover workspace and lists (ClickUp supports auto-discovery):
api_call("clickup", "GET", "/api/v2/team") → list workspaces (teams) with IDsapi_call("clickup", "GET", "/api/v2/team/{team_id}/space") → list spacesapi_call("clickup", "GET", "/api/v2/space/{space_id}/list") → list task listsUse the real list ID in the tool config.
If discovery fails, ask the user to copy the list ID from the ClickUp URL.
{
"name": "clickup.create_task",
"description": "Create a follow-up task in ClickUp after a call",
"params": [
{"name": "name", "description": "Task name or title", "type": "string", "required": true},
{"name": "description", "description": "Task description or notes from the call", "type": "string", "required": false},
{"name": "list_id", "description": "ClickUp list ID to create the task in", "type": "string", "required": true}
],
"script": "let key = secret('clickup');\nlet body = {name: name};\nif (description) body.description = description;\nlet resp = http_post_h('https://api.clickup.com/api/v2/list/' + list_id + '/task', body, {'Authorization': 'Bearer ' + key, 'Content-Type': 'application/json'});\nif (resp.status >= 200 && resp.status < 300) { return 'Task created.'; }\nthrow new Error(`ClickUp ${resp.status}: ${resp.body}`);",
"side_effect": true
}
secret("clickup") for credentialsapi_call to discover the list ID instead of asking the userthrow using resp.status/resp.body