# Damper (remote · api.usedamper.com)

Feedback, roadmap, agent task execution with review, changelog, status pages and error logs.

- Trust score: 76/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.usedamper.com`: 76/100 (this document), [markdown](https://verifymcp.io/servers/com-usedamper-mcp/api.md), [page](https://verifymcp.io/servers/com-usedamper-mcp/api)

## Channel facts

- Endpoint: `https://api.usedamper.com/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `0.6.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-11-05.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 19061 tokens (~135/item across 141 items; 141 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 84/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 45% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 18 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 141 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Damper MCP server?

Damper is a hosted endpoint at https://api.usedamper.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-usedamper-mcp 'https://api.usedamper.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-usedamper-mcp": {
      "url": "https://api.usedamper.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-usedamper-mcp": {
      "type": "http",
      "url": "https://api.usedamper.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-usedamper-mcp]
url = "https://api.usedamper.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-usedamper-mcp": {
      "type": "remote",
      "url": "https://api.usedamper.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-usedamper-mcp --url 'https://api.usedamper.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-usedamper-mcp:
    url: "https://api.usedamper.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-usedamper-mcp": {
      "Transport": "http",
      "Url": "https://api.usedamper.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-usedamper-mcp -t streamable-http -u 'https://api.usedamper.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-usedamper-mcp": {
      "type": "http",
      "url": "https://api.usedamper.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-11-05 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 73, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-30 (score 73)

First indexed and scored.

## MCP tools (141)

### `list_projects` (~40 tokens)

List Projects

List all projects accessible with this API key. Use this to find project IDs for other tools.

\**Start here** to discover which projects you can work with.

Output parameters:

- `projects` (array)

### `get_agent_instructions` (~56 tokens)

Get Agent Instructions

Get the canonical Damper workflow instructions. Use this to set up or update CLAUDE.md in a project.

Input parameters:

- `format` (string): markdown = full file, section = just the Damper section (default: section)

Output parameters:

- `content` (string)
- `format` (string)
- `lastModified` (string): ISO date when instructions were last updated
- `revision` (string): Monotonic canonical instruction revision for bootstrap drift checks

### `list_tasks` (~316 tokens)

List Tasks

Get roadmap tasks. Returns backlog/planned/in-progress by default. Search by title, description, plan, user story, or exact label, and filter by type, quarter, etc. Use `query` before paginating when checking whether a matching task already exists.

Returns up to 50 tasks by default. Response includes `total` count. Tasks with incomplete blockers are excluded automatically. Task summaries include available dates such as `createdAt`, `updatedAt`, `startDate`, and `dueDate`. If total > returned tasks, paginate with offset (e.g. offset=50 for page 2).

\**Recommended:** Call `get_project_context` before starting work to understand codebase patterns.

Input parameters:

- `hasSelfAssessment` (boolean): Filter to tasks that have or do not have a submitted structured self-assessment
- `limit` (number): Max tasks to return (default: 50)
- `offset` (number): Skip first N tasks for pagination (default: 0)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `quarter` (string): Filter by quarter (e.g., "Q1 2025") or "none" for unscheduled
- `query` (string): Search task title, description, implementation plan, user stories, or an exact label
- `sort` (string): Sort order: importance (priority+votes, default), newest, or votes
- `status` (string)
- `type` (string): Filter by task type

Output parameters:

- `project` (string)
- `tasks` (array)
- `total` (number)

### `get_task` (~255 tokens)

Get Task

Get task details. Defaults to a compact view (plan, current progress, subtasks, PRs, unresolved decisions, completion receipt, evidence counts) — no `agentNotes` dump. Pass `detailMode: "full"` for the legacy full payload (agentNotes, all sessions/commits inline), or request specific sections on demand with `include` (e.g. `["timeline"]` for composed history, `["checklist"]`, `["selfAssessment"]`, `["commits"]`, `["sessions"]`) while staying compact otherwise.

Input parameters:

- `detailMode` (string): compact (default here) omits agentNotes and inline history; full restores the legacy payload.
- `include` (array): Extra sections to load on demand, e.g. ["timeline"] for composed history, even in compact mode.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required): Task ID
- `timelineCursor` (string): Opaque cursor from a previous timeline page's nextCursor, for paging further back.
- `timelineLimit` (integer): Timeline page size (1-100, default 20). Only applies when include contains "timeline".

Output parameters:

- `agentCompletedAt` (string|null)
- `agentNotes` (string|null)
- `agentStartedAt` (string|null)
- `agentSummary` (string|null)
- `attachmentUrls` (array): HTTP URLs for all feedback screenshot attachments linked to this task
- `checklistConfirmations` (array)
- `commits` (array)
- `completionReceipt`
- `contextMaintenance`
- `currentProgress`
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `description` (string|null)
- `detailMode` (string)
- `dueDate` (string|null)
- `effort` (string|null)
- `evidenceCounts` (object)
- `feedback` (array)
- `id` (string)
- `implementationPlan` (string|null)
- `labels` (array)
- `latestReviewRound`
- `priority` (string|null)
- `project` (object)
- `publicUrl` (string|null)
- `publicUrlNote` (string|null)
- `pullRequests` (array)
- `quarter` (string|null)
- `reviewInstructions` (string|null)
- `selfAssessment`
- `sessions` (array)
- `startDate` (string|null)
- `status` (string)
- `subtasks` (array)
- `timeline` (object)
- `title` (string)
- `type` (string)
- `unresolvedDecisions` (array)
- `userStories` (string|null)
- `voteScore` (number)

### `list_self_assessments` (~137 tokens)

List Self-Assessments

List recent structured agent self-assessments for a project. Use this miss log to find recurring missingContext/toolIssues/processGaps and improve project context.

Input parameters:

- `limit` (number): Max assessments to return (default: 50, max: 200)
- `model` (string): Only include assessments reported for this exact model identifier
- `nonEmptyOnly` (boolean): Only include assessments with at least one reported gap (default: true)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `since` (string): Only include assessments submitted at or after this date/time

Output parameters:

- `assessments` (array)
- `topMissingContext` (array)
- `topMissingContextByModel` (array)

### `update_task` (~617 tokens)

Update Task

Update task fields like description, implementation plan, priority, effort, quarter, start/due dates, labels, or visibility. Pass status "closed" to discard a task that will not ship. Useful for refining task details as you learn more about the work. Set startDate and dueDate when planning so the task appears on the roadmap timeline.

Input parameters:

- `currentProgress` (string|null): Replaces the single progress snapshot shown in compact `get_task`. The previous non-empty snapshot is kept in history as a timeline event, not lost. Pass null to clear it. Use this instead of `add_no…
- `description` (string): Task description (shown on public roadmap). Write for end users: 1-3 sentences on what changes and why it matters. No code references, file paths, or jargon.
- `dueDate` (string|null): Target completion date (YYYY-MM-DD). Null clears.
- `effort`: Estimated effort
- `implementationPlan` (string): Implementation plan (markdown, internal only - never shown publicly)
- `isPublic` (boolean): Whether task is visible on public roadmap
- `labels` (array): Labels/tags
- `priority`: Task priority
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `quarter` (string|null): Target quarter (e.g., "Q1 2025"). Dates and variants such as "2025-Q1" are stored as "Q1 2025".
- `reviewInstructions` (string): Review instructions (markdown). What the reviewer should test, verify, or check. Write specific, actionable steps — not a restatement of what was done. PUBLICLY VISIBLE while the item is in review: t…
- `startDate` (string|null): Planned start date (YYYY-MM-DD). Set together with dueDate to place the task on the roadmap timeline. Null clears.
- `status` (string): Set to "closed" to discard a task that will not ship (not deployable or no longer used). Releases the lock and hides it from the public roadmap and default lists. Use abandon_task instead to just sto…
- `taskId` (string, required): Task ID
- `title` (string): Task title (max 60 chars, sentence case, no trailing period). Verb prefix: bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …"
- `userStories` (string): User stories describing how users interact with the feature (markdown, internal only). Format: "As a [role], I [action] so that [benefit]." Include UI flows, buttons clicked, pages visited, API calls…

Output parameters:

- `currentProgress`
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `description` (string|null)
- `dueDate` (string|null)
- `effort` (string|null)
- `id` (string)
- `implementationPlan` (string|null)
- `isPublic` (boolean)
- `labels` (array)
- `message` (string)
- `priority` (string|null)
- `quarter` (string|null)
- `reviewInstructions` (string|null)
- `startDate` (string|null)
- `status` (string)
- `title` (string)
- `userStories` (string|null)

### `create_task` (~403 tokens)

Create Task

Create a new roadmap task. Use for importing from TODO files or creating work items. When the task comes from customer feedback, pass `feedbackIds` to link it in the same call: the feedback status follows the task and followers are notified, the same as linking later with `link_feedback_to_task`. Unknown feedback IDs fail the call before anything is created.

Input parameters:

- `description` (string): Task description (shown on public roadmap). Write for end users: 1-3 sentences on what changes and why it matters. No code references, file paths, or jargon.
- `dueDate` (string): Target completion date (YYYY-MM-DD)
- `feedbackIds` (array): Feedback IDs this task addresses (from list_feedback). Linked on creation.
- `implementationPlan` (string): Implementation plan (markdown, internal only - never shown publicly)
- `isPublic` (boolean): Whether task is visible on public roadmap (default: true)
- `priority` (string): Task priority
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `startDate` (string): Planned start date (YYYY-MM-DD). Set together with dueDate to place the task on the roadmap timeline.
- `status` (string)
- `title` (string, required): Task title (max 60 chars, sentence case, no trailing period). Use verb prefix matching the type: bug → "Fix …", feature → "Add …", improvement → "Improve …", task → "Set up …" / "Update …". E.g., "Ad…
- `type` (string): Task type (default: feature)
- `userStories` (string): User stories describing how users interact with the feature (markdown, internal only). Format: "As a [role], I [action] so that [benefit]." Include UI flows, buttons clicked, pages visited, API calls…

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `isPublic` (boolean)
- `linkedFeedbackIds` (array)
- `message` (string)
- `status` (string)
- `title` (string)
- `type` (string)

### `add_note` (~425 tokens)

Add Note

Add a note to a task, or resolve a previously reported blocker/open_question. Use ONLY for non-obvious approach decisions and blockers — do not restate commits, checklist confirmations, or self-assessment findings here; those are already stored structurally and shown in `get_task`.

\**Do NOT use for:** Session start/end ceremony, commit logging (use `add_commit`), status updates (use `update_task` with `currentProgress`), or restating what code changes do.

\**`kind` (default `observation`):**
\- `observation` / `decision` — appended to the free-text note log (Decision gets a **Decision:** prefix)
\- `blocker` / `open_question` — stored as a structured, resolvable event; the response includes `eventId`. Resolve it later by calling `add_note` again with `resolves: "<eventId>"`
\- `milestone` — stored as a structured timeline event, not resolvable

\**Templates** (copy and fill in):

Decision:
\```
\**Decision:** Chose `libraryName` over `alternative` because it supports X and has fewer dependencies
\```

Blocker:
\```
Cannot proceed with `featureName` until:
\- Dependency X is merged
\- API endpoint Y is available
\```

Observation:
\```
Found that `componentName` already handles X via `methodName` — reusing instead of reimplementing
\```

Input parameters:

- `kind` (string): Note kind (default: observation). blocker/open_question/milestone are structured, resolvable events — see description.
- `note` (string, required): Markdown-formatted note, or the resolution text when `resolves` is set. Use `code` for technical names and bullet lists for multiple points.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `resolves` (string): Event id of a previously reported blocker/open_question to resolve. `note` becomes the resolution text.
- `taskId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `eventId` (string)
- `success` (boolean)
- `taskId` (string)

### `add_commit` (~150 tokens)

Add Commit

Log a commit for a task (secondary detail — the linked pull request is the primary deliverable, see `link_pr`).

\**When to use:**
\- After a notable commit: log hash and message
\- When completing work: optionally pass commits to complete_task instead

\**Example:** After `git commit`, call this with the commit hash and message.

Input parameters:

- `hash` (string, required): Commit hash (short or full)
- `message` (string, required): Commit message in conventional commits format: type(scope): description. E.g., "feat(auth): add OAuth login"
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `hash` (string)
- `success` (boolean)
- `taskId` (string)

### `link_pr` (~280 tokens)

Link Pull Request

Link the pull request that delivers this task. The PR is the primary deliverable of a task — call this as soon as the PR exists, and call it again with `state: "merged"` after merge. Upserts by URL, so repeated calls update the same PR record.

\**When to use:**
\- Right after opening a PR for the task (`gh pr create`): link it with url, branch, and title
\- After the PR is merged or closed: call again with the new state
\- Alternatively pass a `pr` object to complete_task if the PR was not linked earlier

For GitHub URLs the repo and PR number are derived automatically.

Input parameters:

- `branch` (string): Head branch name
- `headRevision` (string): Head commit SHA or repository revision when known
- `number` (integer): PR number. Derived from GitHub URLs automatically.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `repo` (string): Repository as "owner/name". Derived from GitHub URLs automatically.
- `state` (string): PR state (default: open)
- `taskId` (string, required)
- `title` (string): PR title
- `url` (string, required): Pull request URL (e.g. https://github.com/owner/repo/pull/42)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `pullRequest` (object)
- `success` (boolean)
- `taskId` (string)

### `create_subtask` (~133 tokens)

Create Subtask

Add a new subtask to a task. Useful for breaking down work into smaller steps. Optionally set startDate/dueDate (YYYY-MM-DD) so the subtask appears on the roadmap timeline.

Input parameters:

- `dueDate` (string): Target completion date (YYYY-MM-DD)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `startDate` (string): Planned start date (YYYY-MM-DD)
- `taskId` (string, required): Task ID
- `title` (string, required): Subtask title — short imperative phrase, e.g., "Add validation to login form"

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `subtask` (object)
- `taskId` (string)
- `totalSubtasks` (number)

### `update_subtask` (~138 tokens)

Update Subtask

Update a subtask: mark it done/not done and/or set its timeline dates. Use get_task to see subtask IDs. Dates are YYYY-MM-DD; null clears a date.

Input parameters:

- `done` (boolean): Whether the subtask is done
- `dueDate` (string|null): Target completion date (YYYY-MM-DD). Null clears.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `startDate` (string|null): Planned start date (YYYY-MM-DD). Null clears.
- `subtaskId` (string, required): Subtask ID
- `taskId` (string, required): Task ID

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `done` (boolean)
- `dueDate` (string|null)
- `progress` (object)
- `startDate` (string|null)
- `subtaskId` (string)
- `taskId` (string)

### `delete_subtask` (~67 tokens)

Delete Subtask

Remove a subtask from a task. Use get_task to see subtask IDs.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `subtaskId` (string, required): Subtask ID
- `taskId` (string, required): Task ID

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `remaining` (number)
- `subtaskId` (string)
- `taskId` (string)

### `delete_task` (~54 tokens)

Delete Task

Permanently delete a task. Only works on tasks in backlog or planned status with no commits.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `deleted` (boolean)
- `id` (string)

### `add_task_dependency` (~120 tokens)

Add Task Dependency

Add a dependency between roadmap tasks. The blocker task must be done before the blocked task can be worked on. Provide either blockerId (this task is blocked by another) or blockedId (this task blocks another).

Input parameters:

- `blockedId` (string): Task that is blocked until blocker is done
- `blockerId` (string): Task that must be completed first
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required): Task ID that is either the blocker or the blocked task

Output parameters:

- `blocked` (object)
- `blockedId` (string)
- `blocker` (object)
- `blockerId` (string)
- `createdAt` (string)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `projectId` (string)

### `remove_task_dependency` (~48 tokens)

Remove Task Dependency

Remove a task dependency by dependency ID.

Input parameters:

- `dependencyId` (string, required): Dependency ID to remove
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `add_api_example` (~373 tokens)

Add API Example

Attach a request/response example for an API endpoint you added or changed, so the reviewer can check the contract in Damper without running anything. Add one per changed endpoint (more for distinct cases, e.g. success and validation error — give each its own `key`).

\**Upserts by key:** the key defaults to "METHOD /path STATUS", so a success and each error case of one route are separate examples; calling again with the same key replaces the example.
\**Security:** use seeded/test data only. Authorization, cookie and API-key headers are always redacted.
\**Changed endpoints:** pass `beforeResponse` to show what the endpoint returned before your change.

Input parameters:

- `beforeResponse` (object): For changed endpoints: the response before your change
- `change` (string): added = new endpoint/page, changed = existing one behaves or looks different, removed = gone (default: changed)
- `description` (string): What this example demonstrates and what to check
- `group` (string): Resource to group under (default: first path segment)
- `key` (string): Stable identity for this example (default "METHOD /path STATUS", e.g. "POST /invoices 422"). Reuse it to replace.
- `method` (string, required): HTTP method, e.g. GET, POST, PATCH
- `path` (string, required): Path with example values, e.g. /invoices?status=paid or /invoices/inv_123
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `request` (object)
- `response` (object, required)
- `taskId` (string, required)
- `title` (string): Short label, e.g. "Filter by metadata list" (default "METHOD /path")

Output parameters:

- `artifact` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `replaced` (boolean)

### `add_screenshot` (~566 tokens)

Add Screenshot

Attach a screenshot of a page or screen you added or changed, so the reviewer sees the result in Damper. Capture every changed page in each relevant state (default, empty, loading, error, validation…), using the locale/theme/viewport the project asks for (see start_task). Give each state its own call.

\**Two ways to send the image:**
\- `image: { base64 }` — inline, fine for small images.
\- `requestUpload: true` — returns a one-time URL; then run `curl -X PUT -H "Content-Type: image/png" --data-binary @shot.png "<url>"`. Prefer this from a shell: it keeps large images out of your context.

\**Upserts by key:** the key defaults to page:state[:theme:locale:viewport]; reuse it to replace a capture.
\**Before/after:** for changed pages, send `beforeImage` (or `requestBeforeUpload`) to enable a comparison.
\**Size:** capture the viewport at 1–2× device scale, not the full page, unless the change sits below the fold. Damper re-encodes uploads to WebP (max 2560px wide) and makes a thumbnail, so bigger captures only cost upload time.
\**Privacy:** seeded/test data only — no real customer data. Max 5 MB per image, 60 screenshots per task.

Input parameters:

- `beforeImage` (object): The same page before your change
- `change` (string): added = new endpoint/page, changed = existing one behaves or looks different, removed = gone (default: changed)
- `description` (string): What changed on this page and what to look at
- `image` (object)
- `key` (string): Stable identity (default derived from page/state/theme/locale/viewport)
- `locale` (string): Locale shown, e.g. en
- `page` (string, required): Page or screen name, e.g. "Invoices list" or "Settings › Billing"
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `requestBeforeUpload` (boolean): Return a one-time PUT URL for the before image
- `requestUpload` (boolean): Return a one-time PUT URL for the image instead of sending base64
- `route` (string): Route or URL path, e.g. /invoices?status=paid
- `state` (string): State shown, e.g. default, empty, loading, error, validation (default: default)
- `taskId` (string, required)
- `theme` (string): light or dark
- `title` (string)
- `viewport` (string): desktop, mobile, or WIDTHxHEIGHT

Output parameters:

- `artifact` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `replaced` (boolean)
- `upload` (object)

### `add_diagram` (~480 tokens)

Add Diagram

Attach a Mermaid diagram that explains the logic or structure behind a change, so the reviewer can follow it without reading the diff. OPTIONAL — add one only when it clarifies something a list of endpoints or screenshots cannot: a decision tree or branching rule, a multi-step flow, a state machine, a call sequence, or how the touched modules, tables or classes relate. Skip it for simple changes.

\**Types** (first line of `source`): `flowchart TD` (decision trees, flows, dependency maps), `stateDiagram-v2`, `sequenceDiagram`, `classDiagram`, `erDiagram`. No `%%{init}` directives or `click` handlers.
\**Keep it small:** about 15 nodes or fewer, short labels, one idea per diagram. Quote labels that contain punctuation, e.g. `A["No tax line?"]`.
\**Mark what changed** in flowcharts and state diagrams by tagging nodes `:::added`, `:::changed` or `:::removed` (e.g. `B["Retry with backoff"]:::changed`) — Damper colours them; do not add your own `classDef` colours.
\**Before/after:** for a changed flow pass `beforeSource` with the previous diagram.
\**Upserts by key** (default: slug of the title); calling again with the same key replaces the diagram. Never put secrets or real customer data in labels.

Input parameters:

- `beforeSource` (string): For changed flows: the Mermaid source before your change
- `change` (string): added = new endpoint/page, changed = existing one behaves or looks different, removed = gone (default: changed)
- `description` (string): What the diagram shows and what to check
- `group` (string): Optional grouping label, e.g. the feature or module
- `key` (string): Stable identity (default: slug of the title). Reuse it to replace.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `source` (string, required): Mermaid source, starting with the diagram type, e.g. "flowchart TD\n  A[Start] --> B{Tax line?}"
- `taskId` (string, required)
- `title` (string, required): Short label, e.g. "VOD booking type by tax line"

Output parameters:

- `artifact` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `replaced` (boolean)

### `list_review_artifacts` (~85 tokens)

List Review Artifacts

List the API examples, screenshots and diagrams attached to a task, with the reviewer's verdict on each (approved / changes_requested + comment). Use it to check coverage before complete_task, and to find artifacts a reviewer asked you to redo.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `artifacts` (array)

### `remove_review_artifact` (~88 tokens)

Remove Review Artifact

Remove an API example, screenshot or diagram from a task, by id or by kind + key (e.g. a page that no longer changes).

Input parameters:

- `id` (string)
- `key` (string)
- `kind` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `removed` (object)

### `start_task` (~262 tokens)

Start Task

Lock and start a task. Fails if locked by another agent unless force=true. Use force=true to take over a task from another agent (e.g., if they abandoned it). Returns project context index with relevant sections for the task. If the reviewer decided your latest review request, the response starts with a `latestReviewRound` feedback block: address it before anything else.

\**IMPORTANT:** After starting, use get_context_section to read relevant sections. Project context contains architecture and patterns you MUST follow.

\**Workflow after starting:**
1\. Read relevant context sections (architecture, conventions, etc.)
2\. Do work on a feature branch
3\. Open a pull request for the change and link it with link_pr — the PR is the deliverable
4\. request_review as soon as something is reviewable (no user confirmation needed), or when stopping for the session
5\. complete_task (done) or abandon_task (stopping)

Input parameters:

- `criticalRuleMode` (string): Critical rules to include. Defaults to relevant; all restores the legacy full payload.
- `force` (boolean): Take over lock from another agent
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `completionChecklist` (object)
- `context` (object)
- `contextMaintenancePolicy` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `latestReviewRound`
- `lockedAt` (string)
- `lockedBy` (string)
- `message` (string)
- `reviewEvidence` (string|null)
- `status` (string)

### `review_task` (~159 tokens)

Review Task

Optional standalone self-review step. You can also pass `selfAssessment` directly to `complete_task` instead.

Reflect on your session: what project knowledge was missing, what tools were confusing, what process gaps caused friction. This drives project improvements.

If you have findings, propose improvements to the user after this call (e.g., `update_context_section` for missing docs, `report_issue` for tool problems).

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `selfAssessment` (object, required): Reflect on your session: what went well, what knowledge was missing, what caused friction. Be honest — this drives project improvements. Pass empty object if nothing to report.
- `taskId` (string, required)

Output parameters:

- `completionChecklist` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `status` (string)

### `complete_task` (~1572 tokens)

Complete Task

Mark task as ready for review (in_review). A human will verify and move it to done. Pass `skipReview: true` to mark as done immediately (use when the human explicitly asks).

If the task is already in_review (put there by a previous complete_task call), calling this again will move it directly to done — no checklist required (already confirmed). Tasks put in review with `request_review` are the exception: wait for the reviewer, then resume with start_task.

\**Self-assessment (required):** Pass `selfAssessment` reflecting on your session — what project knowledge was missing, what tools were confusing, what process gaps caused friction. Pass empty object `{}` if nothing to report. For non-trivial code work, include at least one concrete entry instead of an all-empty assessment. Also pass `model` and `reasoningEffort` when known; top-level values override nested selfAssessment metadata. You can also call `review_task` separately before this, but passing `selfAssessment` here is simpler.

\**Before calling:**
1\. Push all commits and open a pull request for the change — the PR is the primary deliverable
2\. Link the PR with `link_pr`, or pass it here via the `pr` parameter
3\. Check if project context docs need updating

\**Completion checklist:** If the project has a completion checklist (shown in `start_task` response), load relevant branches with `get_completion_checklist`, then resolve each active item by `itemId`. Use `status: "done"` with structured proof, or `status: "skipped"` for not-applicable items. If the checklist uses scope dimensions, pass `checklistScope` with explicit `appliesTo`, `changeKinds`, and `riskDomains` as needed. If a task crosses surfaces or contracts, bias toward broader scope rather than narrower scope.

\**Pull request:** Pass `pr` ({url, branch?, title?, state?}) if the PR is not yet linked. Commits are a secondary detail; the linked PR is what reviewers look at.

\**Delegations:** If you delegated work to sub-agents during this session, repor…

Input parameters:

- `checklistScope` (object): Required when the checklist uses scoped appliesTo / when / riskDomains rules
- `commits` (array): Optional: commits to log at completion
- `confirmations` (array): Completion checklist resolutions — resolve each active item by `itemId` with structured proof
- `contextDisposition` (object): Explicit disposition of context impact: updated, verified_current, not_applicable, or deferred.
- `delegations` (array): Sub-agent delegations that happened during this session
- `deliveredScope` (array): What was delivered, for the completion receipt (defaults to titles of done subtasks, else empty).
- `evidenceNotApplicable` (string): Why review evidence the project expects for the change scope does not apply (e.g. "internal endpoint, no public contract change"). Recorded on the completion receipt and timeline.
- `model` (string): Model identifier used for this task/session, e.g. claude-opus-4.8 or gpt-5.5. Overrides selfAssessment.model.
- `outcome` (string): One-line outcome for the completion receipt (defaults to `summary`).
- `pr` (object): Pull request delivering this task, if not already linked via link_pr. Upserts by URL.
- `previewUrl`: Optional http(s) URL where the reviewer can open the running change, e.g. a Tailscale URL like http://laptop.tailnet.ts.net:5173. Private hosts are fine (it is never fetched by the server). INTERNAL:…
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `reasoningEffort` (string): Reasoning effort used for this task/session, e.g. low, medium, high. Overrides selfAssessment.reasoningEffort.
- `residualRisks` (array): Known residual risks or follow-ups left after this completion, for the completion receipt.
- `reviewInstructions` (string): What the reviewer should test or verify (markdown). Recommended when sending to review (default behavior). Write specific, actionable steps: what to test in the UI, what edge cases to check, what are…
- `selfAssessment`: Self-review of your session. Object with optional keys: missingContext (string[]), toolIssues (string[]), processGaps (string[]), model, reasoningEffort. Reflect on what went well, what knowledge was…
- `skipReview` (boolean): Skip human review and mark task as done immediately (default: false, task goes to in_review)
- `summary` (string, required): Brief one-line summary of what was done, written for end users. Focus on the outcome, not the implementation.
- `taskId` (string, required)
- `touchedPathEvidence` (object): Provenance for touchedPaths. Agent-supplied evidence is accepted but labeled lower confidence.
- `touchedPaths` (array): Repository-relative paths changed by the task. Git-aware clients should derive this list automatically when possible.

Output parameters:

- `completionReceipt`
- `contextMaintenance` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `documentation` (object)
- `evidenceWarnings` (array)
- `id` (string)
- `message` (string)
- `status` (string)

### `request_review` (~900 tokens)

Request Review

Lightweight hand-off into review: move an in_progress task to in_review as soon as a human could review it (a working slice, an opened PR, attached screenshots or API examples, or when you are about to stop for the session). Do not leave reviewable work in in_progress. No checklist, PR, or self-assessment is required, and **no user confirmation is needed** — it is reversible and does not commit or merge. `complete_task` still needs confirmation.

\**Requirements:** the task must be in_progress and you must hold its lock (from start_task).

\**Effect:** status becomes in_review, the lock is released (so reviewers can act on it), and your session is closed. A reviewer approves or sends it back with feedback; resume with `start_task` if it comes back.

\**Stage:** `complete` (default) means the task is finished pending review. `partial` means a reviewable slice with more work to follow: approving it returns the task to in_progress instead of done.

\`complete_task` on a task waiting for a stage review requested here is rejected until the reviewer decides.

\**Review evidence:** the hand-off is checked against the project's review evidence policy for the change scope: `checklistScope` and `touchedPaths` passed here, unioned with what `prepare_completion` recorded; `prepare_work`'s expected paths count per the project's `plannedScope` (default: only when nothing else is known). Each kind's level comes from its base level and the project's rules; preview it with `get_completion_checklist` and your scope. Missing **required** API examples, screenshots or diagrams block it with error code `review_evidence_missing`, naming each missing kind and the change kinds/surfaces that need it. Attach them (`add_api_example`, `add_screenshot`, `add_diagram`) or, when they genuinely do not apply, pass `evidenceNotApplicable` with the reason (recorded on the timeline). A `partial` stage only warns unless the project sets `partialStageEvidence: "block"`; projects with `checkDirectDone` also c…

Input parameters:

- `checklistScope` (object): Scope of what this hand-off changed; decides which review evidence is required.
- `evidenceNotApplicable` (string): Why required review evidence does not apply to this hand-off (e.g. "copy-only change, no rendered page"). Recorded on the task timeline.
- `previewUrl`: Optional http(s) URL where the reviewer can open the running change, e.g. a Tailscale URL like http://laptop.tailnet.ts.net:5173. Private hosts are fine (it is never fetched by the server). INTERNAL:…
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `reviewInstructions` (string): What the reviewer should test or verify (markdown). PUBLICLY VISIBLE while the item is in review — keep credentials, internal paths, and private URLs out of it.
- `stage` (string): "complete" (default): finished pending review. "partial": a reviewable slice, more work follows; approval returns the task to in_progress.
- `summary` (string, required): What is reviewable right now, written for the reviewer.
- `taskId` (string, required)
- `touchedPaths` (array): Repository-relative paths this hand-off changed; their routed change kinds and surfaces join the scope.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `evidence` (object)
- `id` (string)
- `message` (string)
- `stage` (string)
- `status` (string)

### `abandon_task` (~104 tokens)

Abandon Task

Release lock and return task to planned status. Works for in_progress and in_review tasks.

\**Before calling:**
1\. Push any WIP commits

\**Summary parameter:** What was done, what remains, blockers. Helps the next agent.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `summary` (string): Handoff summary: what was done, what remains, any blockers
- `taskId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `message` (string)
- `status` (string)

### `list_context_sections` (~37 tokens)

List Context Sections

List available project context sections with brief previews.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `isEmpty` (boolean)
- `sections` (array)

### `resolve_context` (~156 tokens)

Resolve Context

Resolve touched file paths to governing context sections, critical rules, risk domains, and suggested checklist scope. Uses routing/path-to-context when present and falls back to module paths plus section metadata.

Input parameters:

- `changeKinds` (array): Caller-known change kinds to union with kinds inferred from matching routing rows.
- `detailMode` (string): Per-path detail. Compact (default) deduplicates metadata into the top-level sections list.
- `fallbackMode` (string): Fallback breadth when no routing rule matches. Defaults to minimal; broad restores legacy appliesTo expansion.
- `paths` (array, required): Repository-relative file paths or globs touched by the change
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `checklistScope` (object)
- `detailMode` (string)
- `fallbackMode` (string)
- `paths` (array)
- `riskDomains` (array)
- `sections` (array)

### `get_context_section` (~153 tokens)

Get Context Section

Get full content of a specific context section. Supports glob patterns for hierarchical sections.

\**Hierarchical paths**: For monorepos or large projects, sections can be organized hierarchically (e.g., "api/architecture", "api/endpoints/auth"). Use glob patterns to fetch multiple:
\- `api/*` - direct children only (api/architecture, api/testing)
\- `api/**` - all descendants (api/architecture, api/endpoints/auth)

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required): Section name or glob pattern (e.g., "overview", "api/architecture", "api/*", "api/**")

Output parameters:

- `appliesTo` (array)
- `content` (string)
- `criticalRules` (array)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `generated` (boolean)
- `lastVerifiedAt` (string|null)
- `pattern` (string)
- `readOnly` (boolean)
- `routeCount` (number)
- `section` (string)
- `sections` (array)
- `source` (string)
- `tags` (array)
- `title` (string)
- `updatedAt` (string)
- `verifiedPaths` (array)
- `verifiedRepositoryRevision` (string|null)
- `version` (number|string)

### `update_context_section` (~242 tokens)

Update Context Section

Upload/update a project context section. Use after analyzing local codebase. This action shares documentation with the Damper project for future AI agents.

\**When to use hierarchical names**: For monorepos or large projects, use paths like `api/architecture`, `api/testing` to organize by module. For simple projects, flat names like `overview`, `conventions` are sufficient.

\**criticalRules**: Short, actionable rules that agents MUST follow. These are surfaced automatically in `start_task` and `get_project_context` responses.

⚠️ SECURITY WARNING: Do NOT include sensitive information.

Input parameters:

- `appliesTo` (array): Module names this section applies to
- `content` (string, required): Markdown documentation for this section. Must NOT contain secrets, API keys, or sensitive data.
- `criticalRules` (array): Must-follow rules shown in start_task/get_project_context
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required): Section name or path (e.g., "overview", "api/architecture"). Max 3 levels.
- `tags` (array): Categorization tags

Output parameters:

- `appliesTo` (array)
- `criticalRules` (array)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `section` (string)
- `success` (boolean)
- `tags` (array)
- `version` (number)
- `warnings` (array)

### `delete_context_section` (~57 tokens)

Delete Context Section

Delete a project context section. Use when documentation is outdated or no longer relevant.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required): Section name or path to delete

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `section` (string)
- `success` (boolean)

### `sync_project_context` (~63 tokens)

Sync Project Context

Bulk upload all project context sections at once. Use after analyzing a codebase.

⚠️ SECURITY WARNING: Do NOT include sensitive information.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sections` (array, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `sectionsUpdated` (number)
- `skipped` (array)
- `success` (boolean)

### `get_project_context` (~127 tokens)

Get Project Context

Get project context index (token-efficient). Returns section list with previews. Use get_context_section to fetch full content for sections you need.

\**IMPORTANT:** Call this at session start. Contains architecture, conventions, and patterns you MUST follow. Skipping this leads to mistakes and inconsistent code.

Input parameters:

- `criticalRuleMode` (string): Critical rules to include. Defaults to relevant. Use all for the legacy full payload.
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string): If provided, highlights sections relevant to this task

Output parameters:

- `criticalRuleMode` (string)
- `criticalRuleSections` (array)
- `criticalRules` (array)
- `hint` (string)
- `index` (array)
- `isEmpty` (boolean)
- `relevantSections` (array)
- `repositoryContextHints` (object)

### `get_section_blocks` (~75 tokens)

Get Section Blocks

Get a block index for a context section. Returns headings with character counts. Use to selectively load only relevant parts with `get_section_block_content`.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required): Section name (e.g., "api", "testing")

Output parameters:

- `blocks` (array)
- `section` (string)
- `totalChars` (number)

### `get_section_block_content` (~82 tokens)

Get Section Block Content

Get the full content of specific blocks within a section. Use `get_section_blocks` first to see available block IDs, then fetch only the ones you need.

Input parameters:

- `blockIds` (array, required): Block IDs to fetch
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required): Section name

Output parameters:

- `blocks` (array)
- `section` (string)
- `totalChars` (number)

### `prepare_work` (~199 tokens)

Prepare Feature Work

Build a deterministic, compact work packet with governing context, a shadow graph comparison and provenance, path-owned surfaces, checklist scope, project verification, unvalidated route-fixture representation, instruction drift, and guarded delegation guidance. `verificationCommands` come only from the project's own configuration (its verificationCommands setting, bundle verificationProfiles and quality-gate sections); when none apply the list is empty and `verificationGuidance` explains how to configure them. With `taskId`, also returns `reviewEvidence`: the screenshots, API examples and diagrams the project expects for this scope and how many are attached.

Input parameters:

- `bootstrapVersion` (string)
- `changeKinds` (array)
- `contractStatus` (string)
- `intent` (string)
- `likelyPaths` (array)
- `mode` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string)

Output parameters:

- `repositoryContextHints` (object)
- `reviewEvidence` (object)
- `verificationCommands` (array)
- `verificationGuidance` (string|null)

### `audit_context_health` (~60 tokens)

Audit Context Health

Find invalid route taxonomy, weak or uncovered fixtures, missing baselines, route overlap, stale knowledge, and fallback usage.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `staleDays` (integer)

### `get_context_graph` (~66 tokens)

Get Context Graph

Inspect the typed graph projection derived from context routes, sections, bundles, modules, and optional project-authored relationships.

Input parameters:

- `includeDerived` (boolean)
- `limit` (integer)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `resolve_context_graph` (~82 tokens)

Resolve Context Graph

Run bounded shadow-mode graph traversal for repository paths. Returns ranked context candidates and full provenance without changing authoritative route resolution.

Input parameters:

- `changeKinds` (array)
- `maxCandidates` (integer)
- `maxDepth` (integer)
- `paths` (array, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `list_context_relations` (~42 tokens)

List Context Relationships

List project-authored typed relationships layered over the derived context graph.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `upsert_context_relation` (~149 tokens)

Upsert Context Relationship

Create or update an explicit typed relationship. Existing routes, bundles, modules, and section metadata remain authoritative; use relationships for missing cross-surface or semantic links.

Input parameters:

- `authority` (string)
- `confidence` (number)
- `description` (string)
- `enabled` (boolean)
- `fromKey` (string, required)
- `fromKind` (string, required)
- `metadata` (object)
- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `relation` (string, required)
- `source` (string)
- `toKey` (string, required)
- `toKind` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `delete_context_relation` (~53 tokens)

Delete Context Relationship

Delete a project-authored context relationship. Derived graph edges are not mutable through this tool.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `list_context_routes` (~38 tokens)

List Context Routes

List structured path-to-context routes in priority order.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `upsert_context_route` (~104 tokens)

Upsert Context Route

Create or update a validated structured context route.

Input parameters:

- `appliesTo` (array)
- `changeKinds` (array)
- `description` (string)
- `enabled` (boolean)
- `name` (string, required)
- `patterns` (array, required)
- `priority` (integer)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `riskDomains` (array)
- `sections` (array, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `delete_context_route` (~43 tokens)

Delete Context Route

Delete a structured context route by name.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `preview_context_route_migration` (~41 tokens)

Preview Context Route Migration

Parse Markdown routing into structured route candidates without writing them.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `validate_context_routing` (~39 tokens)

Validate Context Routing

Run project route fixtures against the production context resolver.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `compare_context_resolution` (~47 tokens)

Compare Context Resolution

Compare structured routing output with legacy Markdown routing for repository paths.

Input parameters:

- `paths` (array, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `list_context_bundles` (~39 tokens)

List Context Bundles

List versioned context bundles and recent versions.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `upsert_context_bundle` (~95 tokens)

Upsert Context Bundle

Create or update a coherent context bundle. Semantic changes record immutable versions; identical retries are no-ops.

Input parameters:

- `description` (string)
- `entryPatterns` (array)
- `examplePaths` (array)
- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sections` (array, required)
- `verificationProfiles` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `get_context_bundle` (~56 tokens)

Get Context Bundle

Get a context bundle with immutable version snapshots, optionally selecting one version.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `version` (integer)

### `delete_context_bundle` (~44 tokens)

Delete Context Bundle

Delete a context bundle and its version history.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `list_context_fixtures` (~36 tokens)

List Context Fixtures

List executable context routing expectations.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `upsert_context_fixture` (~198 tokens)

Upsert Context Fixture

Create or update intended executable expectations for an important repository path. Derive assertions from project truth and verified code behavior, never by copying the current resolver output; only write project context when authorized, then run validate_context_routing.

Input parameters:

- `expectedAppliesTo` (array)
- `expectedChangeKinds` (array)
- `expectedRiskDomains` (array)
- `expectedRoutingSources` (array)
- `expectedVerificationCommands` (array)
- `mustInclude` (array)
- `mustNotApplyTo` (array)
- `mustNotInclude` (array)
- `mustNotRiskDomains` (array)
- `mustNotRoutingSources` (array)
- `mustNotVerificationCommands` (array)
- `name` (string, required)
- `path` (string, required)
- `paths` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `report_context_feedback` (~102 tokens)

Report Context Feedback

Report missing, irrelevant, or incorrectly routed knowledge without storing prompts or source code.

Input parameters:

- `acceptedRegressions` (array)
- `incorrectRouting` (array)
- `irrelevantContext` (array)
- `missingContext` (array)
- `notes` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string)
- `usefulGraphCandidates` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `delete_context_fixture` (~43 tokens)

Delete Context Fixture

Delete an executable routing fixture by name.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `prepare_completion` (~183 tokens)

Prepare Task Completion

Resolve final touched paths, compare them with the prepare_work snapshot, detect version drift and scope expansion, and generate context disposition evidence. Also returns `reviewEvidence` for the final scope: which screenshots, API examples and diagrams the project expects, how many are attached (since the last review decision, if any), and `missingRequired` gaps that would block `request_review` / `complete_task`. The scope is recorded on the task so the hand-off checks the same thing.

Input parameters:

- `changeKinds` (array)
- `derivedTouchedPathEvidence` (object)
- `derivedTouchedPaths` (array)
- `implementationSummary` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)
- `touchedPathEvidence` (object)
- `touchedPaths` (array, required)

Output parameters:

- `reviewEvidence` (object)

### `preview_context_update` (~83 tokens)

Preview Context Update

Preview a section replacement or stable-block patch, including semantic changes and sensitive-data warnings, without writing.

Input parameters:

- `content` (string)
- `metadata` (object)
- `operations` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `references` (object)
- `section` (string, required)

### `patch_context_section` (~69 tokens)

Patch Context Section

Apply stable-block operations with optimistic concurrency and immutable version snapshots.

Input parameters:

- `ifVersion` (integer, required)
- `metadata` (object)
- `operations` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `upsert_context_block` (~147 tokens)

Upsert Context Block

Replace or append a stable context block while preserving unrelated blocks. The Markdown content must begin with a level-2 or level-3 heading whose generated slug exactly matches blockId.

Input parameters:

- `blockId` (string, required): Stable ID generated from the block heading, for example "document-item-tax-suppressed" for "## Document Item Tax Suppressed".
- `content` (string, required): Complete Markdown block beginning with a ## or ### heading whose generated slug exactly matches blockId.
- `ifVersion` (integer, required)
- `insertAfterBlockId` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `section` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `verify_context_section` (~75 tokens)

Verify Context Section

Record repository verification without mutating section content.

Input parameters:

- `note` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `repositoryRevision` (string)
- `section` (string, required)
- `taskId` (string)
- `verifiedPaths` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `render_context_routes_markdown` (~41 tokens)

Render Context Routes Markdown

Render the canonical structured route mapping as deterministic generated Markdown.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `list_context_maintenance_candidates` (~47 tokens)

List Context Maintenance Candidates

List the current deduplicated context-maintenance queue without refreshing or mutating it.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

### `refresh_context_maintenance_candidates` (~55 tokens)

Refresh Context Maintenance Candidates

Aggregate privacy-safe feedback, self-assessment gaps, and fallback telemetry; may auto-create private tasks when project policy enables it.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `convert_context_maintenance_candidate` (~53 tokens)

Convert Context Maintenance Candidate

Convert a candidate into a deduplicated private context-maintenance roadmap task.

Input parameters:

- `candidateId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `list_feedback` (~101 tokens)

List Feedback

Get user feedback. Useful for understanding user needs. Feedback summaries include available dates such as `createdAt`, `updatedAt`, `firstOccurredAt`, and `lastOccurredAt`, and `attachmentCount` (screenshots or files the submitter attached; download them with `get_feedback_attachment`).

Input parameters:

- `limit` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `status` (string)

Output parameters:

- `feedback` (array)

### `get_feedback` (~57 tokens)

Get Feedback

Get feedback details with votes, comments and a list of attachments. Download an attachment with `get_feedback_attachment`.

Input parameters:

- `feedbackId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `aiSummary` (string|null)
- `attachmentCount` (number)
- `attachmentUrls` (array): Dashboard URLs (need a signed-in browser session); agents download with get_feedback_attachment
- `comments` (array)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `description` (string)
- `firstOccurredAt` (string|null)
- `id` (string)
- `isPublic` (boolean)
- `lastOccurredAt` (string|null)
- `linkedTaskId` (string|null)
- `metadata`
- `occurrenceCount` (number)
- `source` (string)
- `status` (string)
- `title` (string)
- `type` (string)
- `voteScore` (number)
- `voters` (array)

### `get_feedback_attachment` (~122 tokens)

Get Feedback Attachment

Download a screenshot or file attached to a feedback item. `index` is the 0-based position shown by `get_feedback` (`attachmentCount` in `list_feedback` / `get_feedback` tells you how many exist). Images come back as image content you can view; other files come back as an embedded resource with base64 data.

Input parameters:

- `feedbackId` (string, required)
- `index` (integer): 0-based attachment index (default: 0)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `attachmentCount` (number)
- `contentType` (string)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `feedbackId` (string)
- `index` (number)
- `name` (string)
- `sizeBytes` (number)

### `update_feedback` (~56 tokens)

Update Feedback

Update feedback status or visibility.

Input parameters:

- `feedbackId` (string, required)
- `isPublic` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `status` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `isPublic` (boolean)
- `status` (string)
- `title` (string)
- `type` (string)

### `reply_to_feedback` (~165 tokens)

Reply to Feedback

Reply to a feedback item as a team member. The reply will be visible to the customer. Send follow-up info to the feedback author by setting `notifyCustomer` (emails them) and optionally adding up to 3 `attachments` (PNG/JPEG/WebP/GIF screenshots, 3 MB each) that appear in the email and on the public feedback page.

Input parameters:

- `attachments` (array): Screenshots to attach to the reply (max 3, 3 MB each)
- `content` (string, required): Reply message content
- `feedbackId` (string, required): ID of the feedback item to reply to
- `notifyCustomer` (boolean): Send email notification to the customer
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `attachments` (array)
- `author` (string)
- `content` (string)
- `createdAt` (string)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `feedbackId` (string)
- `id` (string)

### `report_issue` (~87 tokens)

Report Issue

Report an error, bug, or feature request with MCP tools or suggest improvements. Reports that contain personal data, secrets, or chat transcripts are kept private automatically.

Input parameters:

- `category` (string, required)
- `context` (object)
- `description` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `title` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `existingIssueId` (string|null)
- `id` (string)
- `isDuplicate` (boolean)
- `status` (string)
- `title` (string)
- `type` (string)

### `link_feedback_to_task` (~120 tokens)

Link Feedback to Task

Link feedback items to an existing roadmap task. Linked feedback status follows the task and followers are notified once the task is past backlog, the same as linking from the dashboard. To link while creating a task, pass `feedbackIds` to `create_task`. Already-linked and unknown IDs are reported back instead of failing the call; it fails only if none of the IDs exist.

Input parameters:

- `feedbackIds` (array, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskId` (string, required)

Output parameters:

- `alreadyLinkedFeedbackIds` (array)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `feedbackTitles` (array)
- `linkedFeedbackIds` (array)
- `notFoundFeedbackIds` (array)
- `taskId` (string)
- `totalLinkedFeedback` (number)

### `list_pages` (~47 tokens)

List Pages

List content pages and database pages for a project. Database row pages are included with their parentId.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `pages` (array)

### `search_pages` (~51 tokens)

Search Pages

Search pages and linked project knowledge by title/content.

Input parameters:

- `limit` (integer)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `query` (string, required)

Output parameters:

- `results` (array)

### `get_page` (~71 tokens)

Get Page

Read a page, including live content, linked people, propertyValues keyed by property ID, and update timestamp for conflict-safe edits. Full data is included in text and structured output.

Input parameters:

- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `create_page` (~144 tokens)

Create Page

Create a normal page, database page, or database row page. For rows, pass parentId as the database page ID and propertyValues by property ID.

Input parameters:

- `canonicalKey` (string)
- `content` (string)
- `contentWidth` (string)
- `kind` (string)
- `parentId` (string|null)
- `personIds` (array)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `propertyValues` (object): Values keyed by property ID. Dates: YYYY-MM-DD strings; null clears a value.
- `title` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `update_page` (~134 tokens)

Update Page

Update page title, icon, content, content width, kind, agent visibility, or linked people. If ifUpdatedAt is omitted, the tool reads the latest page timestamp first.

Input parameters:

- `content` (string)
- `contentWidth` (string)
- `exposeToAgents` (boolean)
- `icon` (string|null)
- `ifUpdatedAt` (string)
- `kind` (string)
- `pageId` (string, required)
- `personIds` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `title` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `move_page` (~72 tokens)

Move Page

Move a page under another page/database or reorder it. Use parentId null for a top-level page.

Input parameters:

- `pageId` (string, required)
- `parentId` (string|null)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `duplicate_page` (~48 tokens)

Duplicate Page

Duplicate a page, including database row property values and linked people.

Input parameters:

- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `archive_page` (~49 tokens)

Archive Page

Archive a page and its child pages. This is a soft delete.

Input parameters:

- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `archivedCount` (number)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `get_page_database` (~92 tokens)

Get Page Database

Read the complete database definition and every row, including property IDs, names, types, options and propertyValues keyed by property ID in text and structured output. Use only for small databases or an intentional full audit; prefer get_page_database_schema and query_page_database for growing databases.

Input parameters:

- `databasePageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `properties` (array)
- `relationLabels` (object)
- `rows` (array)
- `templates` (array)
- `views` (array)

### `get_page_database_schema` (~67 tokens)

Get Page Database Schema

Read all property IDs, names, types, options, views, and templates without downloading rows. Full definitions are included in text and structured output.

Input parameters:

- `databasePageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `properties` (array)
- `templates` (array)
- `views` (array)

### `query_page_database` (~205 tokens)

Query Page Database

Read a bounded page of database rows using metadata or property filters, stable cursor pagination, a resumable polling cursor, and optional property/content projection. Custom date properties support comparison filters via propertyId and sorting via sort.propertyId (empty dates last). Dates use YYYY-MM-DD strings. Use updatedAt ascending (the default) for incremental polling; other sort cursors are for pagination only. Full projected rows are included in text and structured output. For array properties, in matches any supplied member while contains requires every supplied member. Prefer this over get_page_database for polling or growing databases.

Input parameters:

- `cursor` (string)
- `databasePageId` (string, required)
- `filters` (array)
- `includeContent` (boolean)
- `includeTotal` (boolean)
- `limit` (integer)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `propertyIds` (array)
- `sort` (object)

Output parameters:

- `hasMore` (boolean)
- `nextCursor` (string|null)
- `relationLabels` (object)
- `resumeCursor` (string|null)
- `rows` (array)
- `total` (number)

### `upsert_database_row` (~171 tokens)

Upsert Database Row

Create or update one database row by a parent-scoped canonical key. Retries with unchanged input are no-ops. Values are keyed by property ID. Date values are YYYY-MM-DD strings (for example, 2026-09-13); null clears a value.

Input parameters:

- `canonicalKey` (string, required)
- `content` (string)
- `contentWidth` (string)
- `databasePageId` (string, required)
- `icon` (string|null)
- `kind` (string)
- `personIds` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `propertyValues` (object): Values keyed by property ID. Dates: YYYY-MM-DD strings; null clears a value.
- `title` (string)

Output parameters:

- `changed` (boolean)
- `created` (boolean)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `page` (object)

### `create_task_from_page` (~123 tokens)

Create Task From Page

Create a roadmap task from a page. Copies the page title and content excerpt into the task, links the page as a source backlink, and updates a `roadmap` database property on the row when present.

Input parameters:

- `description` (string)
- `isPublic` (boolean)
- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `quarter` (string|null)
- `status` (string)
- `title` (string)
- `type` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `roadmapItem` (object)

### `create_database_property` (~166 tokens)

Create Database Property

Add a property column to a page database. Property type. Relation types: `page` (linked page IDs), `roadmap` (linked roadmap task IDs), `feedback` (linked feedback IDs). Relation values are string arrays and sync PageLink backlinks.

Input parameters:

- `databasePageId` (string, required)
- `hidden` (boolean)
- `name` (string)
- `options` (object)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `type` (string): Property type. Relation types: `page` (linked page IDs), `roadmap` (linked roadmap task IDs), `feedback` (linked feedback IDs). Relation values are string arrays and sync PageLink backlinks.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `property` (object)

### `update_database_property` (~180 tokens)

Update Database Property

Rename, hide, reorder, or change options/type for a database property. Property type. Relation types: `page` (linked page IDs), `roadmap` (linked roadmap task IDs), `feedback` (linked feedback IDs). Relation values are string arrays and sync PageLink backlinks.

Input parameters:

- `databasePageId` (string, required)
- `hidden` (boolean)
- `name` (string)
- `options` (object)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `propertyId` (string, required)
- `type` (string): Property type. Relation types: `page` (linked page IDs), `roadmap` (linked roadmap task IDs), `feedback` (linked feedback IDs). Relation values are string arrays and sync PageLink backlinks.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `property` (object)

### `update_database_row_values` (~93 tokens)

Update Database Row Values

Set database property values for a row page. Values are keyed by property ID. Date values are YYYY-MM-DD strings (for example, 2026-09-13); null clears a value.

Input parameters:

- `databasePageId` (string, required)
- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `values` (object, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `updatedAt` (string)
- `values` (object)

### `update_database_view` (~152 tokens)

Update Database View

Update a database view layout, visible columns, sort, filters, name, or position. Table and list layouts stack one list per value when config.groupByPropertyId is set; config.groupOrder is that group order. Board already groups into columns. Calendar does not stack groups.

Input parameters:

- `config` (object)
- `databasePageId` (string, required)
- `filters` (array)
- `layout` (string)
- `name` (string)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sort` (object)
- `viewId` (string, required)
- `visiblePropertyIds` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `view` (object)

### `create_database_view` (~104 tokens)

Create Database View

Create a saved database view with table, list, board, or calendar layout.

Input parameters:

- `config` (object)
- `databasePageId` (string, required)
- `filters` (array)
- `layout` (string)
- `name` (string)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sort` (object)
- `visiblePropertyIds` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `view` (object)

### `delete_database_view` (~60 tokens)

Delete Database View

Delete a saved database view. A database must keep at least one view.

Input parameters:

- `databasePageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `viewId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `create_database_template` (~86 tokens)

Create Database Template

Create a database-level page template with content and default property values.

Input parameters:

- `content` (string)
- `databasePageId` (string, required)
- `kind` (string)
- `name` (string)
- `position` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `propertyDefaults` (object)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `template` (object)

### `get_page_backlinks` (~45 tokens)

Get Page Backlinks

List pages that link to a page.

Input parameters:

- `pageId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `backlinks` (array)

### `list_templates` (~35 tokens)

List Templates

List available code templates for this project.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `isEmpty` (boolean)
- `templates` (array)

### `get_template` (~43 tokens)

Get Template

Get full content of a specific code template.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `content` (string)
- `description` (string|null)
- `filePattern` (string|null)
- `name` (string)
- `tags` (array)
- `updatedAt` (string)

### `update_template` (~70 tokens)

Update Template

Create or update a code template.

Input parameters:

- `content` (string, required)
- `description` (string)
- `filePattern` (string)
- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `tags` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `description` (string|null)
- `filePattern` (string|null)
- `name` (string)
- `success` (boolean)
- `tags` (array)

### `sync_templates` (~41 tokens)

Sync Templates

Bulk upload multiple templates at once.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `templates` (array, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)
- `templatesUpdated` (number)

### `list_modules` (~36 tokens)

List Modules

List registered modules in this monorepo.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `isEmpty` (boolean)
- `modules` (array)

### `get_module` (~41 tokens)

Get Module

Get details of a specific module.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dependsOn` (array)
- `description` (string|null)
- `name` (string)
- `path` (string)
- `port` (number|null)
- `tags` (array)
- `updatedAt` (string)

### `update_module` (~80 tokens)

Update Module

Register or update a module in the registry.

Input parameters:

- `dependsOn` (array)
- `description` (string)
- `name` (string, required)
- `path` (string, required)
- `port` (number|null)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `tags` (array)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `dependsOn` (array)
- `description` (string|null)
- `name` (string)
- `path` (string)
- `port` (number|null)
- `success` (boolean)
- `tags` (array)

### `sync_modules` (~66 tokens)

Sync Modules

Bulk upload multiple modules at once.

Input parameters:

- `modules` (array, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `replace` (boolean): When true, deletes modules not included in this payload so the registry exactly matches the supplied list

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `modulesDeleted` (number)
- `modulesUpdated` (number)
- `success` (boolean)

### `delete_module` (~41 tokens)

Delete Module

Delete a registered module by name.

Input parameters:

- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `name` (string)
- `success` (boolean)

### `list_changelogs` (~66 tokens)

List Changelogs

List changelogs for the project. Filter by status (draft, published).

Input parameters:

- `limit` (number)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sort` (string)
- `status` (string)

Output parameters:

- `changelogs` (array)

### `create_changelog` (~77 tokens)

Create Changelog

Create a new changelog entry.

Input parameters:

- `content` (string)
- `date` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `status` (string)
- `summary` (string)
- `title` (string, required)
- `version` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `date` (string|null)
- `id` (string)
- `status` (string)
- `title` (string)
- `version` (string|null)

### `update_changelog` (~85 tokens)

Update Changelog

Update a changelog entry.

Input parameters:

- `changelogId` (string, required)
- `content` (string)
- `date` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `status` (string)
- `summary` (string)
- `title` (string)
- `version` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `date` (string|null)
- `id` (string)
- `publishedAt` (string|null)
- `status` (string)
- `title` (string)
- `version` (string|null)

### `add_to_changelog` (~83 tokens)

Add to Changelog

Add completed tasks to a changelog. Private tasks can be linked; their titles/descriptions are not exposed in public changelog output and are surfaced as an "other updates" count.

Input parameters:

- `changelogId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `taskIds` (array, required)

Output parameters:

- `addedItems` (array)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `roadmapItemCount` (number)
- `title` (string)

### `publish_changelog` (~86 tokens)

Publish Changelog

Publish a changelog with optional email and Twitter notifications.

Input parameters:

- `changelogId` (string, required)
- `postToTwitter` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sendEmail` (boolean)
- `summary` (string)
- `title` (string)
- `version` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `emailsSent` (number)
- `id` (string)
- `publishedAt` (string)
- `title` (string)
- `twitterPost` (object)

### `delete_changelog` (~45 tokens)

Delete Changelog

Permanently delete a changelog entry.

Input parameters:

- `changelogId` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `id` (string)
- `success` (boolean)
- `title` (string)

### `get_completion_checklist` (~234 tokens)

Get Completion Checklist

Load detailed completion checklist branches for the project. Use after `start_task` or `review_task` because those only return a checklist index.

Filters: `groupIds`, `itemIds`, `appliesTo`, `changeKinds`, or `riskDomains` to load only the relevant subset. When scope is uncertain, bias broader rather than narrower.

\**Review evidence:** the response also includes `reviewEvidence`: the project's review evidence policy (base level, trigger change kinds and rules per kind) and, when `appliesTo` / `changeKinds` / `riskDomains` are given, the level each of API examples, screenshots and diagrams has for that scope and why. It is evaluated exactly as the hand-off gate (request_review / complete_task) does, so use it to preview what will be enforced.

Input parameters:

- `appliesTo` (array)
- `changeKinds` (array)
- `groupIds` (array)
- `itemIds` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `riskDomains` (array)

Output parameters:

- `completionChecklist` (object)
- `reviewEvidence` (object)

### `patch_completion_checklist` (~308 tokens)

Patch Completion Checklist

Apply a scoped patch to the project completion checklist, touching only the branches you name. Groups, items, subitems, and standards are matched by `id`; entries with an unknown or omitted id are appended. Item ids are unique document-wide, so naming an item under a different group moves it rather than duplicating it. Listing groups/items/subitems only ever adds or merges — deleting is explicit, via the `remove*` fields. Anything the patch does not mention is left unchanged, so this is the safe way to amend taxonomy incrementally — use `update_project_settings` only when you intend to replace the entire document.

Define `availableScopes` before writing context routes: route `appliesTo`, `changeKinds`, and `riskDomains` are validated against it, and unknown values are reported as health findings rather than rejected outright.

Input parameters:

- `availableScopes` (object): Taxonomy that context routes are validated against; merged per provided key
- `groups` (array)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `removeGroupIds` (array)
- `removeItemIds` (array): Item ids to remove; item ids are unique document-wide
- `removeStandardIds` (array)
- `removeSubitemIds` (array): Qualified `itemId/subitemId`, since subitem ids are only unique within their item
- `scopeGuidance` (object)
- `standards` (array)

Output parameters:

- `completionChecklist` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `message` (string)

### `preview_completion_checklist_migration` (~67 tokens)

Preview Completion Checklist Migration

Preview how a legacy flat completion checklist could be regrouped into native V2. Flags broad items, command-dump style items, and title-derived ids before writing the migrated document.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `preview` (object)

### `get_project_settings` (~137 tokens)

Get Project Settings

View current project settings, including the completion checklist index, standards refs, scope guidance, and the review evidence policy: per kind (apiExamples, screenshots, diagrams) a base level, the change kinds that trigger it, and rules that raise or lower it for specific surfaces, change kinds or risk domains; plus partialStageEvidence (partial hand-offs warn or block), plannedScope (whether prepare_work expected paths count) and checkDirectDone (whether moving straight to done is checked). Use `get_completion_checklist` to load detailed checklist branches.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `completionChecklist` (object)
- `contextMaintenancePolicy` (object)
- `reviewEvidencePolicy` (object)
- `verificationCommands` (object): Verification commands prepare_work reports come only from the project: these settings, context bundle verificationProfiles and quality-gate sections. Damper adds no defaults; with none configured, pr…

### `update_project_settings` (~280 tokens)

Update Project Settings

Configure agent-relevant project settings, including the structured completion checklist and the review evidence policy (partial update: per kind a base level, optional trigger change kinds and `*Rules` that raise or lower the level for surfaces, change kinds or risk domains; plus partialStageEvidence, plannedScope and checkDirectDone — see the field descriptions). Preview the result with `get_completion_checklist` and a scope. Also sets `verificationCommands` (project-wide and per-surface commands prepare_work reports; Damper has no built-in defaults). This REPLACES the whole completion checklist document — use `patch_completion_checklist` to amend part of it. Prefer outcome-based proof groups, stable explicit ids, and referenced standards sections instead of command inventories.

Input parameters:

- `completionChecklist` (object)
- `contextMaintenancePolicy` (object)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `reviewEvidencePolicy` (object): Partial update of which review artifacts agents are asked for (merged into the current policy)
- `verificationCommands` (object): Partial update of the project's verification commands. Verification commands prepare_work reports come only from the project: these settings, context bundle verificationProfiles and quality-gate sect…

Output parameters:

- `completionChecklist` (object)
- `contextMaintenancePolicy` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `message` (string)
- `reviewEvidencePolicy` (object)
- `verificationCommands` (object)

### `open_public_page` (~121 tokens)

Open Public Page

Get the public URL for a project page (roadmap, feedback, changelog, or a specific roadmap item). **IMPORTANT:** NEVER guess or construct public page URLs yourself. Always call this tool.

\**Pages:** roadmap, feedback, changelog, roadmap_item
\**roadmap_item** requires `itemId` parameter.

Input parameters:

- `itemId` (string): Roadmap item ID (required when page is "roadmap_item")
- `page` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `enabled` (boolean)
- `note` (string)
- `url` (string)

### `list_status_maintenance_targets` (~50 tokens)

List Maintenance Targets

List status-page groups and monitors for maintenance targeting. Returns identifiers, names and visibility without probe configuration.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `groups` (array)

### `list_status_maintenance` (~61 tokens)

List Status Maintenance

List maintenance windows, scope, schedules, visibility and timeline updates (newest first) for this project. Use the returned IDs to edit windows or timeline messages.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `maintenance` (array)

### `create_status_maintenance` (~209 tokens)

Create Status Maintenance

Create a scheduled status-page maintenance window. Dates use ISO 8601 UTC. Use list_status_maintenance_targets to choose groupId or checkIds (mutually exclusive). Omit both for all monitors when creating; omit both when editing to preserve scope. Set groupId and checkIds to null to target all monitors. isPublic defaults to true on creation. Public changes queue subscriber notifications for background delivery with retries. Success confirms the change and queue commit, not email delivery. Private windows still suppress monitoring alerts during the active schedule.

Input parameters:

- `actualEndAt`
- `actualStartAt`
- `checkIds`
- `description`
- `groupId` (string|null)
- `isPublic` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `scheduledEndAt` (string, required)
- `scheduledStartAt` (string, required)
- `state` (string)
- `title` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `maintenance` (object)

### `update_status_maintenance` (~234 tokens)

Update Status Maintenance

Edit maintenance details, schedule, scope or visibility. For a state change with a timeline message, use add_status_maintenance_update. Use list_status_maintenance_targets to choose groupId or checkIds (mutually exclusive). Omit both for all monitors when creating; omit both when editing to preserve scope. Set groupId and checkIds to null to target all monitors. isPublic defaults to true on creation. Public changes queue subscriber notifications for background delivery with retries. Success confirms the change and queue commit, not email delivery. Private windows still suppress monitoring alerts during the active schedule.

Input parameters:

- `actualEndAt`
- `actualStartAt`
- `checkIds`
- `description`
- `groupId` (string|null)
- `isPublic` (boolean)
- `maintenanceId` (string, required): Maintenance ID from list_status_maintenance
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `scheduledEndAt` (string)
- `scheduledStartAt` (string)
- `state` (string)
- `title` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `maintenance` (object)

### `delete_status_maintenance` (~69 tokens)

Delete Status Maintenance

Permanently delete a maintenance window and its timeline. To retain history, use add_status_maintenance_update with state cancelled instead.

Input parameters:

- `maintenanceId` (string, required): Maintenance ID from list_status_maintenance
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `add_status_maintenance_update` (~163 tokens)

Add Maintenance Update

Post a timeline message and transition state (scheduled, in_progress, completed or cancelled). isPublic and notifySubscribers default to true. Private updates cannot change the state of public maintenance. Pass expectedState and expectedIsPublic from the latest read for conflict detection; reuse a requestId UUID for retries of the same post.

Input parameters:

- `expectedIsPublic` (boolean)
- `expectedState` (string)
- `isPublic` (boolean)
- `maintenanceId` (string, required): Maintenance ID from list_status_maintenance
- `message` (string, required)
- `notifySubscribers` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `requestId` (string)
- `state` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `notificationFailed` (boolean)
- `update` (object)

### `edit_status_maintenance_update` (~81 tokens)

Edit Maintenance Update

Correct a historical maintenance timeline message only. State and visibility remain immutable; this does not send subscriber notifications.

Input parameters:

- `maintenanceId` (string, required): Maintenance ID from list_status_maintenance
- `message` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `updateId` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `notificationFailed` (boolean)
- `update` (object)

### `get_status_summary` (~68 tokens)

Get Status Summary

Overall status page health: overall state, per-group state, monitor counts, active incidents and 24h/90d uptime (0-1, null without data). Maintenance windows show as maintenance.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `summary` (object)

### `get_status_history` (~117 tokens)

Get Status History

Uptime history for a window (24h, 7d, 30d or 90d; default 90d) as bucketed points. Filter by groupId or checkId; without checkId only monitors included in uptime count. Maintenance is excluded.

Input parameters:

- `checkId` (string): Monitor ID from list_status_checks
- `groupId` (string): Group ID from list_status_groups
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `window` (string)

Output parameters:

- `points` (array)
- `uptime` (number|null)
- `window` (string)

### `list_status_groups` (~46 tokens)

List Status Groups

List status page groups (components) in display order with visibility and monitor/incident counts.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `groups` (array)

### `create_status_group` (~91 tokens)

Create Status Group

Create a status page group (component). slug is lowercase letters, digits and dashes, unique per project. isPublic defaults to true.

Input parameters:

- `description`
- `isPublic` (boolean)
- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `slug` (string, required)
- `sortOrder` (integer)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `group` (object)

### `update_status_group` (~91 tokens)

Update Status Group

Edit a group name, slug, description, sort order or visibility.

Input parameters:

- `description`
- `groupId` (string, required): Group ID from list_status_groups
- `isPublic` (boolean)
- `name` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `slug` (string)
- `sortOrder` (integer)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `group` (object)

### `delete_status_group` (~66 tokens)

Delete Status Group

Permanently delete a group together with its monitors and their results. Scheduled or in-progress maintenance for the group is cancelled.

Input parameters:

- `groupId` (string, required): Group ID from list_status_groups
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `list_status_checks` (~72 tokens)

List Status Monitors

List monitors (status checks) with type, target, schedule, current state and last run. Set includeDailyUptime for 30 days of daily uptime per monitor.

Input parameters:

- `includeDailyUptime` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `checks` (array)

### `create_status_check` (~240 tokens)

Create Status Monitor

Create an http, ssl or heartbeat monitor in a group. http and ssl monitors require a public url; heartbeat monitors return a heartbeatUrl for your job to ping. Probe header values are write-only and never returned (hasHeaders reports whether any are set). Creating an enabled monitor runs it once immediately. Plan limits apply to monitor count and interval.

Input parameters:

- `checkType` (string)
- `description`
- `expectedStatusMax` (integer)
- `expectedStatusMin` (integer)
- `failureThreshold` (integer)
- `groupId` (string, required)
- `headers` (array)
- `heartbeatGraceMinutes` (integer)
- `includeInUptime` (boolean)
- `intervalSeconds` (integer)
- `isEnabled` (boolean)
- `isPublic` (boolean)
- `method` (string)
- `name` (string, required)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sslWarningDays` (integer)
- `successThreshold` (integer)
- `timeoutMs` (integer)
- `url` (string)

Output parameters:

- `check` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `update_status_check` (~250 tokens)

Update Status Monitor

Edit a monitor. Passing headers replaces all stored headers; pass [] to clear them. http and ssl monitors require a public url; heartbeat monitors return a heartbeatUrl for your job to ping. Probe header values are write-only and never returned (hasHeaders reports whether any are set). Creating an enabled monitor runs it once immediately.

Input parameters:

- `checkId` (string, required): Monitor ID from list_status_checks
- `checkType` (string)
- `description`
- `expectedStatusMax` (integer)
- `expectedStatusMin` (integer)
- `failureThreshold` (integer)
- `groupId` (string)
- `headers` (array)
- `heartbeatGraceMinutes` (integer)
- `includeInUptime` (boolean)
- `intervalSeconds` (integer)
- `isEnabled` (boolean)
- `isPublic` (boolean)
- `method` (string)
- `name` (string)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `sslWarningDays` (integer)
- `successThreshold` (integer)
- `timeoutMs` (integer)
- `url` (string)

Output parameters:

- `check` (object)
- `dashboardUrl` (string): Full dashboard URL of the affected resource

### `delete_status_check` (~68 tokens)

Delete Status Monitor

Permanently delete a monitor with its results and monitor-specific alert recipients. Set isEnabled false with update_status_check to pause instead.

Input parameters:

- `checkId` (string, required): Monitor ID from list_status_checks
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `run_status_check` (~66 tokens)

Run Status Monitor

Run a monitor now and record the result. The outcome feeds the monitor state and may open or resolve an automated incident.

Input parameters:

- `checkId` (string, required): Monitor ID from list_status_checks
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `result` (object)

### `list_status_incidents` (~52 tokens)

List Status Incidents

List automated and manual incidents (open first, then newest) with affected component and timeline updates (newest first).

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `incidents` (array)

### `create_status_incident` (~179 tokens)

Create Status Incident

Open a manual incident, optionally tied to a groupId or checkId. Dates use ISO 8601 UTC. initialUpdateMessage (or summary) becomes the first timeline update. isPublic and notifySubscribers default to true: public changes queue subscriber notifications and alert recipients are notified in the background. Success confirms the change, not delivery.

Input parameters:

- `checkId` (string)
- `currentStage` (string)
- `groupId` (string)
- `initialUpdateIsPublic` (boolean)
- `initialUpdateMessage`
- `isPublic` (boolean)
- `notifySubscribers` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `resolvedAt`
- `startedAt` (string, required)
- `summary`
- `title` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `incident` (object)

### `update_status_incident` (~128 tokens)

Update Status Incident

Edit incident details, affected component, dates or visibility without notifying anyone. To change the stage, use add_status_incident_update.

Input parameters:

- `checkId` (string)
- `currentStage` (string)
- `groupId` (string)
- `incidentId` (string, required): Incident ID from list_status_incidents
- `isPublic` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `resolvedAt`
- `startedAt` (string)
- `summary`
- `title` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `incident` (object)

### `delete_status_incident` (~80 tokens)

Delete Status Incident

Permanently delete an incident and its timeline. For a monitor incident, results recorded during it are cleared so uptime is recalculated. To keep history, post a resolved update instead.

Input parameters:

- `incidentId` (string, required): Incident ID from list_status_incidents
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

### `add_status_incident_update` (~149 tokens)

Add Incident Update

Post a timeline message and move the incident to investigating, identified, monitoring or resolved. resolvedAt is only valid with stage resolved. Private updates cannot change the stage of a public incident. isPublic and notifySubscribers default to true: public changes queue subscriber notifications and alert recipients are notified in the background. Success confirms the change, not delivery.

Input parameters:

- `incidentId` (string, required): Incident ID from list_status_incidents
- `isPublic` (boolean)
- `message` (string, required)
- `notifySubscribers` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `resolvedAt`
- `stage` (string, required)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `update` (object)

### `list_status_alert_recipients` (~64 tokens)

List Alert Recipients

List who is alerted when monitors go down or recover: account users by email or voice call, external emails and Slack channels, for all monitors or one checkId.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.

Output parameters:

- `recipients` (array)

### `create_status_alert_recipient` (~133 tokens)

Create Alert Recipient

Add an alert recipient. type user_email and voice_call need userId (an account user; voice calls need a verified phone with urgent calls enabled), email needs email, slack_channel needs slackChannelId from the connected Slack workspace. Omit checkId to alert for all monitors.

Input parameters:

- `checkId` (string)
- `email` (string)
- `isEnabled` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `slackChannelId` (string)
- `type` (string, required)
- `userId` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `recipient` (object)

### `update_status_alert_recipient` (~121 tokens)

Update Alert Recipient

Edit an alert recipient, for example to pause it with isEnabled false or change its target. The same type requirements as create apply.

Input parameters:

- `checkId` (string)
- `email` (string)
- `isEnabled` (boolean)
- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `recipientId` (string, required): Recipient ID from list_status_alert_recipients
- `slackChannelId` (string)
- `type` (string)
- `userId` (string)

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `recipient` (object)

### `delete_status_alert_recipient` (~54 tokens)

Delete Alert Recipient

Permanently remove an alert recipient.

Input parameters:

- `projectId` (string, required): Project ID. Use list_projects to find available project IDs.
- `recipientId` (string, required): Recipient ID from list_status_alert_recipients

Output parameters:

- `dashboardUrl` (string): Full dashboard URL of the affected resource
- `success` (boolean)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-usedamper-mcp/api#diagnostics

## Score history

- 2026-11-05: 76
- 2026-11-04: 75
- 2026-11-03: 75
- 2026-11-02: 74
- 2026-11-01: 74
- 2026-10-31: 73
- 2026-10-30: 73

## Common questions

### What is the Damper MCP server?

Damper is an MCP server listed in the public MCP registry as com.usedamper/mcp. Feedback, roadmap, agent task execution with review, changelog, status pages and error logs. This page covers its hosted endpoint (https://api.usedamper.com/mcp).

### Is the Damper MCP server safe to use?

Damper scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Damper MCP server expose?

Damper exposes 141 tools: list_projects, get_agent_instructions, list_tasks, get_task, list_self_assessments, and 136 more. Their descriptions and schemas cost roughly 19,061 tokens of context every time the server is loaded.

### Does the Damper MCP server require authentication?

Yes. Damper asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Damper MCP server still maintained?

Damper is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.usedamper.com/mcp
- Authorisation metadata: https://api.usedamper.com/.well-known/oauth-protected-resource/mcp
- Website: https://usedamper.com/mcp-docs
- Changelog RSS feed: https://verifymcp.io/servers/com-usedamper-mcp/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-usedamper-mcp/api.json
- HTML version of this page: https://verifymcp.io/servers/com-usedamper-mcp/api
