Skip to main content
Glama
README.md
# dart-query

MCP server for [Dart AI](https://dartai.com) task management, optimized for batch operations and minimal context usage.

Instead of looping through tasks one-by-one (filling your context window with intermediate JSON), dart-query uses DartQL selectors and server-side batch operations to update hundreds of tasks in a single call. A 50-task update that would normally consume ~30K tokens takes ~200 tokens with zero context rot.

## Quick Start

### 1. Get Your Dart AI Token

Visit https://app.dartai.com/?settings=account and copy your token (starts with `dsa_`).

### 2. Configure MCP

**npx (recommended)**

```json
{
  "mcpServers": {
    "dart-query": {
      "command": "npx",
      "args": ["-y", "@standardbeagle/dart-query"],
      "env": {
        "DART_TOKEN": "dsa_your_token_here"
      }
    }
  }
}
```

**SLOP-MCP (v0.10.0+)**

```bash
slop register dart-query \
  --command npx \
  --args "-y" "@standardbeagle/dart-query" \
  --env DART_TOKEN=dsa_your_token_here \
  --scope user
```

### 3. Verify

```
info({ level: "overview" })
```

### 4. Example: Batch Update

```typescript
// Preview first
batch_update_tasks({
  selector: "dartboard = 'Engineering' AND priority = 'high'",
  updates: { status: "Doing" },
  dry_run: true
})

// Execute
batch_update_tasks({
  selector: "dartboard = 'Engineering' AND priority = 'high'",
  updates: { status: "Doing" },
  dry_run: false
})
```

## Tools

| Group | Tools | Purpose |
|-------|-------|---------|
| Discovery | `info`, `get_config` | Explore capabilities, workspace config |
| Task CRUD | `create_task`, `get_task`, `update_task`, `delete_task`, `add_task_comment` | Single task operations |
| Query | `list_tasks`, `search_tasks` | Find tasks with filters or full-text search |
| Batch | `batch_update_tasks`, `batch_delete_tasks`, `get_batch_status` | Bulk operations with DartQL selectors |
| Import | `import_tasks_csv` | Bulk create from CSV with validation |
| Docs | `list_docs`, `create_doc`, `get_doc`, `update_doc`, `delete_doc` | Document management |

See **[TOOLS.md](./TOOLS.md)** for full parameter references, DartQL syntax, and CSV import format.

## DartQL Selectors

SQL-92 WHERE clause syntax for targeting tasks in batch operations:

```sql
dartboard = 'Engineering' AND priority = 'high' AND tags CONTAINS 'bug'
due_at < '2026-01-18' AND status <> 'Done'
title LIKE 'Task%'                          -- starts with
title LIKE '%auth%'                         -- contains substring
```

**Operators:** `=`, `!=`, `<>`, `>`, `>=`, `<`, `<=`, `LIKE`, `IN`, `NOT IN`, `BETWEEN`, `IS NULL`, `IS NOT NULL`, `CONTAINS`
**Aliases:** `INCLUDES`/`HAS` → `CONTAINS` · `<>` → `!=`
**LIKE wildcards:** `%` = any characters, `_` = single character (case-insensitive)

## Safety

All Dart AI operations are production (no sandbox). dart-query provides:

- **Dry-run mode** on all batch operations — preview before executing
- **Validation phase** for CSV imports — catch errors before creating anything
- **Confirmation flag** (`confirm: true`) required for batch deletes
- **Recoverable deletes** — tasks move to trash, not permanent deletion

## License

MIT

TDQS

B3.4/5.0

Scored across 25 tools

Disambiguation3/5

Most tools target distinct resources (tasks, docs, folders, config), but there is overlap between list_tasks and search_tasks (both find tasks, though one is filter-based and the other text-based). Also, batch_delete_tasks and batch_update_tasks are deprecated alternatives to execute_dartql, creating potential confusion about which to use. The descriptions do help clarify, but the presence of deprecated tools adds ambiguity.

Naming Consistency4/5

Tool names follow a mostly consistent verb_noun pattern (get_task, update_task, create_task, delete_task, list_docs, etc.). Some deviations exist like 'execute_dartql' (non-noun object) and 'import_tasks_csv' (instead of import_tasks_csv_file or similar), but these are minor and the pattern is still readable.

Tool Count3/5

With 25 tools, this is on the heavier side for a task management server. Many tools are focused on task lifecycle (create, get, update, delete, move, comment, time tracking), but some like batch operations and import seem redundant with execute_dartql. A few tools could be merged (e.g., batch_update and batch_delete into execute_dartql), but the count is not excessive given the domain complexity.

Completeness3/5

The server covers core CRUD for tasks (create, read, update, delete) and documents (create, read, update, delete), plus additional features like comments, time tracking, and URL attachments. However, there is no direct way to list or delete comments, and while tasks support relationships, there is no explicit tool to manage dartboard or folder creation/deletion (only get). The presence of deprecated tools suggests some operations are being consolidated, but the surface is fairly complete for task management with some gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues