← 返回
数据分析 Key 中文

Dashtask.ai - Task/Project manager and CRM built for AI Agents and Humans to work together.

Manage tasks, CRM leads, contacts, and settings via the DashTask REST API
通过 DashTask REST API 管理任务、CRM 线索、联系人和设置。
sstrohl223
数据分析 clawhub v1.9.1 1 版本 100000 Key: 需要
★ 0
Stars
📥 554
下载
💾 12
安装
1
版本
#latest

概述

> 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)

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

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

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

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 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:

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):

{
  "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

{
  "success": true,
  "data": { ... }
}

On error:

{
  "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

{
  "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:

FieldTypeRequiredDescription
------------------------------------
titlestringYesTask title
descriptionstringNoTask description
statusstringNoopen, in-progress, approval, or done (default: open)
urgencyintegerNo1-10 scale, 10 = most urgent (default: 5)
entitystringNoMust be valid entity name (discover via list_task_dimensions)
categorystringNoMust be valid category name
departmentstringNoMust be valid department name
typestringNoMust be valid type name
project_iduuidNoAssociate with a project
parent_task_iduuidNoParent task UUID — creates this as a subtask
due_datestringNoISO date
start_datestringNoISO date
estimated_costnumberNoEstimated cost
salesnumberNoSales value
hoursnumberNoHours spent
budget_hoursnumberNoBudgeted 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.

{ "action": "list_subtasks", "parent_task_id": "uuid" }

assign_task

Scope: tasks

{ "action": "assign_task", "task_id": "uuid", "team_member_id": "uuid" }

unassign_task

Scope: tasks

{ "action": "unassign_task", "task_id": "uuid", "team_member_id": "uuid" }

list_task_assignees

Scope: tasks | Requires: id (task id)

add_task_tag

Scope: tasks

{ "action": "add_task_tag", "task_id": "uuid", "tag_id": "uuid" }

remove_task_tag

Scope: tasks

add_task_discussion

Scope: tasks

{ "action": "add_task_discussion", "task_id": "uuid", "message": "Progress update: completed phase 1" }

Project Actions

list_projects

Scope: tasks

create_project

Scope: tasks

{ "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

{
  "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:

FieldValues
---------------
lead_statusexisting_customer, new_lead, attempted_contact, contacted, unqualified, qualified
lead_stagenew_existing, demo_discovery, proposal_quote, negotiation_asks, closed_lost, closed_won
deal_statusactive, 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
FieldTypeDescription
--------------------------
lead_namestringRequired. Lead/deal name
priorityinteger1-5 scale
probabilityinteger0-100 win probability
monthly_deal_valuenumberMonthly recurring value
annual_deal_valuenumberAnnual deal value
one_time_deal_valuenumberOne-time payment value
lifetime_deal_valuenumberTotal lifetime value
next_stepsstringNext action description
next_step_datestringISO date for next action
company_iduuidLink to company
primary_contact_iduuidLink to primary contact
assignee_iduuidTeam member UUID
timezonestringIANA timezone

update_lead

Scope: crm | Requires: id

delete_lead

Scope: crm | Requires: id

assign_lead / unassign_lead

Scope: crm

{ "action": "assign_lead", "lead_id": "uuid", "team_member_id": "uuid" }

add_lead_party / remove_lead_party

Scope: crm

add_lead_discussion

Scope: crm

{ "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

{
  "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

{
  "action": "create_contact",
  "first_name": "Jane",
  "last_name": "Doe",
  "email": "jane@acme.com",
  "phone": "+1234567890",
  "title": "VP Sales",
  "priority": "high",
  "company_id": "uuid"
}
FieldValues
---------------
prioritylow, medium, high

CRM Activity Actions

list_activities

Scope: crm | Filters: lead_id, contact_id, company_id, type, limit

create_activity

Scope: crm

{
  "action": "create_activity",
  "activity_type": "call",
  "direction": "outbound",
  "subject": "Discovery call",
  "content": "Discussed requirements and timeline",
  "lead_id": "uuid",
  "contact_id": "uuid"
}
FieldValues
---------------
typeemail, call, text, demo, meeting, note
directioninbound, outbound

CRM Quote Actions

list_quotes / create_quote / update_quote

Scope: crm

{
  "action": "create_quote",
  "lead_id": "uuid",
  "plan": "Enterprise",
  "seats": 50,
  "billing_cycle": "annual",
  "price": 25000,
  "status": "draft"
}
FieldValues
---------------
statusdraft, sent, accepted, rejected
billing_cyclemonthly, annual, one-time

Communication Actions

send_nudge

Scope: tasks

Sends a nudge email to a team member about a specific task.

{
  "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.

{
  "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.

{
  "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)

{
  "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

{
  "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

{
  "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:

{
  "success": false,
  "error": "Invalid entity 'xyz'. Valid values: [\"acme_corp\", \"beta_inc\"]"
}

Missing scope:

{
  "success": false,
  "error": "Missing scope: crm"
}

Missing required field:

{
  "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_contextfirst 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_contextfirst message only — discover all dimensions, projects, and team members (cache for entire session)
  2. create_project — create a project
  3. create_task — create tasks within the project
  4. assign_task — assign team members
  5. send_nudge — nudge assignees about overdue tasks
  6. update_task — mark as done

版本历史

共 1 个版本

  • v1.9.1 当前
    2026-03-30 12:03 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

Data Analysis

ivangdavila
{"answer":"数据分析与可视化。查询数据库、生成报告、自动化电子表格,将原始数据转化为清晰可行的见解。适用于:(1) 您……"}
★ 198 📥 64,859
data-analysis

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 162 📥 59,675
data-analysis

Stock Analysis

udiedrichsen
{"answer":"基于雅虎财经数据,分析股票与加密货币。支持投资组合管理、自选股预警、股息分析、8维评分、热门趋势扫描及传闻/早期信号探测。适用于股票分析、持仓追踪、财报异动、加密监控、热门股追踪或提前发掘非主流传闻。"}
★ 269 📥 56,891