# io.github.standardbeagle/dart-query (npm · @standardbeagle/dart-query)

Dart AI task management MCP with batch operations, DartQL selectors, CSV import, zero context rot

- Trust score: 79/100 (medium)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@standardbeagle/dart-query`: 79/100 (this document), [markdown](https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query.md), [page](https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query)

## Channel facts

- Registry: `npm`
- Package: `@standardbeagle/dart-query`
- Version: `0.3.5`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to standardbeagle/dart-query).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 54 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2555 tokens (~106/item across 24 items; 24 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add standardbeagle-dart-query -- npx -y @standardbeagle/dart-query
```

### Codex

```bash
codex mcp add standardbeagle-dart-query -- npx -y @standardbeagle/dart-query
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "standardbeagle-dart-query": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@standardbeagle/dart-query"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add standardbeagle-dart-query --command npx --arg -y --arg @standardbeagle/dart-query
```

### Hermes

```yaml
mcp_servers:
  standardbeagle-dart-query:
    command: "npx"
    args: ["-y", "@standardbeagle/dart-query"]
```

### Other

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 79, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 76, +71)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: standardbeagle/dart-query
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 5, −16)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-31 (score 21, −25)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 46)

First indexed and scored.

## MCP tools (24)

### `info` (~64 tokens)

Progressive discovery of dart-query capabilities - start here

Input parameters:

- `level` (string): Detail level: overview=categories, group=tools in category, tool=full documentation
- `target` (string): Group name (when level=group) or tool name (when level=tool)

### `get_config` (~64 tokens)

Get workspace configuration: assignees, dartboards, statuses, tags, priorities, sizes

Input parameters:

- `cache_bust` (boolean): Force refresh cached config (default: 5-minute cache)
- `include` (array): Limit response to specific config sections (default: all)

### `create_task` (~352 tokens)

Create a new task with title, description, status, priority, size, dates, dartboard, assignees, tags, and task relationships (subtasks, blockers, related tasks)

Input parameters:

- `assignees` (array): Array of assignee dart_ids
- `blocker_ids` (array): IDs of tasks that block this task from being started or completed. Each ID must be a valid dart_id format.
- `blocking_ids` (array): IDs of tasks that this task is blocking. Each ID must be a valid dart_id format.
- `dartboard` (string, required): Dartboard dart_id (use get_config to find)
- `description` (string): Task description (markdown supported)
- `due_at` (string): Due date (ISO8601)
- `duplicate_ids` (array): IDs of tasks that are duplicates of this task. Each ID must be a valid dart_id format.
- `parent_task` (string): Parent task dart_id for subtasks
- `priority` (integer): Priority 1-5 (1=lowest, 5=highest)
- `related_ids` (array): IDs of tasks that are related to this task (loosely connected). Each ID must be a valid dart_id format.
- `size` (integer): Size estimate 1-5
- `start_at` (string): Start date (ISO8601)
- `status` (string): Status name or dart_id
- `subtask_ids` (array): IDs of tasks that are subtasks (children) of this task. Each ID must be a valid dart_id format.
- `tags` (array): Array of tag dart_ids
- `title` (string, required): Task title (max 500 chars)

### `list_tasks` (~375 tokens)

Query tasks with filters (assignee, status, dartboard, priority, tags, dates, relationships), pagination, and detail levels. Relationship filters use client-side filtering - may be slower for large task counts.

Input parameters:

- `assignee` (string): Filter by assignee (dart_id, name, or email)
- `blocked_by` (string): Filter tasks blocked by specific task (dart_id). Client-side filter.
- `blocking` (string): Filter tasks that are blocking a specific task (dart_id). Client-side filter.
- `dartboard` (string): Filter by dartboard (dart_id or name)
- `detail_level` (string): minimal=id+title, standard=+status+assignee+priority, full=all fields including relationships
- `due_after` (string): Filter tasks due after date (ISO8601)
- `due_before` (string): Filter tasks due before date (ISO8601)
- `has_blockers` (boolean): Filter tasks that are blocked (true) or not blocked (false). Client-side filter.
- `has_parent` (boolean): Filter tasks with parent (true) or without parent (false). Client-side filter.
- `has_subtasks` (boolean): Filter tasks with subtasks (true) or without subtasks (false). Client-side filter.
- `is_blocking` (boolean): Filter tasks that block others (true) or block nothing (false). Client-side filter.
- `limit` (integer): Max tasks to return (default: 50, max: 500)
- `offset` (integer): Pagination offset (default: 0)
- `priority` (integer): Filter by priority (1-5)
- `status` (string): Filter by status (dart_id or name)
- `tags` (array): Filter by tags (dart_ids or names)

### `get_task` (~132 tokens)

Get a specific task by dart_id with optional comments and relationship details. Returns task relationships (subtasks, blockers, blocking, duplicates, related) with counts and optional expanded titles.

Input parameters:

- `dart_id` (string, required): Task dart_id
- `expand_relationships` (boolean): Fetch titles for all related tasks (default: false). Requires additional API calls. Only applies when include_relationships is true.
- `include_comments` (boolean): Include task comments in response (default: false)
- `include_relationships` (boolean): Include relationship fields and counts in response (default: true). Set to false for smaller response.

### `update_task` (~81 tokens)

Update an existing task with partial field updates including task relationships (validates references, only sends changed fields). Relationship arrays use full replacement semantics - to add/remove, get current values, modify, then update with the full array.

Input parameters:

- `dart_id` (string, required): Task dart_id to update
- `updates` (object, required): Fields to update (partial DartTask object)

### `delete_task` (~36 tokens)

Delete a task (moves to trash - recoverable via Dart web UI)

Input parameters:

- `dart_id` (string, required): Task dart_id to delete

### `batch_update_tasks` (~138 tokens)

Batch update multiple tasks matching a DartQL selector. Supports all task fields including relationships. CRITICAL: Always use dry_run=true first to preview changes!

Input parameters:

- `concurrency` (integer): Parallel updates (default: 5, range: 1-20)
- `dry_run` (boolean): Preview mode (default: true). Set to false to execute updates.
- `selector` (string, required): DartQL WHERE clause to select tasks (e.g., "status = 'Todo' AND priority >= 3")
- `updates` (object, required): Fields to update (partial DartTask object). Relationship arrays use full replacement semantics - set to [] to clear.

### `batch_delete_tasks` (~149 tokens)

Batch delete multiple tasks matching a DartQL selector. MOST DANGEROUS OPERATION! CRITICAL: dry_run defaults to true, confirm=true REQUIRED when dry_run=false. Tasks move to trash (recoverable).

Input parameters:

- `concurrency` (integer): Parallel deletions (default: 5, range: 1-20)
- `confirm` (boolean): REQUIRED when dry_run=false. Safety confirmation for deletions.
- `dry_run` (boolean): Preview mode (default: true). Set to false to execute deletions.
- `selector` (string, required): DartQL WHERE clause to select tasks (e.g., "status = 'Archived' AND completed_at < '2025-01-01'")

### `get_batch_status` (~64 tokens)

Retrieve status of a batch operation (update, delete, or import) by batch_operation_id. Operations are kept in memory for 1 hour.

Input parameters:

- `batch_operation_id` (string, required): Batch operation ID returned from batch_update_tasks, batch_delete_tasks, or import_tasks_csv

### `import_tasks_csv` (~194 tokens)

Import tasks from CSV file with validation and parallel creation. CRITICAL: ALWAYS use validate_only=true first! Production safety: validate → fix errors → import.

Input parameters:

- `column_mapping` (object): Custom column name mapping (e.g., {"Task Name": "title", "Owner": "assignee"})
- `concurrency` (integer): Parallel task creation (default: 5, range: 1-20)
- `continue_on_error` (boolean): Continue importing valid rows even if some fail (default: true)
- `csv_data` (string): CSV data as string (use this OR csv_file_path)
- `csv_file_path` (string): Path to CSV file (use this OR csv_data)
- `dartboard` (string, required): Dartboard dart_id or name for all imported tasks
- `validate_only` (boolean): Preview mode (default: TRUE for production safety). Returns validation errors and preview without creating tasks.

### `list_docs` (~108 tokens)

List documents with optional filtering by folder, title_contains, text_contains. Supports pagination.

Input parameters:

- `folder` (string): Filter by folder (dart_id or name)
- `limit` (integer): Max docs to return (default: 50, max: 500)
- `offset` (integer): Pagination offset (default: 0)
- `text_contains` (string): Filter by text content substring (case-insensitive)
- `title_contains` (string): Filter by title substring (case-insensitive)

### `create_doc` (~60 tokens)

Create a new document with title, text (markdown supported), and optional folder

Input parameters:

- `folder` (string): Folder dart_id or name (optional)
- `text` (string, required): Document text content (markdown supported)
- `title` (string, required): Document title

### `get_doc` (~31 tokens)

Get a specific document by doc_id with full text content

Input parameters:

- `doc_id` (string, required): Document doc_id

### `update_doc` (~52 tokens)

Update an existing document (title, text, or folder). Validates references and only sends changed fields.

Input parameters:

- `doc_id` (string, required): Document doc_id to update
- `updates` (object, required): Fields to update

### `delete_doc` (~36 tokens)

Delete a document (moves to trash - recoverable via Dart web UI)

Input parameters:

- `doc_id` (string, required): Document doc_id to delete

### `search_tasks` (~111 tokens)

Full-text search across tasks with relevance ranking. Alternative to list_tasks for text-based discovery. Supports quoted phrases and exclusions.

Input parameters:

- `dartboard` (string): Optional dartboard filter (dart_id or name)
- `include_completed` (boolean): Include completed tasks in results (default: false)
- `limit` (integer): Max results to return (default: 50, max: 500)
- `query` (string, required): Search query. Supports quoted phrases ("exact match"), exclusions (-term), and regular terms.

### `add_task_comment` (~56 tokens)

Add a comment to a task for status updates, AI rationale, or notes. Supports markdown formatting.

Input parameters:

- `dart_id` (string, required): Task dart_id to add comment to
- `text` (string, required): Comment text (markdown supported)

### `list_comments` (~74 tokens)

List comments on a task with pagination. Token-efficient: returns minimal comment data.

Input parameters:

- `limit` (integer): Max comments to return (default: 50, max: 100)
- `offset` (integer): Pagination offset (default: 0)
- `task_id` (string, required): Task dart_id to list comments for

### `move_task` (~116 tokens)

Move/reposition a task within a dartboard or to a different dartboard. Supports ordering by index or relative to another task.

Input parameters:

- `after_id` (string): Place task after this task dart_id
- `before_id` (string): Place task before this task dart_id
- `dart_id` (string, required): Task dart_id to move
- `dartboard` (string): Target dartboard (dart_id or name) - moves task to different dartboard
- `order` (integer): Position index in dartboard (0-based)

### `add_time_tracking` (~128 tokens)

Add a time tracking entry to a task. Supports started_at/finished_at or duration_minutes.

Input parameters:

- `dart_id` (string, required): Task dart_id to add time entry to
- `duration_minutes` (integer): Duration in minutes (optional if finished_at provided)
- `finished_at` (string): End time in ISO8601 format (optional if duration_minutes provided)
- `note` (string): Optional note about the time entry
- `started_at` (string, required): Start time in ISO8601 format (e.g., 2026-01-25T10:00:00Z)

### `attach_url` (~61 tokens)

Attach a file from URL to a task. URL must be publicly accessible.

Input parameters:

- `dart_id` (string, required): Task dart_id to attach file to
- `filename` (string): Optional filename override
- `url` (string, required): Public URL of file to attach

### `get_dartboard` (~39 tokens)

Get details about a dartboard including task count. Token-efficient lookup.

Input parameters:

- `dartboard_id` (string, required): Dartboard dart_id or name

### `get_folder` (~34 tokens)

Get details about a folder including doc count. Token-efficient lookup.

Input parameters:

- `folder_id` (string, required): Folder dart_id or name

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query#diagnostics

## Score history

- 2026-08-03: 79
- 2026-08-02: 76
- 2026-08-01: 5
- 2026-07-31: 21
- 2026-07-30: 46
- 2026-07-28: 46
- 2026-07-27: 46

## Links

- npm package: https://www.npmjs.com/package/@standardbeagle/dart-query
- Socket report: https://socket.dev/npm/package/@standardbeagle/dart-query
- Repository: https://github.com/standardbeagle/dart-query
- Changelog RSS feed: https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query/changelog.json
- HTML version of this page: https://verifymcp.io/servers/standardbeagle-dart-query/standardbeagle-dart-query
