Manage tasks, CRM leads, contacts, and settings via the DashTask REST API
Scanned 9/6/2026
Install to Claude Code
npx -y skills add LeoYeAI/openclaw-master-skills --skill dashtask-taskmanager-crm-dashboards-bots-humans --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dashtask Taskmanager Crm Dashboards Bots Humans?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/leoyeai-dashtask-taskmanager-crm-dashboards-bots-humans)More formats (shields.io, HTML) on the badges page.
---
name: dashtask
version: "1.9.1"
description: Manage tasks, CRM leads, contacts, and settings via the DashTask REST API
homepage: https://dashtask.ai
metadata:
clawdbot:
emoji: "✅"
requires:
env:
- DASHTASK_API_KEY
- DASHTASK_ENDPOINT
primaryEnv: "DASHTASK_API_KEY"
---
> **Note:** This file is for **API Key (OpenClaw / custom bot)** setups only.
> For the ChatGPT OAuth GPT Builder setup, see `/dashtask-gpt-oauth/`.
# DashTask Agent API — Skills File (API Key Setup)
## Overview
DashTask is a collaborative task management and CRM platform. Each organization has its own tasks, projects, CRM leads, contacts, companies, activities, quotes, and configurable dimensions. AI agents interact with DashTask via a single REST endpoint.
## Quick Start
### 1. Get Organization Context (call ONCE per conversation — never repeat in the same session)
```bash
curl -s -X POST "$DASHTASK_ENDPOINT" \
-H "X-API-Key: $DASHTASK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action": "get_org_context"}'
```
### 2. List Tasks
```bash
curl -s -X POST "$DASHTASK_ENDPOINT" \
-H "X-API-Key: $DASHTASK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action": "list_tasks", "filters": {"status": "open", "limit": 20}}'
```
### 3. Create a Task
```bash
curl -s -X POST "$DASHTASK_ENDPOINT" \
-H "X-API-Key: $DASHTASK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action": "create_task", "title": "Follow up with client", "urgency": 7}'
```
### 4. Create a CRM Lead
```bash
curl -s -X POST "$DASHTASK_ENDPOINT" \
-H "X-API-Key: $DASHTASK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"action": "create_lead", "lead_name": "Acme Corp", "lead_status": "new_lead", "priority": 5}'
```
See the full [Actions Reference](#actions-reference) below for all 60+ available actions.
## Authentication
This integration uses an **API Key** passed in the `X-API-Key` header. Set it once in your environment:
```bash
export DASHTASK_API_KEY="your_key_here"
export DASHTASK_ENDPOINT="https://fgkytboizxksqustdfuc.supabase.co/functions/v1/agent-api"
```
All requests must include:
```
POST $DASHTASK_ENDPOINT
Content-Type: application/json
X-API-Key: $DASHTASK_API_KEY
```
Generate your key in DashTask → **Settings → Team → Invite AI Agent**. The key is scoped to specific permissions at the time of creation.
### Scopes
- `tasks` — Tasks, projects, assignees, tags, discussions, notifications, team members
- `crm` — Leads, contacts, companies, activities, quotes, lead discussions
- `settings` — Dimension management (categories, entities, departments, types, tags, CRM dimensions)
## Request Format
All requests are `POST` with a JSON body. All fields are **top-level** (no nesting under `params`):
```json
{
"action": "<action_name>",
"title": "My task title",
"id": "<uuid>",
"filters": { ... }
}
```
- `action` (required): The operation to perform
- All create/update fields go at the top level alongside `action`
- `id`: UUID of the record for update/delete operations
- `filters`: Optional filters for list operations
## Response Format
```json
{
"success": true,
"data": { ... }
}
```
On error:
```json
{
"success": false,
"error": "Description of what went wrong"
}
```
---
## IMPORTANT: Discovery-First Pattern
**Dimensions are dynamic.** Organizations can add, rename, and remove dimension options at any time. Before creating or updating tasks/leads, you must discover what values are valid for this organization.
### Recommended: `get_org_context` (call ONCE per conversation session, never again)
Call `get_org_context` **only on your very first message in a conversation**. Store the result in your memory for the entire session.
> **RULE: If you have already called `get_org_context` at any point in this conversation, DO NOT call it again. Use the cached response you already have. This applies to every subsequent message in the same session.**
**Decision logic (follow strictly):**
1. Has `get_org_context` been called earlier in this conversation? → **Use cached data. Skip the call entirely.**
2. Is this the very first message in the conversation? → **Call `get_org_context` once, then cache.**
3. Did the API return an "Invalid dimension" error? → **Call `get_org_context` once to refresh, then stop.**
**NEVER call `get_org_context`:**
- Before every action or tool call
- When the user asks a follow-up question
- When checking task status or listing tasks
- In the same conversation where it was already called
**Only call `get_org_context` again if:**
- You receive an "Invalid dimension" or "Invalid entity" error from the API
- It has been more than 24 hours since the last call in a long-running session
The response includes:
- `projects` — all active projects with IDs
- `task_dimensions` — entity, category, department, type options
- `custom_task_dimensions` — custom dimension types and their items
- `crm_dimensions` — lead_source, industry, lead_quality, lead_action_status options
- `lead_stages` — pipeline stages
- `team_members` — IDs, names, emails
- `tags` — tag IDs and names
- `dimension_visibility` — which dimensions are visible/hidden
- `fetched_at` — ISO timestamp for cache expiry tracking
### Alternative: Individual Discovery Calls
You can still call individual discovery actions if you only need a specific subset:
If you provide an invalid dimension value, the API returns an error with the list of valid options so you can self-correct.
---
## Actions Reference
### Discovery Actions
#### `get_org_context`
**Scope:** any (tasks, crm, or settings) — returns data scoped to your permissions
Returns all organization context in a single call. **Recommended for first call — cache the result.**
#### `list_task_dimensions`
**Scope:** tasks
Lists the 4 fixed task dimensions (entity, category, department, type) with their current options.
#### `list_custom_task_dimensions`
**Scope:** tasks
Lists custom dimension types (max 4 per org) and their items.
#### `list_crm_dimensions`
**Scope:** crm
Lists CRM dimension types (lead_source, industry, lead_quality, lead_action_status) with options.
#### `list_lead_stages`
**Scope:** crm
Lists custom lead pipeline stages for the organization.
#### `list_dimension_visibility`
**Scope:** settings
Returns which dimensions are visible/hidden for the organization.
---
### Task Actions
#### `list_tasks`
**Scope:** tasks | **Filters:** `status`, `project_id`, `limit`
#### `create_task`
**Scope:** tasks
```json
{
"action": "create_task",
"title": "Follow up with client",
"description": "Send proposal draft",
"status": "open",
"urgency": 7,
"entity": "acme_corp",
"category": "marketing",
"department": "sales",
"task_type": "task",
"project_id": "uuid-or-null",
"parent_task_id": "uuid-or-null",
"due_date": "2026-03-01",
"start_date": "2026-02-15",
"estimated_cost": 500,
"sales": 1000,
"hours": 4,
"budget_hours": 8
}
```
**Fields:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| title | string | Yes | Task title |
| description | string | No | Task description |
| status | string | No | `open`, `in-progress`, `approval`, or `done` (default: `open`) |
| urgency | integer | No | 1-10 scale, 10 = most urgent (default: 5) |
| entity | string | No | Must be valid entity name (discover via `list_task_dimensions`) |
| category | string | No | Must be valid category name |
| department | string | No | Must be valid department name |
| type | string | No | Must be valid type name |
| project_id | uuid | No | Associate with a project |
| parent_task_id | uuid | No | Parent task UUID — creates this as a subtask |
| due_date | string | No | ISO date |
| start_date | string | No | ISO date |
| estimated_cost | number | No | Estimated cost |
| sales | number | No | Sales value |
| hours | number | No | Hours spent |
| budget_hours | number | No | Budgeted hours |
#### `update_task`
**Scope:** tasks | **Requires:** `id`
Same fields as create_task (including `parent_task_id`). Only include fields you want to change.
#### `delete_task`
**Scope:** tasks | **Requires:** `id`
#### `list_subtasks`
**Scope:** tasks | **Requires:** `parent_task_id` or `id` (parent task UUID)
Returns all subtasks of a given parent task.
```json
{ "action": "list_subtasks", "parent_task_id": "uuid" }
```
#### `assign_task`
**Scope:** tasks
```json
{ "action": "assign_task", "task_id": "uuid", "team_member_id": "uuid" }
```
#### `unassign_task`
**Scope:** tasks
```json
{ "action": "unassign_task", "task_id": "uuid", "team_member_id": "uuid" }
```
#### `list_task_assignees`
**Scope:** tasks | **Requires:** `id` (task id)
#### `add_task_tag`
**Scope:** tasks
```json
{ "action": "add_task_tag", "task_id": "uuid", "tag_id": "uuid" }
```
#### `remove_task_tag`
**Scope:** tasks
#### `add_task_discussion`
**Scope:** tasks
```json
{ "action": "add_task_discussion", "task_id": "uuid", "message": "Progress update: completed phase 1" }
```
---
### Project Actions
#### `list_projects`
**Scope:** tasks
#### `create_project`
**Scope:** tasks
```json
{ "action": "create_project", "name": "Q1 Campaign", "description": "Marketing campaign" }
```
#### `update_project`
**Scope:** tasks | **Requires:** `id`
#### `archive_project`
**Scope:** tasks | **Requires:** `id`
---
### CRM Lead Actions
#### `list_leads`
**Scope:** crm | **Filters:** `lead_status`, `deal_status`, `lead_stage`, `limit`
#### `create_lead`
**Scope:** crm
```json
{
"action": "create_lead",
"lead_name": "Acme Corp Deal",
"lead_status": "new_lead",
"lead_stage": "new_existing",
"deal_status": "active",
"priority": 5,
"email": "contact@acme.com",
"phone": "+1234567890",
"lead_source": "website",
"probability": 50,
"annual_deal_value": 50000
}
```
**Fixed enum fields:**
| Field | Values |
|-------|--------|
| lead_status | `existing_customer`, `new_lead`, `attempted_contact`, `contacted`, `unqualified`, `qualified` |
| lead_stage | `new_existing`, `demo_discovery`, `proposal_quote`, `negotiation_asks`, `closed_lost`, `closed_won` |
| deal_status | `active`, `won`, `lost`, `stale` |
**Dynamic fields (discover via `list_crm_dimensions`):**
- `lead_source` — e.g., "website", "referral" (org-specific)
- `lead_action_status` — org-specific action statuses
| Field | Type | Description |
|-------|------|-------------|
| lead_name | string | Required. Lead/deal name |
| priority | integer | 1-5 scale |
| probability | integer | 0-100 win probability |
| monthly_deal_value | number | Monthly recurring value |
| annual_deal_value | number | Annual deal value |
| one_time_deal_value | number | One-time payment value |
| lifetime_deal_value | number | Total lifetime value |
| next_steps | string | Next action description |
| next_step_date | string | ISO date for next action |
| company_id | uuid | Link to company |
| primary_contact_id | uuid | Link to primary contact |
| assignee_id | uuid | Team member UUID |
| timezone | string | IANA timezone |
#### `update_lead`
**Scope:** crm | **Requires:** `id`
#### `delete_lead`
**Scope:** crm | **Requires:** `id`
#### `assign_lead` / `unassign_lead`
**Scope:** crm
```json
{ "action": "assign_lead", "lead_id": "uuid", "team_member_id": "uuid" }
```
#### `add_lead_party` / `remove_lead_party`
**Scope:** crm
#### `add_lead_discussion`
**Scope:** crm
```json
{ "action": "add_lead_discussion", "lead_id": "uuid", "message": "Client requested revised timeline" }
```
---
### CRM Company Actions
#### `list_companies` / `create_company` / `update_company` / `delete_company`
**Scope:** crm
```json
{
"action": "create_company",
"company_name": "Acme Corp",
"website": "https://acme.com",
"industry": "Technology",
"employee_count": 500,
"headquarters": "New York, NY"
}
```
---
### CRM Contact Actions
#### `list_contacts` / `create_contact` / `update_contact` / `delete_contact`
**Scope:** crm
```json
{
"action": "create_contact",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@acme.com",
"phone": "+1234567890",
"title": "VP Sales",
"priority": "high",
"company_id": "uuid"
}
```
| Field | Values |
|-------|--------|
| priority | `low`, `medium`, `high` |
---
### CRM Activity Actions
#### `list_activities`
**Scope:** crm | **Filters:** `lead_id`, `contact_id`, `company_id`, `type`, `limit`
#### `create_activity`
**Scope:** crm
```json
{
"action": "create_activity",
"activity_type": "call",
"direction": "outbound",
"subject": "Discovery call",
"content": "Discussed requirements and timeline",
"lead_id": "uuid",
"contact_id": "uuid"
}
```
| Field | Values |
|-------|--------|
| type | `email`, `call`, `text`, `demo`, `meeting`, `note` |
| direction | `inbound`, `outbound` |
---
### CRM Quote Actions
#### `list_quotes` / `create_quote` / `update_quote`
**Scope:** crm
```json
{
"action": "create_quote",
"lead_id": "uuid",
"plan": "Enterprise",
"seats": 50,
"billing_cycle": "annual",
"price": 25000,
"status": "draft"
}
```
| Field | Values |
|-------|--------|
| status | `draft`, `sent`, `accepted`, `rejected` |
| billing_cycle | `monthly`, `annual`, `one-time` |
---
### Communication Actions
#### `send_nudge`
**Scope:** tasks
Sends a nudge email to a team member about a specific task.
```json
{
"action": "send_nudge",
"task_id": "uuid",
"recipient_email": "john@example.com",
"recipient_name": "John Doe",
"sender_name": "Sales Bot",
"tone": "professional"
}
```
#### `send_crm_email`
**Scope:** crm
Sends an email related to a CRM lead.
```json
{
"action": "send_crm_email",
"lead_id": "uuid",
"recipient_email": "client@acme.com",
"subject": "Follow-up on our discussion",
"body": "Hi, just following up..."
}
```
---
### Settings & Dimension Management Actions
#### `list_tags` / `create_tag`
**Scope:** settings
#### `create_task_dimension_option`
**Scope:** settings
Add a new option to entity, category, department, or type.
```json
{
"action": "create_task_dimension_option",
"dimension": "entity",
"name": "new_client",
"label": "New Client"
}
```
#### `delete_task_dimension_option`
**Scope:** settings | **Requires:** `id`, `dimension`
#### `create_custom_task_dimension`
**Scope:** settings (max 4 per org)
```json
{
"action": "create_custom_task_dimension",
"name": "region",
"label": "Region"
}
```
#### `delete_custom_task_dimension`
**Scope:** settings | **Requires:** `id`
#### `create_custom_task_dimension_item` / `delete_custom_task_dimension_item`
**Scope:** settings
#### `create_crm_dimension_option`
**Scope:** settings
```json
{
"action": "create_crm_dimension_option",
"dimension_type": "lead_source",
"name": "linkedin",
"label": "LinkedIn"
}
```
#### `update_crm_dimension_option` / `delete_crm_dimension_option`
**Scope:** settings (locked options cannot be deleted)
---
### Team & Notification Actions
#### `list_team_members`
**Scope:** tasks (read-only)
#### `create_notification`
**Scope:** tasks
```json
{
"action": "create_notification",
"user_id": "uuid",
"title": "New task assigned",
"message": "You've been assigned to 'Follow up with client'",
"type": "info"
}
```
---
## Restricted Actions (Bot Cannot)
- Transfer admin privileges
- Change member roles
- Manage billing or subscriptions
- Access platform admin operations
- Delete the organization
- Access data outside the authorized organization
---
## Error Handling
**Invalid dimension value:**
```json
{
"success": false,
"error": "Invalid entity 'xyz'. Valid values: [\"acme_corp\", \"beta_inc\"]"
}
```
**Missing scope:**
```json
{
"success": false,
"error": "Missing scope: crm"
}
```
**Missing required field:**
```json
{
"success": false,
"error": "title is required"
}
```
## Rate Limiting
Be respectful of API usage. Recommended: max 60 requests per minute per key.
## Workflow Examples
### Full Lead Lifecycle
1. `get_org_context` — **first message only** — discover all dimensions, stages, and team members (cache for entire session)
2. `create_company` — create the company
3. `create_contact` — create the primary contact
4. `create_lead` — create the lead linked to company and contact
5. `create_activity` — log a discovery call
6. `update_lead` — update stage to `demo_discovery`
7. `create_quote` — generate a quote
8. `update_lead` — update stage to `proposal_quote`, set probability
9. `add_lead_discussion` — add internal notes
10. `send_crm_email` — send follow-up email
### Task Management Pipeline
1. `get_org_context` — **first message only** — discover all dimensions, projects, and team members (cache for entire session)
2. `create_project` — create a project
4. `create_task` — create tasks within the project
5. `assign_task` — assign team members
6. `send_nudge` — nudge assignees about overdue tasks
7. `update_task` — mark as done
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!