Call this server's tools from your browser. Nothing to install.
https://mcp.dutify.ai
Dutify personal key (du_live_...) from your account settings
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
find_my_workspace Read-only
Unified Dutify find_my_workspace: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota.
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Tools (190)
Tool list last changed Oct 27, 2026.
find_my_workspace
Unified Dutify find_my_workspace: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_comment_bug
Add a comment to a bug report. Pass isInternal=true for internal-only. API-key scope: `feedback:comments:write`.
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
content*
string
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
isInternal
boolean
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"content"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"content": {
"type": "string"
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"isInternal": {
"type": "boolean"
}
},
"additionalProperties": false
}
fr_comment_request
Add a comment to a feature request. Pass isInternal=true to make the comment visible only to users with `View Internal Data` permission. API-key scope: `feedback:comments:write`.
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
content*
string
Comment body
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
isInternal
boolean
Default: false
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"content"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"content": {
"type": "string",
"description": "Comment body"
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"isInternal": {
"type": "boolean",
"description": "Default: false"
}
},
"additionalProperties": false
}
fr_create_bug
Create a new bug report on a board. Severity and productArea are resolved by name (lenient match). Environment is a free-form map (browser, OS, url, etc.). API-key scope: `feedback:bugs:write`.
Argument
Type
Description
title*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
severity
string
Optional severity name
boardSlug*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
isSecurity
boolean
Default false. True forces the bug to private regardless of board visibility.
environment
object
Free-form map: {browser, os, version, url, ...}
productArea
fr_create_request
Create a new feature request on a board. Category is resolved by name (lenient match). No turnstile token required — API-key authentication is sufficient. Returns the new request with assigned shortId. API-key scope: `feedback:requests:write`.
Argument
Type
Description
title*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
category
string
Optional category name
boardSlug*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
Plain text or markdown body
Input schema (JSON)
{
"type": "object",
"required": [
"boardSlug",
"title"
],
"properties": {
"title": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"category": {
"type": "string",
"description": "Optional category name"
},
"boardSlug": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "Plain text or markdown body"
}
},
"additionalProperties": false
}
fr_delete_bug
Permanently delete a bug report. Requires `Manage Queue` permission. Irreversible. API-key scope: `feedback:bugs:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_delete_request
Permanently delete a feature request. Requires `Manage Queue` permission. Returns 204 on success. This operation is irreversible — confirm with the user before calling unless the intent is unambiguous. API-key scope: `feedback:requests:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_get_bug
Get a bug report by short ID (e.g. "BG-99"). Returns full detail: title, reproduction steps, expected/actual result, severity, status, product area, assignee, affectedCount, environment, comments count. Internal notes and linkedIssueUrl populated only for `View Internal Data` permission. API-key scope: `feedback:bugs:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
Short ID like "BG-99"
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string",
"description": "Short ID like \"BG-99\""
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_get_request
Get a feature request by short ID (e.g. "FR-42"). Returns full detail: title, description, status, category, milestone, voteCount, commentCount, reactions. Internal notes and linkedTaskIds are populated only when the caller has `View Internal Data` permission. API-key scope: `feedback:requests:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
Short ID like "FR-42"
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string",
"description": "Short ID like \"FR-42\""
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_list_bugs
List bug reports on a feedback board (by board slug). Filter by severity and/or status name (lenient match). API-key scope: `feedback:bugs:read`.
read-only
Argument
Type
Description
status
string
Bug status name (lenient match)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
severity
string
Severity level name (lenient match)
boardSlug*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"boardSlug"
],
"properties": {
"status": {
"type": "string",
"description": "Bug status name (lenient match)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"severity": {
"type": "string",
"description": "Severity level name (lenient match)"
},
"boardSlug": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_list_requests
List feature requests on a feedback board (by board slug). Filter by status / category / milestone name (lenient — trimmed + case-insensitive). Pass `q` to search request titles instead. Paginated via page/size. API-key scope: `feedback:requests:read`.
read-only
Argument
Type
Description
q
string
Title search query (ignores other filters when set)
page
integer
Zero-based page number (default 0)
size
integer
Page size (default 20, max 200)
status
string
Status name filter (e.g. "In Progress")
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
category
string
boardSlug*
string
Board slug (from list_boards)
milestone
string
fr_moderate_bug
Approve, reject, or mark a bug as spam. Action is case-insensitive. Requires `Manage Queue` permission. API-key scope: `feedback:moderation:write`.
destructive
Argument
Type
Description
action*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"action"
],
"properties": {
"action": {
"enum": [
"approve",
"reject",
"spam"
],
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_moderate_request
Approve, reject, or mark a feature request as spam. Action is case-insensitive. Requires `Manage Queue` permission. API-key scope: `feedback:moderation:write`.
destructive
Argument
Type
Description
action*
string
Moderation action
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"action"
],
"properties": {
"action": {
"enum": [
"approve",
"reject",
"spam"
],
"type": "string",
"description": "Moderation action"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_set_bug_assignee
Assign or unassign a bug. Provide `assigneeEmail` (resolved case-insensitive against workspace members) OR `assigneeId` (UUID). Exactly one; both = 400. Passing neither unassigns. API-key scope: `feedback:bugs:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
assigneeId
string
User UUID
assigneeEmail
string
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"assigneeId": {
"type": "string",
"description": "User UUID"
},
"assigneeEmail": {
"type": "string"
}
},
"additionalProperties": false
}
fr_set_bug_status
Change a bug status by name (lenient match against the board's bug-status set). API-key scope: `feedback:bugs:write`.
destructive
Argument
Type
Description
status*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"status"
],
"properties": {
"status": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_set_bug_visibility
Toggle a bug's public visibility. Security bugs stay private regardless. API-key scope: `feedback:bugs:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
isPublic*
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"isPublic"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"isPublic": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_set_request_status
Change a feature request's status by name. The name is resolved leniently against the request's board's status set (trim + case-insensitive). Returns the updated request detail. API-key scope: `feedback:requests:write`.
destructive
Argument
Type
Description
status*
string
Status name (e.g. "In Progress")
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId",
"status"
],
"properties": {
"status": {
"type": "string",
"description": "Status name (e.g. \"In Progress\")"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_toggle_bug_affected
Toggle the caller's "I'm affected" marker on a bug. Returns the updated bug detail with new affectedCount. API-key scope: `feedback:bugs:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
fr_vote_request
Toggle a vote or emoji reaction on a feature request. Passing emoji=null or omitting the field registers a plain upvote. Calling the tool again with the same emoji removes the vote (idempotent toggle). API-key scope: `feedback:votes:write`.
destructive
Argument
Type
Description
emoji
string
Optional emoji (e.g. "👍")
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shortId*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"shortId"
],
"properties": {
"emoji": {
"type": "string",
"description": "Optional emoji (e.g. \"👍\")"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shortId": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
get_api_catalog
Discover deployed API tags or a tag schema for one product. Prefers the versioned service-qualified catalog; falls back only when unsupported. Discovery never grants access.
Fetch the request/response example payloads (full JSON values) for a Dutify API resource tag. Use this when you're about to write rich content via a tool that accepts a TipTap `content` parameter (e.g. wiki_create_page) and need a concrete reference of what the doc shape looks like — banners, collapsibles, mermaid diagrams, code blocks with language, mentions, inline labels, tables, task lists, etc. Pass the resource tag (e.g. "Wiki Pages (Lite)", "Milestone Articles"). Optionally narrow with `operationId` (e.g. "createPage") and `name` (e.g. "full" or "full-tiptap") — both names appear in the per-tag detail response so an agent can pick exactly the example it needs without paying tokens for the rest. Returns the catalog JSON; the example payloads are under `operations[*].requestBodyExamples[name].value`.
Tag list (lightweight) is at GET /v1/api-catalog. Per-tag detail (schemas, no example bodies) is at GET /v1/api-catalog/{tag}. This tool calls the third tier — GET /v1/api-catalog/{tag}/examples — which carries the heavy payloads.
read-only
Argument
Type
Description
tag*
string
Resource tag, e.g. "Wiki Pages (Lite)", "Milestone Articles", "Tasks". Pass it verbatim — the case and spacing matter.
name
string
Optional: narrow to one named example. Common names: "minimal", "full", "full-tiptap", "full-markdown". Names appear in the per-tag detail response under each operation's requestBody.examples.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
hub_clear_call_custom_prompt
Remove the caller's own per-call prompt. Their next hub_regenerate_summary uses their instruction set without a per-call prompt. Requires recordings:write scope.
destructive
Argument
Type
Description
id*
integer
UserCall id (integer), from hub_list_calls.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "UserCall id (integer), from hub_list_calls."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_clear_event_custom_prompt
Remove one occurrence's own prompt. The series prompt, if any, keeps applying on its own — nothing 'falls back', the series prompt was already in use. Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
eventId*
string
Event id from hub_list_calendar_events.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"eventId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"eventId": {
"type": "string",
"description": "Event id from hub_list_calendar_events."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_clear_series_custom_prompt
Remove a series' custom prompt. Each occurrence keeps only its own prompt, if it has one. Never clear a series prompt to 'avoid a conflict' with an occurrence prompt: there is no conflict, both apply, and clearing it drops instructions every other occurrence relies on. Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
seriesMasterId*
string
Series master id from hub_list_calendar_events.
Input schema (JSON)
{
"type": "object",
"required": [
"seriesMasterId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"seriesMasterId": {
"type": "string",
"description": "Series master id from hub_list_calendar_events."
}
},
"additionalProperties": false
}
hub_count_calls
Return the total number of calls visible to the actor user. Use to plan pagination. Requires recordings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_count_search_calls
Count of calls matching a search query. Pair with `hub_search_calls` for paginated UIs. Requires recordings:read scope.
read-only
Argument
Type
Description
query
string
Search text.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search text."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_delete_call
Delete a call by ID. Hard-deletes both the UserCall metadata and the underlying recording media. NOT REVERSIBLE — use with care. Requires recordings:write scope.
destructive
Argument
Type
Description
id*
integer
UserCall ID.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "UserCall ID."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_get_audio_url
Generate a short-lived signed URL to download the recording's audio (typically MP3 or WAV). The URL is valid for `expiryMinutes` minutes (default 30, max enforced by Hub). The agent should NOT cache the URL — request a fresh one each time the audio is needed. Requires recordings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
recordingId*
integer
Recording ID.
expiryMinutes
integer
How long the URL stays valid. Default 30.
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"recordingId": {
"type": "integer",
"description": "Recording ID."
},
"expiryMinutes": {
"type": "integer",
"description": "How long the URL stays valid. Default 30."
}
},
"additionalProperties": false
}
hub_get_call
Fetch a single call by ID. Returns the full UserCallDTO. Field map (the DTO is deeply nested):
- top-level `id` (integer) — what /usercall/{id} expects, what list/search return
- top-level `clickupList`/`jiraProjectId`/`airtableBaseId`/`airtableTableId` — populated when this call has been pushed to that vendor
- top-level `summaryApplied`/`actionItemsApplied`/etc. (bool) — has the summary/etc. been pushed?
- `call.id` (integer) — INTERNAL Zoom/Meet/Teams call id, NOT for /usercall/{id} paths
- `call.callUuid` (string) — what `hub_send_call_to_jira/clickup/airtable` want as `callUUID`
- `call.attendees` (string, often "") — NOT a structured array
- `call.recordings[i].id` (integer) — recording id for /recording/{id}/audio-url etc.
- `call.recordings[i].summary`/`keyPoints`/`actionItems`/`enhancedNotes` — markdown STRINGS, not arrays; the CALLER's own version (generated from their workspace prompt, per-call prompt, notes and note template), never another participant's
- `call.recordings[i].userNotes` — only the caller's own desktop notes, null otherwise
Requires recordings:read scope.
read-only
Argument
Type
Description
id*
integer
UserCall integer ID — the OUTER `id` from list/search/etc., NOT the inner `call.id`.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
hub_get_custom_prompt
Get the workspace's custom prompt — house-style instructions that, together with each participant's own per-call prompt, notes and note template, form the instruction set their version of the summary, key points, action items and enhanced notes is generated from (task generation too). Returns { customPrompt: string | null }. Requires workspace-settings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_get_default_workspace
Get the user's "default workspace" — where new calendar events without an explicit assignment get routed. Returns { workspaceId: uuid | null }. Requires user-settings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_get_media_url
Like `hub_get_audio_url` but returns the full media (video + audio) when the recording has a video track. Falls back to audio-only when there isn't one. Same expiry semantics. Requires recordings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
recordingId*
integer
Recording ID.
expiryMinutes
integer
How long the URL stays valid. Default 30.
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"recordingId": {
"type": "integer",
"description": "Recording ID."
},
"expiryMinutes": {
"type": "integer",
"description": "How long the URL stays valid. Default 30."
}
},
"additionalProperties": false
}
hub_get_preferred_integration
Get the workspace's preferred integration target — which task system new actions are routed to by default (Jira, ClickUp, Airtable, PM, etc.). Requires workspace-settings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_get_preview_url
Get a signed URL for the recording's preview thumbnail (a still image or short looping clip). Useful for embedding a card. Same expiry semantics. Requires recordings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
recordingId*
integer
Recording ID.
expiryMinutes
integer
How long the URL stays valid. Default 30.
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"recordingId": {
"type": "integer",
"description": "Recording ID."
},
"expiryMinutes": {
"type": "integer",
"description": "How long the URL stays valid. Default 30."
}
},
"additionalProperties": false
}
hub_get_recording_progress
Get the processing progress of a recording. Returns an integer 0-100 — useful for polling after a `hub_reprocess_recording` call. Requires recordings:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
recordingId*
integer
Recording ID (integer, from a call's recordingId field).
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"recordingId": {
"type": "integer",
"description": "Recording ID (integer, from a call's recordingId field)."
}
},
"additionalProperties": false
}
hub_get_workspace
Get details for the selected workspace (or the workspace bound to a workspace key) (the one this API key was provisioned for). Hub does not currently expose a single-workspace GET, so this returns the matching entry from the user's workspaces list. Requires workspaces:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_lens_chat
Run a Lens chat query against the workspace's knowledge (recordings, calls, transcripts, integrated SaaS data). Returns the synthesized answer as a string. Pass `lastMessage` (the new user turn) and optionally `history` (prior turns). For multi-turn conversations the agent SHOULD pass an accumulating history so Lens can resolve references like "the last call we discussed". Calls can take 15-30s on synthesis-heavy queries; the MCP timeout is generous to allow this. Requires lens:chat scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
history
array
Prior turns in chronological order (oldest first). Each entry is { user, datetime, content }. Optional but recommended for follow-up questions.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
lastMessage*
string
The new user message to send to Lens. Required.
Input schema (JSON)
{
"type": "object",
"required": [
"lastMessage"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"history": {
"type": "array",
"items": {
"type": "object",
"required": [
"user",
"content"
],
"properties": {
"user": {
"type": "string",
"description": "Speaker identifier — typically the user's email or \"assistant\"."
},
"content": {
"type": "string",
"description": "The message text."
},
"datetime": {
"type": "string",
"description": "ISO-8601 timestamp."
}
},
"additionalProperties": false
},
"description": "Prior turns in chronological order (oldest first). Each entry is { user, datetime, content }. Optional but recommended for follow-up questions."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"lastMessage": {
"type": "string",
"description": "The new user message to send to Lens. Required."
}
},
"additionalProperties": false
}
hub_list_calendar_events
List the actor user's calendar events in a date range. Use this to find the eventId or seriesMasterId a prompt should attach to. Each event includes subject, start/end, whether a recording bot is subscribed, and any eventCustomPrompt / seriesCustomPrompt already set. Events belong to the user across all workspace assignments; workspace assignment is processing context, not ownership. Requires calendar:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
endDate*
string
ISO-8601 end of range, e.g. 2026-09-30T00:00:00Z. Required.
startDate*
string
ISO-8601 start of range, e.g. 2026-09-01T00:00:00Z. Required.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"startDate",
"endDate"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"endDate": {
"type": "string",
"description": "ISO-8601 end of range, e.g. 2026-09-30T00:00:00Z. Required."
},
"startDate": {
"type": "string",
"description": "ISO-8601 start of range, e.g. 2026-09-01T00:00:00Z. Required."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_list_calls
Page through all calls the actor user can see (their own + any explicitly shared). Returns a list of UserCallDTO. Pagination is page+size; sort order is most-recent first. Requires recordings:read scope.
read-only
Argument
Type
Description
page
integer
0-based page index.
size
integer
Page size (backend default ~20, cap typically 100).
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "0-based page index."
},
"size": {
"type": "integer",
"description": "Page size (backend default ~20, cap typically 100)."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_list_integrations
List all integrations connected to the selected workspace (or the workspace bound to a workspace key). Returns one entry per connected toolkit (Slack, Jira, ClickUp, Airtable, Notion, Gmail, GCal, GitHub, etc.) with system name, connection status, last sync time, and any vendor metadata. Useful for choosing which `setPreferredIntegration` value is valid, or for reporting connection health to the user. Requires integrations:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_list_members
List all members of the selected workspace (or the workspace bound to a workspace key). Each entry includes user UUID, email, name, role, and join timestamp. Useful for "tag this person", "summarize who said what in the last call", etc. Requires members:read scope.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_regenerate_summary
Re-run the analysis for the CALLER's own version of the summary, key points, action items and (when they have notes) enhanced notes, against the existing transcript and using their CURRENT instruction set (workspace prompt, per-call prompt, notes and note template). Other participants' versions are never touched. Cheaper than `hub_reprocess_recording`. Returns the new summary text. Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
saveToDb
boolean
Default true. When false, returns the new summary without persisting it (preview mode).
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
recordingId*
integer
Recording ID.
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"saveToDb": {
"type": "boolean",
"description": "Default true. When false, returns the new summary without persisting it (preview mode)."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"recordingId": {
"type": "integer",
"description": "Recording ID."
}
},
"additionalProperties": false
}
hub_reprocess_recording
Re-run the FULL pipeline on a recording: transcription + summary + key points + action items. Slower and more expensive than `hub_regenerate_summary`. Use when a fresh transcription would meaningfully improve the result (different language detection, speaker diarization fix, etc.). Returns the updated recording DTO. Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
regenerate
boolean
Whether to regenerate downstream artifacts (key points, action items) after the new transcription. Default true on the backend.
recordingId*
integer
Recording ID.
Input schema (JSON)
{
"type": "object",
"required": [
"recordingId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"regenerate": {
"type": "boolean",
"description": "Whether to regenerate downstream artifacts (key points, action items) after the new transcription. Default true on the backend."
},
"recordingId": {
"type": "integer",
"description": "Recording ID."
}
},
"additionalProperties": false
}
hub_search_calls
Free-text search across call name, description, attendees, and recording transcript content. Returns paginated UserCallDTO results. Requires recordings:read scope.
read-only
Argument
Type
Description
page
integer
0-based page index.
size
integer
Page size.
query
string
Search text. Empty string lists all.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "0-based page index."
},
"size": {
"type": "integer",
"description": "Page size."
},
"query": {
"type": "string",
"description": "Search text. Empty string lists all."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_send_call_to_airtable
Push a call's extracted tasks into Airtable rows under one base + one or more tables. Requires recordings:write scope AND an Airtable integration on the workspace. Same return-shape caveat as `hub_send_call_to_jira` — boolean response = "request accepted", not "actually pushed".
destructive
Argument
Type
Description
baseId*
string
Airtable base id.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
callUUID*
string
Call's UUID — NESTED at hub_get_call.call.callUuid.
tableIds*
array
One or more Airtable table ids within the base.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"callUUID",
"baseId",
"tableIds"
],
"properties": {
"baseId": {
"type": "string",
"description": "Airtable base id."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"callUUID": {
"type": "string",
"description": "Call's UUID — NESTED at hub_get_call.call.callUuid."
},
"tableIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "One or more Airtable table ids within the base."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_send_call_to_clickup
Push a call's extracted tasks into a ClickUp list. Requires recordings:write scope AND a ClickUp integration on the workspace. Same return-shape caveat as `hub_send_call_to_jira` — boolean response = "request accepted", not "actually pushed".
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
callUUID*
string
Call's UUID — NESTED at hub_get_call.call.callUuid.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
selectedListId*
string
ClickUp list id.
Input schema (JSON)
{
"type": "object",
"required": [
"callUUID",
"selectedListId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"callUUID": {
"type": "string",
"description": "Call's UUID — NESTED at hub_get_call.call.callUuid."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"selectedListId": {
"type": "string",
"description": "ClickUp list id."
}
},
"additionalProperties": false
}
hub_send_call_to_jira
Push a call's extracted tasks into one or more Jira projects under the same cloud. Hub fans the action items out across the listed projects. Requires recordings:write scope AND a Jira integration on the workspace (see `hub_list_integrations`). IMPORTANT: returns boolean — `true` means Hub ACCEPTED the request, NOT that it actually landed in Jira. The vendor push happens async and silently fails on bad cloudId/project/expired tokens. To confirm landing, call `hub_get_call` again and check that `jiraProjectId` is populated.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
cloudId*
string
Jira cloud id (from connected integration).
callUUID*
string
Call's UUID — NESTED at hub_get_call.call.callUuid (NOT top-level hub_get_call.uuid). The DTO has two integer ids and one UUID; this is the UUID, not either of the integers.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
projectIds
hub_set_call_custom_prompt
Set the custom prompt on an already-recorded call, by its integer call id. This is the right tool for meetings that never had a calendar event (ad-hoc desktop or bot recordings), and for re-analysing a call differently. It is the CALLER's own prompt: it shapes only their version of the summary, key points, action items and enhanced notes. Stored only — follow it with hub_regenerate_summary to rebuild that version. Requires recordings:write scope.
destructive
Argument
Type
Description
id*
integer
UserCall id (integer), from hub_list_calls.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
customPrompt*
string
Instructions for the AI when it analyses this call.
Input schema (JSON)
{
"type": "object",
"required": [
"id",
"customPrompt"
],
"properties": {
"id": {
"type": "integer",
"description": "UserCall id (integer), from hub_list_calls."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"customPrompt": {
"type": "string",
"description": "Instructions for the AI when it analyses this call."
}
},
"additionalProperties": false
}
hub_set_custom_prompt
Update the workspace's custom prompt. Pass null or empty string to clear it. Takes effect on the next recording processed, or on hub_regenerate_summary for an existing one; existing recordings are not re-analysed automatically. Requires workspace-settings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
customPrompt*
string | null
New prompt text. Pass null to remove the workspace prompt entirely.
Input schema (JSON)
{
"type": "object",
"required": [
"customPrompt"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"customPrompt": {
"type": [
"string",
"null"
],
"description": "New prompt text. Pass null to remove the workspace prompt entirely."
}
},
"additionalProperties": false
}
hub_set_default_workspace
Set the user's "default workspace" to the workspace this API key is bound to (future calendar events without an explicit workspace will route here). To clear the default entirely, pass { clear: true }. The MCP fills the workspace UUID from the selected workspace (or the workspace bound to a workspace key) automatically — agents do not need to (and cannot) target a different workspace from this key. Requires user-settings:write scope.
destructive
Argument
Type
Description
clear
boolean
When true, sets the default to null (no default workspace). Default: false.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"clear": {
"type": "boolean",
"description": "When true, sets the default to null (no default workspace). Default: false."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
hub_set_event_custom_prompt
Set the custom prompt for ONE calendar occurrence. For a series occurrence it is applied TOGETHER with the series prompt (and the workspace prompt), not instead of them; for a one-off meeting it is the meeting's only per-call prompt. Takes effect the next time that meeting is processed. Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
eventId*
string
Event id from hub_list_calendar_events.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
customPrompt*
string
Instructions for the AI when it analyses this meeting.
Input schema (JSON)
{
"type": "object",
"required": [
"eventId",
"customPrompt"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"eventId": {
"type": "string",
"description": "Event id from hub_list_calendar_events."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"customPrompt": {
"type": "string",
"description": "Instructions for the AI when it analyses this meeting."
}
},
"additionalProperties": false
}
hub_set_preferred_integration
Set the workspace's preferred integration target. The value should be the integration system name returned by `hub_list_integrations` (e.g. "JIRA", "CLICKUP", "AIRTABLE", "PM"). Requires workspace-settings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
preferredIntegration*
string
IntegrationSystem name as returned by hub_list_integrations.
Input schema (JSON)
{
"type": "object",
"required": [
"preferredIntegration"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"preferredIntegration": {
"type": "string",
"description": "IntegrationSystem name as returned by hub_list_integrations."
}
},
"additionalProperties": false
}
hub_set_series_custom_prompt
Set the custom prompt for an entire recurring series. Applies to every occurrence, IN ADDITION to any occurrence-specific prompt set with hub_set_event_custom_prompt (both are applied when both are set). Requires recordings:write scope.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
workspaceId
string
Optional. Only used when the series has no stored row yet and one must be created. Personal keys may choose a workspace they belong to that permits the key. Workspace keys may choose only the key's workspace or the owner's default. Omit it to use the key's selected or bound workspace.
customPrompt*
string
Instructions for the AI when it analyses meetings in this series.
seriesMasterId*
string
Series master id from hub_list_calendar_events.
list_accounts
List the accounts configured for this MCP session. Returns one entry per account with `name` (the label the caller passes as the `account` tool argument) and `workspace` (the workspace identifier or name declared for that account). API keys are not returned. In single-account mode (X-API-Key with optional X-Dutify-Workspace), returns a single entry with name="default". In multi-account mode (X-Dutify-Accounts header), returns every configured account. Call this first when you do not know which account names are available.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
list_boards
List feature-request boards the caller can view in the current workspace. Each entry includes the board slug and the short-ID prefixes (featureRequestKey, bugReportKey) needed to address requests/bugs in follow-up tool calls.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
list_spaces
List wiki spaces the caller can view in the current workspace, each with a page count. Use the `key` field as the space identifier in follow-up wiki tool calls.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
list_workspaces
Unified Dutify list_workspaces: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_add_comment_reaction
Add an emoji reaction to a task comment. `reactionType` is the emoji code (e.g. "thumbs_up", "heart", "smile"). Each user may add at most one reaction of each reactionType per comment. Requires COMMENT-level access on the task. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
reactionType*
string
Emoji code, e.g. "thumbs_up", "heart"
taskIdentifier*
string
Task identifier (tsk_…)
commentIdentifier*
string
Comment identifier (cmt_…)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier",
"commentIdentifier",
"reactionType"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"reactionType": {
"type": "string",
"description": "Emoji code, e.g. \"thumbs_up\", \"heart\""
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
},
"commentIdentifier": {
"type": "string",
"description": "Comment identifier (cmt_…)"
}
},
"additionalProperties": false
}
pm_add_tasks_to_sprint
Associate tasks with a sprint. All tasks must belong to the same space as the sprint group. Pass identifiers (tsk_…), not task keys. Returns updated SprintDTO. API-key scope: `sprints:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifiers*
array
Task identifiers (tsk_…); 1+ required
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier",
"taskIdentifiers"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifiers": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Task identifiers (tsk_…); 1+ required"
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_add_team_member
Add a single user to a team. Pass the user UUID (from pm_list_workspace_members). Idempotent — adding a user who is already a member is a no-op. Requires MANAGE_TEAMS. API-key scope: `teams:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
userUuid*
string
User UUID to add
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Team identifier (team_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier",
"userUuid"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"userUuid": {
"type": "string",
"description": "User UUID to add"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Team identifier (team_…)"
}
},
"additionalProperties": false
}
pm_bulk_change_task_type
Change the task type for many tasks at once (≤5000 per call). `taskIdentifiers` are stable wire identifiers (e.g. tsk_…) — task keys (PROJ-42) are NOT accepted here; use pm_search_tasks first if you only have keys. `taskType` is a name (e.g. "Bug") or null to clear the type. Returns 200 sync for ≤500 tasks; 202 with a {jobId, statusUrl} for larger batches — poll the statusUrl for completion. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
taskType*
string | null
Target task type name (resolved against the workspace catalogue), or null to clear the type on all listed tasks
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifiers*
array
Stable task identifiers (tsk_…); 1 to 5000 entries
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifiers",
"taskType"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"taskType": {
"type": [
"string",
"null"
],
"description": "Target task type name (resolved against the workspace catalogue), or null to clear the type on all listed tasks"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifiers": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 5000,
"minItems": 1,
"description": "Stable task identifiers (tsk_…); 1 to 5000 entries"
}
},
"additionalProperties": false
}
pm_cancel_invitation
Revoke a pending workspace invitation by its identifier. Caller needs MANAGE_USERS permission. Returns 204. API-key scope: `users:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
invitationIdentifier*
string
Invitation identifier
Input schema (JSON)
{
"type": "object",
"required": [
"invitationIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"invitationIdentifier": {
"type": "string",
"description": "Invitation identifier"
}
},
"additionalProperties": false
}
pm_change_member_role
Change a member's workspace access level. `userUuid` is the target user's UUID (NOT email — call pm_list_workspace_members first to find it). `workspaceAccessLevelId` is a numeric Long id from the workspace `/access-levels` catalogue (e.g. 1, 2, 3) — fetch it via the catalog meta tools or your existing endpoint introspection if you don't already have it. Caller needs MANAGE_USERS permission. Note: this endpoint is HTTP PUT on the collection path (not PATCH on a sub-resource). API-key scope: `workspaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
userUuid*
string
Target user UUID
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
workspaceAccessLevelId*
integer
Numeric access-level id (Long); list /v1/workspaces/{ws}/access-levels to discover
Input schema (JSON)
{
"type": "object",
"required": [
"userUuid",
"workspaceAccessLevelId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"userUuid": {
"type": "string",
"description": "Target user UUID"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"workspaceAccessLevelId": {
"type": "integer",
"description": "Numeric access-level id (Long); list /v1/workspaces/{ws}/access-levels to discover"
}
},
"additionalProperties": false
}
pm_clone_view
Clone an existing view into a (possibly different) scope. Requires VIEW on the source and EDIT on the target scope. API-key scope: `views:write`.
Argument
Type
Description
name
string
Optional new name (defaults to "<source> (copy)")
scope*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Source view identifier
scopeIdentifier
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier",
"scope"
],
"properties": {
"name": {
"type": "string",
"description": "Optional new name (defaults to \"<source> (copy)\")"
},
"scope": {
"enum": [
"workspace",
"space",
"folder",
"list"
],
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Source view identifier"
},
"scopeIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_complete_sprint
Transition a sprint from IN_PROGRESS to DONE. Optionally pass `rolloverSprintIdentifier` to move incomplete tasks into a different sprint (typically the next one in the group). Omit the field to leave incomplete tasks unsorted (no rollover). API-key scope: `sprints:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
rolloverSprintIdentifier
string
Optional. Identifier of the sprint to roll over incomplete tasks to. Omit/null to skip rollover.
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
},
"rolloverSprintIdentifier": {
"type": "string",
"description": "Optional. Identifier of the sprint to roll over incomplete tasks to. Omit/null to skip rollover."
}
},
"additionalProperties": false
}
pm_configure_task_sharing
Enable, disable, or reconfigure public sharing for a task. Pass `shared: true` to generate a public link (or refresh the configuration); the response includes the resulting publicLink. Pass `shared: false` to revoke an existing share. All other fields are optional toggles for which slices of the task are visible to a public viewer. Requires FULL access to the task. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
shared
boolean
true to publish, false to revoke
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
expiresAt
string
Optional ISO 8601 timestamp when the share link should auto-expire (e.g. "2026-12-31T23:59:59Z")
shareTags
boolean
Expose tags
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
shareStatus
boolean
Expose current status
pm_confirm_import_mappings
Confirm column mappings for a previewed CSV import job and start async import processing. Call this AFTER another (non-MCP) client has uploaded the CSV via /csv/preview and produced a job in PREVIEW status. `columnMappings` is a non-empty array of objects with: csvHeader (exact CSV column name), targetField (e.g. 'title', 'status', or a custom field identifier), and targetType ('builtin' or 'custom_field'). API-key scope: `imports:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
jobIdentifier*
string
columnMappings*
array
Input schema (JSON)
{
"type": "object",
"required": [
"jobIdentifier",
"columnMappings"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"jobIdentifier": {
"type": "string"
},
"columnMappings": {
"type": "array",
"items": {
"type": "object",
"required": [
"csvHeader",
"targetField",
"targetType"
],
"properties": {
"csvHeader": {
"type": "string",
"description": "Exact CSV column header"
},
"targetType": {
"enum": [
"builtin",
"custom_field"
],
"type": "string",
"description": "Whether targetField is a builtin task field or a custom field"
},
"targetField": {
"type": "string",
"description": "Target field id ('title', 'status', or custom-field identifier)"
}
},
"additionalProperties": false
},
"minItems": 1
}
},
"additionalProperties": false
}
pm_count_unread_notifications
Return the bare unread-notification count (a Long) for the current user in the active workspace. The response body is a single number, not an object. API-key scope: `notifications:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_create_automation
Create an automation rule. Exactly ONE scope must be set — `listIdentifier` OR `folderIdentifier` OR `spaceIdentifier`. `triggers` and `actions` are arrays; `conditionNodes` is the flattened condition tree (omit for "always-true"). All `parameters` fields on triggers/actions/conditions are JSON-encoded strings, not nested objects. Before crafting, call pm_list_reference_data to learn the valid action/condition/trigger types. API-key scope: `automations:write`.
Argument
Type
Description
name*
string
Display name (max 200 chars)
active
boolean
Start enabled or disabled. Default true on backend.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
actions*
array
Actions executed in order on trigger
triggers*
array
One or more triggers (OR-ed)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
pm_create_custom_field
Create a custom field at workspace / space / list scope. scope=workspace ignores scopeName; scope=space takes a space name; scope=list takes a list name (first match in the workspace). For dropdown / labels (multi-select) types, pass `options` as an array of {value, color?, emoji?, orderIndex?}. Keep field names plain for column headers; set semantic emoji/color metadata for visual icons, using supported keys from pm_list_reference_data (custom-field-icon-options). Reuse suitable existing fields before creating another; color dropdown/label options consistently. CREATING A FIELD IS NOT ENOUGH TO MAKE IT VISIBLE: a custom field only shows up where it's added to a view's columns. After creating fields for a list, finish by creating/updating a view (pm_create_view / pm_update_view) whose `columns` include these fields, or the list keeps a defaults-only, empty-looking view. API-key scope: `custom_fields:write`.
Argument
Type
Description
name*
string
Plain custom-field display name. Do not prefix names with emoji for icons.
type*
string
Field type — text, number, date, checkbox, dropdown, labels, url, email, phone, etc.
color
string
Optional hex color code for the field icon
emoji
string
Optional icon-picker key for the field icon. Query /v1/custom-field-icon-options for supported keys. Prefer semantically matching emojiNames when available (e.g. severity=fire, target=direct_hit, launch=rocket); use iconNames for structural/type icons.
scope*
string
pm_create_folder
Create a folder inside a space. Space identified by name. API-key scope: `folders:write`.
Argument
Type
Description
name*
string
Folder name
space*
string
Space name
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
idempotencyKey
string
Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed.
Input schema (JSON)
{
"type": "object",
"required": [
"space",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Folder name"
},
"space": {
"type": "string",
"description": "Space name"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"idempotencyKey": {
"type": "string",
"description": "Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed."
}
},
"additionalProperties": false
}
pm_create_list
Create a task list inside a space (optionally inside a folder). Space and folder are identified by name. Omit folder to create the list directly under the space. Prefer setting icon and color on create when the list purpose is known. For icon, prefer a semantic emoji name first; use an icon identifier only when no emoji fits. List setup is not finished after this call: unless the user requested a bare list, reuse/add relevant custom fields with emoji/color header metadata, refresh pm_get_workspace_context, then use pm_list_views and pm_update_view to configure the auto-created primary view with explicit ordered columns and useful grouping/sorting. Verify the saved configuration before reporting completion. API-key scope: `lists:write`.
Argument
Type
Description
icon
string
Optional list icon. Prefer semantic emoji names first (rocket, fire, direct_hit, white_check_mark, pushpin, moneybag); use icon identifiers only when no emoji fits.
name*
string
List name
color
string
Optional list color, usually a hex color
space*
string
Space name
folder
string
Optional folder name
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
pm_create_space
Create a new space in the current workspace. Description / icon / color / isPrivate are optional metadata. Returns LiteSpaceResponse. API-key scope: `spaces:write`.
Argument
Type
Description
icon
string
Emoji or icon name
name*
string
color
string
Hex color code
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPrivate
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
idempotencyKey
string
Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed.
pm_create_sprint
Create a sprint inside a sprint group. New sprints start in NOT_STARTED state. `name` required (max 200 chars). `goal`, `startDate`, `endDate` optional (ISO-8601 instants for dates). API-key scope: `sprints:write`.
Argument
Type
Description
goal
string
Sprint goal (max 5000 chars)
name*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
endDate
string
ISO-8601 instant
startDate
string
ISO-8601 instant, e.g. 2026-04-14T00:00:00Z
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
groupIdentifier*
string
Sprint group identifier
Input schema (JSON)
pm_create_sprint_group
Create a sprint group inside a space. `name` is required (max 100 chars). `description` is optional (max 2000 chars). `defaultDurationDays` is the default sprint length used when creating new sprints (1–90 days, optional). API-key scope: `sprints:write`.
Argument
Type
Description
name*
string
Sprint group name (max 100 chars)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
Optional description (max 2000 chars)
spaceIdentifier*
string
Space identifier (spc_…)
defaultDurationDays
integer
Default sprint duration in days (1–90)
Input schema (JSON)
{
"type": "object",
"required": [
"spaceIdentifier",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Sprint group name (max 100 chars)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "Optional description (max 2000 chars)"
},
"spaceIdentifier": {
"type": "string",
"description": "Space identifier (spc_…)"
},
"defaultDurationDays": {
"type": "integer",
"maximum": 90,
"minimum": 1,
"description": "Default sprint duration in days (1–90)"
}
},
"additionalProperties": false
}
pm_create_tag
Create a new tag in a space. Tags are auto-created on first inline use (e.g. `tags: ["urgent"]` when creating a task via the Lite API), so use this only when you need to pre-create a tag with specific colors before applying it. Returns the persisted TagDTO with its identifier. API-key scope: `tags:write`.
Argument
Type
Description
name*
string
Display name (case-sensitive — duplicates rejected per space)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
textColor
string
Hex foreground color, e.g. "#FFFFFF". Optional.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
backgroundColor
string
Hex background color, e.g. "#3B82F6". Optional — server picks a default.
spaceIdentifier*
string
Space identifier (sp_…)
Input schema (JSON)
pm_create_task
Create a task. In the result, title/webUrl are for presentation; displayKey is the optional visible key. Keep key/identifier for API calls and do not expose a hidden raw key in the summary. References are name-based: status/priority/level/taskType are names; assignees are emails; tags are strings (auto-created if missing); customFields is a {name: value} map. `list` is the task-list identifier (tl_…). For subtasks, set `parent` to a task key or identifier (omit `list` and the parent's list is used). Task type is OPTIONAL: omit `taskType` to inherit the closest non-null default along the three-level chain `list → folder → space`. There's NO workspace-level fallback — if all three are null the task is created untyped (`taskType: null` in the response), which is a valid persistent state. Use `pm_list_task_types` to see what types this workspace has (9 SYSTEM rows seeded at workspace creation, plus any CUSTOM ones). MANDATORY CUSTOM FIELDS: a list can mark custom fields required (isMandatory, per field via pm_get_workspace_context). Populate them in `customFields` on create AND update — the API rejects a write that leaves one empty with HTTP 400 errorCode VALIDATION_ERROR, details.field = the field's display name; the message also names it (e.g. Mandatory custom field 'Priority' requires a value). Fix and retry; don't ask the user as a substitute. API-key scope: `tasks:write`.
Argument
Type
Description
list
string
Task-list identifier (tl_…); omit if parent is set
tags
array
level
string
title*
string
nextTo
string
Task key/identifier to position next to
pm_create_task_comment
Add a comment to a task. `mentions` is an array of emails — the server resolves them to user UUIDs and substitutes `@<email>` literals in `text` with mention spans. Pass `replyTo` (a comment identifier) to thread. API-key scope: `tasks:write`.
Argument
Type
Description
ref*
string
text*
string
Comment body (plain text)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
replyTo
string
Parent comment identifier (cmt_…) for threaded replies
mentions
array
Emails to @-mention (server resolves to UUIDs)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref",
"text"
],
"properties": {
"ref": {
"type": "string"
},
"text": {
"type": "string",
"description": "Comment body (plain text)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"replyTo": {
"type": "string",
"description": "Parent comment identifier (cmt_…) for threaded replies"
},
"mentions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Emails to @-mention (server resolves to UUIDs)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_create_task_relationship
Create a relationship from one task to another. `type` is the relationship-type name in the workspace (e.g. "Blocking"). `target` is a task key or identifier. The current task (ref) is the owner. API-key scope: `tasks:write`.
Argument
Type
Description
ref*
string
Owner task key or identifier
type*
string
Relationship type name
target*
string
Target task key or identifier
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref",
"type",
"target"
],
"properties": {
"ref": {
"type": "string",
"description": "Owner task key or identifier"
},
"type": {
"type": "string",
"description": "Relationship type name"
},
"target": {
"type": "string",
"description": "Target task key or identifier"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_create_team
Create a new team in the current workspace. Returns the persisted TeamDTO including its identifier. Requires the workspace MANAGE_TEAMS permission. API-key scope: `teams:write`.
Argument
Type
Description
icon
string
Icon identifier or emoji
name*
string
Display name (max 100 chars)
alias
string
Short alias / @handle (max 100 chars)
color
string
Hex color, e.g. "#E91E63"
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
Optional description (max 10000 chars)
memberUuids
array
Initial members (user UUIDs). Optional — add members later via pm_add_team_member.
pm_create_view
Create a view. type is one of list / board / table / dashboard / gantt / calendar / gallery. For a newly created list, prefer configuring its auto-created primary view with pm_update_view; add another view only for a distinct workflow. ALWAYS pass `columns` listing exactly what should be visible, in display order, INCLUDING every custom field you want shown — a view created without `columns` falls back to system defaults, so custom fields you just created will NOT appear and the view looks empty. This is the most common mistake here: do not create a view and forget to select its columns. If unsure which custom-field column identifiers exist for this scope, call pm_get_workspace_context first instead of guessing. Columns and filters are applied atomically with the create — invalid columnIdentifier or filter shape rolls the whole create back with 400, so a 201 always means the view exists and is fully configured. In columns, the list order is display order and omitted columns are hidden. Keep new custom-field/header names plain; custom-field icons belong in emoji/color metadata. API-key scope: `views:write`.
Argument
Type
Description
name*
string
type*
string
scope*
string
sortBy
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
pm_create_webhook
Create an outgoing webhook subscription for the current workspace. Every delivery is signed with HMAC-SHA256 of the raw body using the webhook secret, sent as `X-Webhook-Signature-256: sha256=<hex>`. Pass your own `secret`, or omit it and this tool generates one and returns it as `secret` in the result. SAVE THE SECRET IMMEDIATELY: pm_get_webhook / pm_list_webhooks never return it; to rotate it, pass a new `secret` to pm_update_webhook. Event types: Project Management events are dash-cased (e.g. "task-created", "task-status-changed", "comment-added"); wiki (Codexum) events are dotted and start with "wiki." (e.g. "wiki.page.published", "wiki.comment.added"); feature-request (Roadmarq) events start with "feedback." (e.g. "feedback.request.created", "feedback.bug.created"). Call pm_list_webhook_event_types for the full list with each type's product and allowed scopes. An unscoped webhook may mix products. Optionally narrow delivery to one entity with scopeType plus scopeEntityIdentifier: SPACE / FOLDER / TASK_LIST / TASK (identifier), WIKI_SPACE (space key), WIKI_PAGE (page id; covers its descendants), FEEDBACK_BOARD (board slug or id; stored and listed as the board UUID), FEEDBACK_REQUEST / FEEDBACK_BUG (short key such as "FR-12", or id); omit both for workspace-wide delivery. A scoped webhook may only list event types of its scope's product. Wiki and feature-request events need the API key to hold that product's read scope, and every delivery is re-checked: an event is sent only while the webhook creator can still see the item. Security bugs are not delivered to webhooks created with an API key: includeSecurityBugs can only be turned on by a workspace admin signed in as a person. Envelope: {version, id, type, timestamp, workspaceIdentifier, source ("pm" | "codexum" | "roadmarq"), eventId (stable across webhooks and replays; use it to de-duplicate), data}. Payloads are thin: no content bodies, comment text or emails. Retries fire at +0s / +1min / +5min (3 attempts total) and treat both 4xx and 5xx as failures. The URL must be publicly reachable: Dutify refuses private, loopback, link-local, CGNAT and IPv6 ULA addresses, localhost, bare hostnames and *.svc / *.cluster.local names (400 WEBHOOK_URL_NOT_ALLOWED) at create, update and resume, and re-checks it on every attempt. Redirects are not followed; http:// is accepted for public addresses. API-key scope: `webhooks:write`.
Argument
Type
Description
pm_delete_automation
Delete an automation rule. Returns 204. Existing audit log rows are preserved. API-key scope: `automations:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Automation identifier (auto_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Automation identifier (auto_…)"
}
},
"additionalProperties": false
}
pm_delete_custom_field
Delete a custom field and all its values. Requires FULL access. 204. API-key scope: `custom_fields:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_folder
Soft-delete a folder and its child lists+tasks. Requires FULL access. 204. API-key scope: `folders:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_list
Soft-delete a list and its tasks. Requires FULL access. 204. API-key scope: `lists:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_saved_filter
Delete a saved filter you own. NOTE: `id` is a numeric Long (e.g. 42), NOT a slug. Only the owner may delete. Returns 204.
There is NO endpoint to "apply" a saved filter — that is a UI affordance only. API-key scope: `filters:write`.
destructive
Argument
Type
Description
id*
integer
Numeric filter id (Long)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
listIdentifier*
string
List identifier (tl_…)
Input schema (JSON)
{
"type": "object",
"required": [
"listIdentifier",
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "Numeric filter id (Long)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"listIdentifier": {
"type": "string",
"description": "List identifier (tl_…)"
}
},
"additionalProperties": false
}
pm_delete_sprint
Soft-delete a sprint. Tasks lose their sprint association but remain in their lists. 204 on success. API-key scope: `sprints:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_tag
Delete a tag. The tag is removed from every task that currently carries it; the tasks themselves are not affected. Returns 204. API-key scope: `tags:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Tag identifier (tag_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Tag identifier (tag_…)"
}
},
"additionalProperties": false
}
pm_delete_task
Delete a task by ref. Cascade-deletes subtasks. Requires FULL access (not just EDIT). Returns 204 on success. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
ref*
string
Task key or identifier
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"description": "Task key or identifier"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_delete_task_comment
Delete a comment. Only the original author may delete. Returns 204. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
ref*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
commentIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"ref",
"commentIdentifier"
],
"properties": {
"ref": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"commentIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_task_relationship
Delete a relationship by identifier. Returns 204. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
ref*
string
Owner task key or identifier
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
relationshipIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"ref",
"relationshipIdentifier"
],
"properties": {
"ref": {
"type": "string",
"description": "Owner task key or identifier"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"relationshipIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_team
Delete a team. Removes the team and all of its grants — existing access controls that referenced this team are reduced accordingly. Returns 204. Requires the workspace MANAGE_TEAMS permission. API-key scope: `teams:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Team identifier (team_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Team identifier (team_…)"
}
},
"additionalProperties": false
}
pm_delete_time_entry
Delete a time entry from a task. NOTE: `timeEntryId` is a numeric Long (e.g. 42), NOT a slug/identifier. Returns 204 on success. API-key scope: `time:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
timeEntryId*
integer
Numeric time-entry id (Long)
taskIdentifier*
string
Task identifier (tsk_…)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier",
"timeEntryId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"timeEntryId": {
"type": "integer",
"description": "Numeric time-entry id (Long)"
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
}
},
"additionalProperties": false
}
pm_delete_view
Delete a view by identifier. Mandatory views (system-created defaults) return 409 Conflict. Returns 204 on success. API-key scope: `views:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_delete_webhook
Delete a webhook subscription permanently. Stops all future deliveries. Returns 204. The HMAC secret cannot be recovered — recreate the webhook to get a new one. API-key scope: `webhooks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
webhookIdentifier*
string
Webhook identifier
Input schema (JSON)
{
"type": "object",
"required": [
"webhookIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
}
},
"additionalProperties": false
}
pm_describe_status_priority_level_endpoints
Orientation/meta tool: return the canonical REST paths and field shapes for managing the Status, Priority, and Task-Level catalogues at each scope (workspace / space / folder / list). Call this ONCE before reaching for endpoint-example tools — it cuts a 30-tool surface down to a single readable map. The agent can then use the catalog tools (e.g. `get_endpoint_examples`) to fetch real request/response bodies for whichever path it picks.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_automation
Fetch a single automation by identifier. Returns the full AutomationDTO including triggers, condition tree, and actions. API-key scope: `automations:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Automation identifier (auto_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Automation identifier (auto_…)"
}
},
"additionalProperties": false
}
pm_get_automation_audit
Fetch the execution audit log for an automation. Each row records a single firing — timestamp, triggering task, trigger type, overall execution status (SUCCESS/FAILED/IN_PROGRESS/ROLLED_BACK), and per-action audit detail. Use to debug "did my automation run?" — it is the authoritative answer; the UI does not currently show summary stats. API-key scope: `automations:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Automation identifier (auto_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Automation identifier (auto_…)"
}
},
"additionalProperties": false
}
pm_get_current_user
Get the profile of the human behind the API key — identifier, email, fullName, and the userSettings object. Use this when the agent needs to address the user by name, route a notification to the right preference channel, or confirm "whose API key am I holding". API-key scope: `users:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_dashboard
Get aggregated counts and breakdowns (status / priority / assignee distributions, custom-field summaries) for any scope. Useful for "how is project X doing?" questions without paginating through tasks. API-key scope: `dashboards:read`.
read-only
Argument
Type
Description
scope*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
scopeIdentifier
string
UUID of space/folder/list (omitted for workspace)
Input schema (JSON)
{
"type": "object",
"required": [
"scope"
],
"properties": {
"scope": {
"enum": [
"workspace",
"space",
"folder",
"list"
],
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"scopeIdentifier": {
"type": "string",
"description": "UUID of space/folder/list (omitted for workspace)"
}
},
"additionalProperties": false
}
pm_get_import_job
Fetch the current status and progress of a CSV import job by identifier. Use this to poll a job that another client started via /csv or /csv/preview. API-key scope: `imports:write`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
jobIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"jobIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"jobIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_get_notification_settings
Read the current user's aggregated notification settings — one tree covering every module (comments, mentions, assignments, due dates, automation events, …) and every delivery channel (app / browser / email). Use this to find out which channel is on for a given event before asking the user to flip a flag. API-key scope: `users:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_sprint
Fetch a sprint by identifier. Returns SprintDTO with task statistics. API-key scope: `sprints:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_get_sprint_burndown
Return burndown/burnup chart data for the sprint — daily snapshots of remaining vs completed work. Use this to render burndown charts or audit sprint progress over time. API-key scope: `sprints:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_get_sprint_tasks
List all tasks currently in the sprint. Returns an array of full TaskDTO. API-key scope: `sprints:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_get_subtasks
List the direct subtasks (one level deep) of a parent task by ref. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
ref*
string
Parent task key or identifier
limit
integer
cursor
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"description": "Parent task key or identifier"
},
"limit": {
"type": "integer"
},
"cursor": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_tag
Fetch a single tag by identifier. Returns the TagDTO (identifier, name, backgroundColor, textColor). API-key scope: `tags:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Tag identifier (tag_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Tag identifier (tag_…)"
}
},
"additionalProperties": false
}
pm_get_task
Fetch a task by ref. Ref accepts a system identifier (tsk_…) OR a task key (e.g. 'PROJ-42'). Returns LiteTaskResponse with names instead of UUIDs and emails instead of user UUIDs. Internal note: when ref is a task key the workspace query param is required — the MCP injects it automatically. Present title linked to webUrl; show displayKey only when non-empty. Do not display the raw key when displayKey is null or absent. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
ref*
string
Task key (PROJ-42) or identifier (tsk_…)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"description": "Task key (PROJ-42) or identifier (tsk_…)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_task_sharing
Read a task's current public sharing settings. Returns the full TaskSharingSettingsDTO — `shared` (is the public link active), `publicLink` (the share URL when active), `expiresAt`, and per-field visibility toggles (shareAssignee, shareDescription, shareStatus, sharePriority, shareDueDate, shareComments, shareAttachments, shareCustomFields, shareSubtasks, shareTags) plus the explicit list of custom-field identifiers exposed (sharedCustomFieldIdentifiers). Requires at least VIEW access to the task. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifier*
string
Task identifier (tsk_…) or short key (e.g. "PROJ-42")
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…) or short key (e.g. \"PROJ-42\")"
}
},
"additionalProperties": false
}
pm_get_team
Fetch a team by identifier. Returns the full TeamDTO with members. API-key scope: `teams:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Team identifier (team_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Team identifier (team_…)"
}
},
"additionalProperties": false
}
pm_get_view
Fetch a view by identifier (vw_…). API-key scope: `views:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_get_webhook
Fetch a single webhook by identifier. Returns its url / name / eventTypes / scope / active flag; does NOT return the HMAC secret (only available at creation time). API-key scope: `webhooks:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
webhookIdentifier*
string
Webhook identifier
Input schema (JSON)
{
"type": "object",
"required": [
"webhookIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
}
},
"additionalProperties": false
}
pm_get_webhook_usage
Report webhook quota for the current workspace: { userManaged, agentManaged, total, max }. `total` is the count of active subscriptions and `max` is the per-workspace cap; `agentManaged` is the subset created via API keys (like this MCP). Check this before calling pm_create_webhook in bulk — creation fails once `total` reaches `max`. API-key scope: `webhooks:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_get_workspace_context
Single-call workspace orientation: members, spaces (with folders, lists, per-list statuses/priorities/taskTypes/customFields), workspace-level taskTypes, relationshipTypes, tags. The biggest agent-onboarding tool — call it first when starting in a new workspace. Folders nest at any depth: every folder has its own `lists` and its sub-folders in `folders` (same shape), so walk `folders` recursively to find every list. Only what you can see is returned; anything visible inside a folder you can't see is listed under the nearest visible parent. Pass shallow=true to skip per-list statuses/priorities for a faster tree-only response. Each per-list custom field carries an `isMandatory` flag — fields with isMandatory=true MUST be supplied in `customFields` when creating/updating a task in that list, or the write is rejected with 400 VALIDATION_ERROR. API-key scope: `workspaces:read`.
read-only
Argument
Type
Description
space
string
Narrow to one space by name (exact match)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
shallow
boolean
Skip per-list statuses/priorities (faster)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
pm_get_workspace_user_avatar_url
Return the avatar URL for a specific user in the current workspace. The response is a short-lived signed URL pointing at the user's avatar image — embed it in chat messages, mentions, or attribution UI. Returns null if the user has no avatar set. API-key scope: `users:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
userUuid*
string
User UUID from pm_list_workspace_members
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"userUuid"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"userUuid": {
"type": "string",
"description": "User UUID from pm_list_workspace_members"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_leave_workspace
Voluntarily leave the current workspace. WARNING: this affects the calling user (the user identity behind the API key) — there is no parameter to pick a different user. The workspace owner cannot leave; they must transfer ownership first. After a successful leave the API key may stop working against this workspace. No body. API-key scope: `workspaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_automations_for_folder
List automations scoped to a folder. Automations attached at folder level cascade to every list inside that folder unless overridden at the list level. API-key scope: `automations:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
folderIdentifier*
string
Folder identifier (fld_…)
Input schema (JSON)
{
"type": "object",
"required": [
"folderIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"folderIdentifier": {
"type": "string",
"description": "Folder identifier (fld_…)"
}
},
"additionalProperties": false
}
pm_list_automations_for_list
List automations scoped to a specific list. Each row is an AutomationDTO with name, active, triggers, conditionNodes, actions, and the owning scope identifiers. API-key scope: `automations:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
listIdentifier*
string
List identifier (tl_…)
Input schema (JSON)
{
"type": "object",
"required": [
"listIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"listIdentifier": {
"type": "string",
"description": "List identifier (tl_…)"
}
},
"additionalProperties": false
}
pm_list_automations_for_space
List automations scoped to a space. Automations attached at space level cascade to every list and folder inside that space. API-key scope: `automations:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
spaceIdentifier*
string
Space identifier (sp_…)
Input schema (JSON)
{
"type": "object",
"required": [
"spaceIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"spaceIdentifier": {
"type": "string",
"description": "Space identifier (sp_…)"
}
},
"additionalProperties": false
}
pm_list_comment_reactions
List reactions on a task comment. Page-style pagination (page/size). API-key scope: `tasks:read`.
read-only
Argument
Type
Description
page
integer
size
integer
1–100
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifier*
string
Task identifier (tsk_…)
commentIdentifier*
string
Comment identifier (cmt_…)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier",
"commentIdentifier"
],
"properties": {
"page": {
"type": "integer",
"minimum": 0
},
"size": {
"type": "integer",
"description": "1–100"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
},
"commentIdentifier": {
"type": "string",
"description": "Comment identifier (cmt_…)"
}
},
"additionalProperties": false
}
pm_list_import_jobs
List CSV import jobs for the current workspace, paginated. The actual CSV upload endpoints (/csv and /csv/preview) are multipart/form-data and are not exposed by the MCP — agents that want to start a fresh import must upload via a non-MCP client and then come back here with the returned jobIdentifier. API-key scope: `imports:write`.
read-only
Argument
Type
Description
page
integer
0-indexed page (default 0)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
pageSize
integer
Page size (default 20)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "0-indexed page (default 0)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"pageSize": {
"type": "integer",
"description": "Page size (default 20)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_invitations
List pending (not yet accepted, not expired) invitations for the current workspace. Caller needs MANAGE_USERS permission. Returns an array of InvitationDTO. API-key scope: `users:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_notifications
List notifications for the current user in the active workspace. NOTE: this endpoint uses PAGE-style pagination (?page=&size=) not cursor-based — unusual for this API. `page` is 0-indexed; `size` is 1–100. Optional `unreadOnly`, `sortColumn`, `sortDirection`. API-key scope: `notifications:read`.
read-only
Argument
Type
Description
page
integer
0-indexed page number
size
integer
1–100
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sortColumn
string
unreadOnly
boolean
sortDirection
string
e.g. 'asc' or 'desc'
pm_list_reference_data
List a Dutify reference-data enum (status types, custom-field types, view types, automation action/condition types, access levels, etc.). Returns the authoritative set of values the backend accepts — call this BEFORE guessing enum strings on a create/update payload to avoid 400s. Categories:
- custom-field-types: Custom-field type catalogue: text, number, dropdown, date, money, file, rollup, formula, … Use the `identifier` from each row as the `fieldType` value when creating a custom field via /v1/lists/{id}/custom-fields or pm_create_custom_field.
- custom-field-icon-options: Custom-field icon catalogue: supported iconNames, emojiNames, and defaultIconsByFieldType. Use one of these keys as the `emoji` value; keep custom-field names plain. Agent preference: choose a semantically matching emojiNames key when available (severity/urgency=fire, target/goal=direct_hit, launch=rocket, approval/success=white_check_mark, location=pushpin, budget=moneybag); use iconNames for structural/type affordances like CalendarBlank.
- resource-view-types: Resource view types: list (1), board (2), table (3), dashboard (4), gantt (5), calendar (6), gallery (7), whiteboard (9). The numeric `typeId` is what /v1/views and view-config endpoints accept.
- status-types: Status type enum — ACTIVE, DONE, CLOSED. Used when grouping tasks or filtering for visibility.
- activity-types: Activity log event types — status_changed, task_created, comment_added, automation_executed, etc.
- automation-action-types: Automation action types — SET_STATUS, SET_PRIORITY, SET_ASSIGNEES, ADD_COMMENT, etc. Use when building an automation rule.
- automation-condition-types: Automation condition types (predicate categories) — STATUS, PRIORITY, DUE_DATE, CUSTOM_FIELD, etc.
- automation-field-operators: Operators valid in automation condition predicates — equals, not_equals, greater_than, in, is_set, etc.
- access-levels: Entity access levels — VIEW, COMMENT, EDIT, FULL — used in user/team access grants.
- workspace-access-level-permissions: Workspace role → permission map (OWNER/ADMIN/MEMBER/GUEST). Tells you which capabilities each role grants.
Auth: the resources are @PermitAll for anonymous callers, but the ApiKeyScopeFilter still gates API-key requests. The `metadata:read` scope covers custom-field-types / custom-field-icon-options / resource-view-types / status-types / activity-types / access-levels / workspace-access-level-permissions. The three automation-* categories live under /v1/automation/* and require `automations:read` instead. If the API key lacks the required scope the call returns 403 — pick a category your key covers, or have the user mint a key with both `metadata:read` and `automations:read`.
pm_list_saved_filters
List the current user's saved filters for a list. Filters are USER-scoped — they are not visible to other workspace members. API-key scope: `filters:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
listIdentifier*
string
List identifier (tl_…)
Input schema (JSON)
{
"type": "object",
"required": [
"listIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"listIdentifier": {
"type": "string",
"description": "List identifier (tl_…)"
}
},
"additionalProperties": false
}
pm_list_sprint_groups
List all sprint groups in a space. Sprint groups are containers for sprints — each group has its own state machine (only one IN_PROGRESS sprint per group). Returns an array of SprintGroupDTO. API-key scope: `sprints:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
spaceIdentifier*
string
Space identifier (spc_…)
Input schema (JSON)
{
"type": "object",
"required": [
"spaceIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"spaceIdentifier": {
"type": "string",
"description": "Space identifier (spc_…)"
}
},
"additionalProperties": false
}
pm_list_task_comments
List comments on a task by ref. Cursor-paginated. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
ref*
string
limit
integer
cursor
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string"
},
"limit": {
"type": "integer"
},
"cursor": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_task_relationships
List all relationships where the task is owner OR child. Cursor-paginated. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
ref*
string
limit
integer
cursor
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string"
},
"limit": {
"type": "integer"
},
"cursor": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_task_types
Return the workspace task-type catalogue (identifier, name, singularName, pluralName, iconKind, iconValue, color, sortOrder, origin SYSTEM/CUSTOM). Use this to discover what types are available before creating/updating tasks, or to translate names to stable identifiers for the cascade-default endpoints. API-key scope: `workspaces:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_teams
List teams in the current workspace, paginated. Each team carries identifier, name, alias, description, icon, color, and member list. Use pagination if there are many teams. API-key scope: `teams:read`.
read-only
Argument
Type
Description
page
integer
Page index, 0-based. Default 0.
size
integer
Page size, 1–100. Default 20.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sortColumn
string
Optional sort column (name, createdAt, …)
sortDirection
string
Sort direction
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Page index, 0-based. Default 0."
},
"size": {
"type": "integer",
"description": "Page size, 1–100. Default 20."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sortColumn": {
"type": "string",
"description": "Optional sort column (name, createdAt, …)"
},
"sortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction"
}
},
"additionalProperties": false
}
pm_list_time_entries
List time entries logged against a task. `taskIdentifier` must be a stable identifier (tsk_…), not a task key. Supports page/size/sortColumn/sortDirection (page-style). API-key scope: `time:read`.
read-only
Argument
Type
Description
page
integer
size
integer
1–100
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sortColumn
string
sortDirection
string
taskIdentifier*
string
Task identifier (tsk_…)
Input schema (JSON)
pm_list_views
List views at a given scope. scope is one of workspace/space/folder/list; scopeIdentifier is the UUID of the parent entity (omit for workspace scope — the MCP's configured workspace is used). Cursor-paginated. API-key scope: `views:read`.
read-only
Argument
Type
Description
limit
integer
scope*
string
cursor
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
scopeIdentifier
string
UUID of space/folder/list (omitted for workspace scope)
Input schema (JSON)
{
"type": "object",
"required": [
"scope"
],
"properties": {
"limit": {
"type": "integer"
},
"scope": {
"enum": [
"workspace",
"space",
"folder",
"list"
],
"type": "string"
},
"cursor": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"scopeIdentifier": {
"type": "string",
"description": "UUID of space/folder/list (omitted for workspace scope)"
}
},
"additionalProperties": false
}
pm_list_webhook_deliveries
List recent delivery attempts for a webhook (most recent first). Each entry includes the event type, response status, attempt count, and timestamps. Useful for diagnosing why a subscriber is missing events. Pagination uses `cursor` (or `page`) and `size` (max 100, default backend-defined). API-key scope: `webhooks:read`.
read-only
Argument
Type
Description
size
integer
Page size (max 100)
limit
integer
Alias for size (max 100)
cursor
string
Opaque cursor / page token from a previous response
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
webhookIdentifier*
string
Webhook identifier
Input schema (JSON)
pm_list_webhook_event_types
List every event type a webhook can subscribe to, across Project Management, the wiki (Codexum) and feature requests (Roadmarq). Returns [{type, product ("pm" | "codexum" | "roadmarq"), description, scopes}], where `scopes` are the scopeType values the type can be narrowed by. Use it to pick eventTypes for pm_create_webhook instead of guessing. API-key scope: `webhooks:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_webhooks
List webhook subscriptions in the current workspace. By default only the webhooks the caller created are listed; pass `all: true` to list every webhook in the workspace (needs the MANAGE_WEBHOOKS permission, else 403). The HMAC `secret` is NOT included. Pass `url` to return only the webhooks whose URL matches it exactly. Each entry reports scopeType, scopeEntityIdentifier, scopeEntityName and includeSecurityBugs; for a FEEDBACK_BOARD scope, scopeEntityIdentifier is the board UUID, also when it was set by slug. API-key scope: `webhooks:read`.
read-only
Argument
Type
Description
all
boolean
List every webhook in the workspace, not only the caller's (needs MANAGE_WEBHOOKS)
url
string
Optional exact-match URL filter
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"all": {
"type": "boolean",
"description": "List every webhook in the workspace, not only the caller's (needs MANAGE_WEBHOOKS)"
},
"url": {
"type": "string",
"description": "Optional exact-match URL filter"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_list_workspace_members
List members of the current workspace. Workspace is taken from the MCP config — no need to pass it. RESPONSE IS A PAGINATED ENVELOPE, NOT AN ARRAY: {users: WorkspaceUserDTO[], totalCount, page, size, totalPages} — read members from `users` (treating the response itself as a list fails). FOOTGUN: `size` DEFAULTS TO 20 when omitted, so a single call silently returns only the first 20 members and no error — don't assume it's the full roster. To enumerate everyone, page (page is 0-based) until you have collected `totalCount`. `size` is capped at 100 and a value >100 is a 400, not clamped. Use `search` (case-insensitive substring on first/last name or email, applied before paging) to find a specific member instead of paging blindly. Side effect: updates the caller's last-active timestamp. API-key scope: `workspaces:read`.
read-only
Argument
Type
Description
page
integer
0-based page number
size
integer
Page size, 1–100. DEFAULTS TO 20 if omitted (silent truncation); >100 returns 400.
search
string
Case-insensitive substring on first name / last name / email; applied before paging, so totalCount reflects matches.
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
pm_log_time
Log a time entry against a task. `timeSpent` is in minutes (0 to 10080 — 7 days max). `startedAt` is an ISO-8601 instant marking when the tracked work started. `notes` is optional (max 10000 chars). The user is set server-side from the JWT — do NOT pass userUuid. API-key scope: `time:write`.
Argument
Type
Description
notes
string
Optional notes (max 10000 chars)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
startedAt
string
ISO-8601 instant (e.g. 2026-04-14T09:00:00Z)
timeSpent*
integer
Minutes spent (0–10080, max 7 days)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifier*
string
Task identifier (tsk_…)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier",
"timeSpent"
],
"properties": {
"notes": {
"type": "string",
"description": "Optional notes (max 10000 chars)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"startedAt": {
"type": "string",
"description": "ISO-8601 instant (e.g. 2026-04-14T09:00:00Z)"
},
"timeSpent": {
"type": "integer",
"maximum": 10080,
"minimum": 0,
"description": "Minutes spent (0–10080, max 7 days)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
}
},
"additionalProperties": false
}
pm_mark_all_notifications_read
Mark every unread notification in the active workspace as read for the current user. API-key scope: `notifications:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
pm_mark_notification_read
Mark a single notification as read. Only the notification owner may do this — calling with another user's notification identifier returns an error. API-key scope: `notifications:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Notification identifier
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Notification identifier"
}
},
"additionalProperties": false
}
pm_read_activity_log
Read the activity log for a scope. `scope` selects the entity type and `identifier` is that entity's identifier (use the workspace identifier when scope=workspace). `mode` is either 'full' (this entity AND everything beneath it) or 'own' (this entity only). Cursor-paginated.
WARNING: every entry has a `data` field that is a JSON-encoded STRING — to inspect the payload you must double-parse it (parse the response, then JSON.parse(entry.data)). API-key scope: `activity_log:read`.
read-only
Argument
Type
Description
mode
string
Default 'full'
size
integer
1–100
scope*
string
cursor
string
Opaque cursor from a previous response
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
pm_remove_comment_reaction
Remove a reaction by identifier. Only the user who added the reaction may remove it. 204. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifier*
string
Task identifier (tsk_…)
commentIdentifier*
string
Comment identifier (cmt_…)
reactionIdentifier*
string
Reaction identifier (react_…)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier",
"commentIdentifier",
"reactionIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
},
"commentIdentifier": {
"type": "string",
"description": "Comment identifier (cmt_…)"
},
"reactionIdentifier": {
"type": "string",
"description": "Reaction identifier (react_…)"
}
},
"additionalProperties": false
}
pm_remove_tasks_from_sprint
Remove task-sprint associations. Tasks remain in their lists. Pass identifiers (tsk_…), not task keys. Returns updated SprintDTO. API-key scope: `sprints:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
taskIdentifiers*
array
Task identifiers (tsk_…); 1+ required
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier",
"taskIdentifiers"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"taskIdentifiers": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Task identifiers (tsk_…); 1+ required"
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_remove_team_member
Remove a single user from a team. Returns 204. Requires MANAGE_TEAMS. API-key scope: `teams:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
userUuid*
string
User UUID to remove
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Team identifier (team_…)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier",
"userUuid"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"userUuid": {
"type": "string",
"description": "User UUID to remove"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Team identifier (team_…)"
}
},
"additionalProperties": false
}
pm_remove_workspace_member
Remove a member from the workspace. NOTE: the target user UUID is passed as the `deletionUserUuid` QUERY parameter, not in the path or body. Caller needs MANAGE_USERS permission. Cannot remove the workspace owner — transfer ownership first via pm_transfer_workspace_ownership. Returns 204. API-key scope: `workspaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
deletionUserUuid*
string
UUID of the user to remove
Input schema (JSON)
{
"type": "object",
"required": [
"deletionUserUuid"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"deletionUserUuid": {
"type": "string",
"description": "UUID of the user to remove"
}
},
"additionalProperties": false
}
pm_replay_webhook_delivery
Re-send a specific past delivery to the webhook URL. Useful when the subscriber was down during the original attempt window or you need to re-trigger downstream processing. A replay re-sends the stored payload bytes, so it keeps the original envelope `id` and `eventId`: subscribers MUST treat a repeated eventId as a duplicate. The X-Webhook-Delivery header carries the new delivery id of the replay, so it differs from the envelope `id`. Every replay re-checks access first: a wiki or feature-request event whose item the webhook creator can no longer see is not replayed (404). API-key scope: `webhooks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
webhookIdentifier*
string
Webhook identifier
deliveryIdentifier*
string
Delivery (attempt) identifier to replay
Input schema (JSON)
pm_save_filter
Create a new saved filter on a list. Body is a FilterAggregateDTO with structured `filterGroups` — each group has a `precedingLogic` (AND/OR) and a list of filters. Each filter has `field`, `operator` (one of: is, equals, not, not_equals, like, greater_than, less_than, greater_or_equal, less_or_equal, is_set, is_not_set, in, not_in), `value`, optional `precedingLogic`, and `isCustomField` flag. Max 10 groups, max 20 filters per group.
No PATCH/PUT exists — to edit, delete + re-create. API-key scope: `filters:write`.
destructive
Argument
Type
Description
name
string
Display name for the saved filter
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
filterGroups*
array
Filter groups (max 10)
listIdentifier*
string
List identifier (tl_…)
Input schema (JSON)
pm_search_tasks
Search tasks across the workspace with name-based filters. status / priority / tag / taskType are repeatable (pass an array). assignee is an email or UUID. q is a free-text search over title + description. Returns a cursor-paginated page of LiteTaskResponse — pass nextCursor back as `cursor` to paginate. Present title linked to webUrl; show displayKey only when non-empty. key and identifier are API references, not display labels. API-key scope: `tasks:read`.
read-only
Argument
Type
Description
q
string
Free-text search over title + description
tag
array
Tag names (OR)
limit
integer
Default 50, max 200
space
string
Narrow to one space by name
cursor
string
Opaque cursor from a previous response
parent
string
Direct children of this task (key or identifier)
status
array
Status names (OR)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
pm_send_invitation
Send an email invitation to join the current workspace. `workspaceAccessLevelId` is a numeric Long id (NOT a name like "admin"/"member") — fetch the catalogue from /v1/workspaces/{ws}/access-levels to translate role names to ids before calling. Caller needs MANAGE_USERS permission. Returns 201 on success. API-key scope: `users:write`.
destructive
Argument
Type
Description
email*
string
Invitee email address
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
workspaceAccessLevelId*
integer
Numeric access-level id (Long); list /v1/workspaces/{ws}/access-levels to discover
Input schema (JSON)
{
"type": "object",
"required": [
"email",
"workspaceAccessLevelId"
],
"properties": {
"email": {
"type": "string",
"description": "Invitee email address"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"workspaceAccessLevelId": {
"type": "integer",
"description": "Numeric access-level id (Long); list /v1/workspaces/{ws}/access-levels to discover"
}
},
"additionalProperties": false
}
pm_start_sprint
Transition a sprint from NOT_STARTED to IN_PROGRESS. Only ONE sprint per group can be IN_PROGRESS at a time — starting a sprint while another is in progress will fail. No body. API-key scope: `sprints:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
pm_test_webhook
Fire a synthetic test delivery to a webhook on demand, without waiting for a real workspace event. PM POSTs a `webhook-test` event with body {"test": true, "message": "This is a test webhook delivery"} to the registered URL, signed with the same X-Webhook-Signature-256 HMAC as live deliveries. Use this to verify a receiver is reachable and that your HMAC signature-verification is correct when setting up two-way communication. Returns the resulting delivery record (status, attempt, timestamps) — inspect it (or pm_list_webhook_deliveries) to confirm the endpoint accepted it. API-key scope: `webhooks:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
webhookIdentifier*
string
Webhook identifier
Input schema (JSON)
{
"type": "object",
"required": [
"webhookIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
}
},
"additionalProperties": false
}
pm_transfer_workspace_ownership
Transfer workspace ownership to another existing member. Only the current owner can do this, and the target user must already be a member. `resultingOwnerAccessLevelId` is the numeric access-level id the CURRENT (departing) owner will keep — typically a regular admin/member level. Discover access-level ids via /v1/workspaces/{ws}/access-levels. API-key scope: `workspaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
transferToUserUuid*
string
UUID of the new owner (existing member)
resultingOwnerAccessLevelId*
integer
Numeric access-level id (Long) the previous owner will be assigned
Input schema (JSON)
{
"type": "object",
"required": [
"transferToUserUuid",
"resultingOwnerAccessLevelId"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"transferToUserUuid": {
"type": "string",
"description": "UUID of the new owner (existing member)"
},
"resultingOwnerAccessLevelId": {
"type": "integer",
"description": "Numeric access-level id (Long) the previous owner will be assigned"
}
},
"additionalProperties": false
}
pm_update_automation
Update an existing automation. All fields except `identifier` are optional — only specified fields change. `triggers`, `actions`, and `conditionNodes`, when present, REPLACE the existing collection (not append). Use `active: false` to disable without deleting. API-key scope: `automations:write`.
destructive
Argument
Type
Description
name
string
active
boolean
Enable / disable the rule
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
actions
array
REPLACES existing actions
triggers
array
REPLACES existing triggers
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
pm_update_current_user
Update the current user's profile. Today the request body has a single field (`fullName`) — pass the new display name. Returns the updated TaskManagementUserDTO. API-key scope: `users:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
fullName*
string
New display name shown across the app
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"fullName"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"fullName": {
"type": "string",
"description": "New display name shown across the app"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPrivate
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Custom field identifier (cf_…)
description
string
pm_update_folder
Update folder metadata by identifier (fld_…). All fields optional. API-key scope: `folders:write`.
destructive
Argument
Type
Description
icon
string
name
string
color
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPrivate
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Folder identifier (fld_…)
description
string
Input schema (JSON)
pm_update_list
Update list metadata by identifier (tl_…). All fields optional. API-key scope: `lists:write`.
destructive
Argument
Type
Description
icon
string
name
string
color
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPrivate
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
description
string
Input schema (JSON)
pm_update_notification_channel
Enable or disable a single notification module/channel combination — e.g. email-off for due-date reminders. The module names come from pm_get_notification_settings. Pass `enabled: true|false`. To bulk-toggle all channels for a module, repeat this tool for each channel; there is no bulk endpoint. API-key scope: `users:write`.
destructive
Argument
Type
Description
module*
string
Module identifier from the aggregated settings — e.g. 'comments', 'mentions', 'assignments', 'due_date', 'automation', 'invitation'
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
channel*
string
Delivery channel
enabled*
boolean
Turn the channel on (true) or off (false)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
pm_update_sprint
Full update of sprint name, goal, and date window. NOTE: this is a PUT, not a PATCH — fields you omit may be cleared by the backend. Pass every field you want to keep. API-key scope: `sprints:write`.
destructive
Argument
Type
Description
goal
string
Max 5000 chars
name
string
Max 200 chars
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
endDate
string
ISO-8601 instant
startDate
string
ISO-8601 instant
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sprintIdentifier*
string
Input schema (JSON)
pm_update_tag
Rename or recolor an existing tag. All updatable fields are optional — pass only what you want to change. The tag identifier stays the same; any task already tagged keeps the new name and colors automatically. API-key scope: `tags:write`.
destructive
Argument
Type
Description
name
string
New display name
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
textColor
string
New hex foreground color
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
Tag identifier (tag_…)
backgroundColor
string
New hex background color
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"name": {
"type": "string",
"description": "New display name"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"textColor": {
"type": "string",
"description": "New hex foreground color"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Tag identifier (tag_…)"
},
"backgroundColor": {
"type": "string",
"description": "New hex background color"
}
},
"additionalProperties": false
}
pm_update_task
Partial-update a task by ref. Only fields present in the call are changed. Pass an explicit null to clear nullable fields (dueDate, parent, taskType, etc.). Names resolve leniently against the current effective set. To change just the type and nothing else, prefer this with `taskType` set; use `pm_bulk_change_task_type` when changing many tasks at once. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
ref*
string
Task key or identifier
list
string | null
Move to another list
tags
array
level
string | null
title
string
nextTo
string | null
parent
string | null
Re-parent (or null to detach)
status
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
pm_update_task_comment
Update an existing comment. Only the original author may edit. API-key scope: `tasks:write`.
destructive
Argument
Type
Description
ref*
string
Owning task key or identifier
text*
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
mentions
array
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
commentIdentifier*
string
Comment identifier (cmt_…)
Input schema (JSON)
{
"type": "object",
"required": [
"ref",
"commentIdentifier",
"text"
],
"properties": {
"ref": {
"type": "string",
"description": "Owning task key or identifier"
},
"text": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"mentions": {
"type": "array",
"items": {
"type": "string"
}
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"commentIdentifier": {
"type": "string",
"description": "Comment identifier (cmt_…)"
}
},
"additionalProperties": false
}
pm_update_team
Update a team's metadata or replace its full member list. All fields are optional — only specified fields change. NOTE: `memberUuids`, if present, REPLACES the existing membership (not appends). Use pm_add_team_member / pm_remove_team_member for incremental changes. Requires the workspace MANAGE_TEAMS permission. API-key scope: `teams:write`.
destructive
Argument
Type
Description
icon
string
Icon identifier or emoji
name
string
Display name (max 100 chars)
alias
string
Short alias / @handle (max 100 chars)
color
string
Hex color, e.g. "#E91E63"
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
pm_update_view
Update a view, including the auto-created primary List view when finishing list setup. Configure useful column order, grouping, and sorting instead of leaving a defaults-only view. filters / columns use FilterGroupDTO / ColumnOrderItem shapes. Sending columns replaces the entire selection/order: include every native and custom field that should remain visible. Use raw custom-field identifiers from pm_get_workspace_context. Header icons belong in custom-field emoji/color metadata. Read back the rich resource-view configuration for verification; Lite GET/list responses omit columns and filters. API-key scope: `views:write`.
destructive
Argument
Type
Description
name
string
sortBy
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
columns
array
Column order items
filters
array
Filter groups (FilterGroupDTO shape)
groupBy
string
isPrivate
boolean
pm_update_webhook
Partial-update a webhook subscription. Only fields present in the call are changed (pass-through PATCH-style semantics). Use `active: false` to pause deliveries without deleting. Updating eventTypes replaces the full subscribed set. Pass `secret` to rotate the HMAC signing secret: it is stored exactly as given and never returned, so keep your copy. Resuming (`active: true`) re-checks the stored URL. Re-scope with scopeType plus scopeEntityIdentifier (same values as pm_create_webhook), or pass `clearScope: true` to make the webhook workspace-wide again. includeSecurityBugs sets whether feature-request security bugs are delivered; omit it to keep the stored value. An API key can turn it off but not on (403): only a workspace admin signed in as a person can turn it on. The URL must be publicly reachable: Dutify refuses private, loopback, link-local, CGNAT and IPv6 ULA addresses, localhost, bare hostnames and *.svc / *.cluster.local names (400 WEBHOOK_URL_NOT_ALLOWED) at create, update and resume, and re-checks it on every attempt. Redirects are not followed; http:// is accepted for public addresses. API-key scope: `webhooks:write`.
destructive
Argument
Type
Description
url
string
name
string
active
boolean
Toggle delivery on/off without deleting
secret
string
New HMAC signing secret (rotation); must not be blank; sent unchanged, never returned
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
whoami
Unified Dutify whoami: fresh credential/workspace discovery. Does not require a selected workspace or reserve quota.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_check_public_slug
Check whether a public URL slug is available and validly formatted for a space, before publishing. Returns a SlugAvailabilityDTO. Call this when choosing a `customSlug` for wiki_set_public_settings. Requires space admin. API-key scope: `wiki:spaces:read`.
read-only
Argument
Type
Description
slug*
string
Candidate public slug (e.g. "my-docs")
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Candidate public slug (e.g. \"my-docs\")"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_confirm_attachment
Step 3 of uploading: confirm that the bytes were successfully PUT to the presigned `uploadUrl`, activating the attachment. Returns the WikiAttachmentDTO (status becomes "confirmed"). Call only after the byte PUT succeeded. API-key scope: `wiki:attachments:write`.
destructive
Argument
Type
Description
pageId*
string
Page UUID
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
attachmentId*
string
Attachment UUID from wiki_request_attachment_upload
Input schema (JSON)
{
"type": "object",
"required": [
"pageId",
"attachmentId"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page UUID"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"attachmentId": {
"type": "string",
"description": "Attachment UUID from wiki_request_attachment_upload"
}
},
"additionalProperties": false
}
wiki_create_page
Create a wiki page under a space. Pass EITHER `markdown` (simpler, server converts to TipTap) OR `content` (TipTap/ProseMirror JSON, mutually exclusive with markdown). Use `content` when you need rich features that markdown can't express — banners, collapsibles, mermaid diagrams, action buttons, inline labels, mentions, code blocks with language, etc. For the full TipTap doc shape and a copy-friendly reference of every node and mark, call `get_endpoint_examples` with tag="Wiki Pages (Lite)" (and optionally name="full-tiptap"). Optional parent slug to nest under another page. Returns the created page DTO. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:pages:write`.
Argument
Type
Description
icon
string
Optional icon/emoji (e.g. "rocket")
title*
string
parent
string
Optional parent page slug
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
content
object
Page body as TipTap/ProseMirror JSON. Use for rich content that markdown doesn't support (banners, collapsibles, mermaid, action buttons, inline labels, mentions). Mutually exclusive with `markdown`. Call get_endpoint_examples(tag="Wiki Pages (Lite)") for the full doc shape.
wiki_create_space
Create a new wiki space in the current workspace. `key` is the unique short identifier used in URLs and subsequent API calls — uppercase letters + digits only, 2-20 chars, must start with a letter (e.g. "DOCS", "ENG2"). `name` is the human display name. Defaults: `isPublic: true` (INTERNAL visibility — all workspace members can view), `isEditPublic: false`. NOTE: `isPublic` is internal workspace visibility ONLY; it does NOT publish the space to the public web — use wiki_set_public_settings for that. Requires workspace-level edit access. API-key scope: `wiki:spaces:write`.
Argument
Type
Description
key*
string
Uppercase alphanumeric key, 2-20 chars, must start with a letter
icon
string
Emoji name (e.g. "rocket") or "icon:<PhosphorName>" (e.g. "icon:BookOpen"). Valid names: GET /v1/custom-field-icon-options (emojiNames bare; iconNames with the "icon:" prefix).
name*
string
Display name, max 200 chars
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPublic
boolean
INTERNAL visibility — all workspace members can view (default true). NOT public-web publishing; use wiki_set_public_settings to publish.
iconColor
wiki_delete_attachment
Permanently delete an attachment and its stored file (returns 204). Useful for cleaning up unused or leftover uploads. This does not remove image nodes that still reference it in a page body — update the page content separately if needed. API-key scope: `wiki:attachments:write`.
destructive
Argument
Type
Description
pageId*
string
Page UUID
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
attachmentId*
string
Attachment UUID to delete
Input schema (JSON)
{
"type": "object",
"required": [
"pageId",
"attachmentId"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page UUID"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"attachmentId": {
"type": "string",
"description": "Attachment UUID to delete"
}
},
"additionalProperties": false
}
wiki_delete_page
Archive (soft-delete) or permanently delete a wiki page by slug. Falls through to the non-lite Wiki Pages API since there is no lite delete endpoint — path is `DELETE /v1/workspaces/{workspaceIdentifier}/wiki/spaces/{spaceKey}/pages/{slug}` with optional `?permanent=true`. Default behavior archives the page (soft delete); pass `permanent: true` to hard-delete (requires admin access). Returns 204 on success. API-key scope: `wiki:pages:write`.
destructive
Argument
Type
Description
slug*
string
Slug of the page to delete
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
permanent
boolean
If true, permanently deletes instead of archiving. Requires admin access.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
wiki_delete_space
PERMANENTLY delete a wiki space AND every page inside it. Requires admin access to the space. This is destructive — surface a clear confirmation to the user before calling. Returns 204. API-key scope: `wiki:spaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_disable_page_share
Disable the public share link for a single page, revoking access via its URL (returns 204). Requires edit access. API-key scope: `wiki:pages:write`.
destructive
Argument
Type
Description
slug*
string
Page slug
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Page slug"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_enable_page_share
Enable a public SHARE LINK for a single page, returning a PublicShareInfoDTO with the `publicUrl` to hand out. Optional `token` sets a custom URL slug (3-100 chars, lowercase letters/digits/hyphens; 409 if already taken — omit to auto-generate). Optional `showAuthor` toggles author display. ⚠️ OUTWARD-FACING: anyone with the link can read this page — confirm with the user before enabling. Requires edit access. API-key scope: `wiki:pages:write`.
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
showAuthor
wiki_get_page
Get a wiki page by slug within a space. Default format is Markdown (the body is returned under the `markdown` field); pass format="tiptap" for raw ProseMirror JSON. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:pages:read`.
read-only
Argument
Type
Description
slug*
string
Page slug
format
string
Body format (default: markdown)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Page slug"
},
"format": {
"enum": [
"markdown",
"tiptap"
],
"type": "string",
"description": "Body format (default: markdown)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_get_page_share
Get the public SHARE-LINK status for a single page (PublicShareInfoDTO): `isEnabled`, `publicToken`, `publicUrl` (the shareable link), `showAuthor`, `sharedAt`, `sharedBy`, `workspaceAllowsSharing`. A per-page share link lets anyone with the URL read just that one page — distinct from publishing a whole space (wiki_set_public_settings). Requires edit access. API-key scope: `wiki:pages:read`.
read-only
Argument
Type
Description
slug*
string
Page slug
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Page slug"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_get_public_settings
Get a space's PUBLIC-WEB publishing settings (PublicSpaceSettingsDTO): `isEnabled` (is the space published to the public internet), `customSlug` (public URL slug), `allowedEmojis`, `showReactions`, `showPageViews`, `showLastUpdated`, `showAuthor`, `viewMode` ("space"|"helpcenter"), `heroTitle`, `heroSubtitle`. This is SEPARATE from the space's `isPublic` flag, which is internal workspace visibility only. Requires space admin. API-key scope: `wiki:spaces:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_get_space
Fetch a single wiki space by key. Returns the WikiSpaceDTO (id, key, name, description, icon, color, cover image, visibility flags, permissions, timestamps). For the page tree inside the space, use wiki_get_space_with_pages instead. API-key scope: `wiki:spaces:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key (e.g. "DOCS")
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key (e.g. \"DOCS\")"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_get_space_with_pages
Fetch a wiki space AND its complete page tree in one call. Returns WikiSpaceWithPagesDTO — space metadata plus `pages` (a recursive tree of WikiPageTreeNodeDTO with slug, title, type=page|folder, hasChildren, children[], view count, top reactions, the caller's effectivePermission per node). Use this to render or traverse the whole space; for a single level (root or one parent's children) wiki_list_pages is lighter. API-key scope: `wiki:spaces:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_list_attachments
List every attachment on a wiki page (WikiAttachmentDTO[]): id, pageId, filename, contentType, sizeBytes, status (pending|confirmed|failed), uploadedBy/At, confirmedAt. `pageId` is the page UUID (from wiki_get_space_with_pages tree node `id`, not the slug). Use to find an attachmentId to reference or delete. API-key scope: `wiki:attachments:read`.
read-only
Argument
Type
Description
pageId*
string
Page UUID (tree node `id` from wiki_get_space_with_pages)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"pageId"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page UUID (tree node `id` from wiki_get_space_with_pages)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_list_pages
List wiki pages in a space. Without `parent` returns root-level pages; pass a parent slug to list that page's children. Response items have slug, title, status, type (page|folder), parentSlug, updatedAt — no bodies. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:pages:read`.
read-only
Argument
Type
Description
limit
integer
Max results (default 100, max 500)
parent
string
Optional parent page slug
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Space key (from list_spaces)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max results (default 100, max 500)"
},
"parent": {
"type": "string",
"description": "Optional parent page slug"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Space key (from list_spaces)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_list_spaces
List every wiki space the caller can see in the current workspace. Each entry has the space's `key` (use this in subsequent calls), `name`, `description`, `effectivePermission` (view/edit/admin), and `canView`/`canEdit`/`canAdmin` booleans for quick gating. Call this first when an agent needs to figure out which space a wiki action should target. API-key scope: `wiki:spaces:read`.
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
wiki_move_page
Move a wiki page to a new parent and/or a new space. All body fields are optional and use slugs (resolved server-side in the target space) instead of UUIDs: `targetSpaceKey` for cross-space moves (omit to stay in the current space); `newParent` is the slug of the new parent page (omit/null to move to space root); `afterPage` is the slug of the sibling page to insert after (omit/null to place first). Returns the moved page DTO. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:pages:write`.
destructive
Argument
Type
Description
slug*
string
Slug of the page to move
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Source space key
afterPage
string | null
Optional sibling page slug to insert after (omit or null to place first)
newParent
string | null
Optional new parent page slug (omit or null to move to space root)
workspace
string
wiki_request_attachment_upload
Step 1 of uploading an image/file to a wiki page. Returns { attachmentId, uploadUrl, storageKey }. AFTER calling this you MUST: (2) PUT the raw file bytes to `uploadUrl` with your OWN HTTP client — the MCP server cannot do this binary upload — sending the EXACT same `Content-Type` as `contentType` and a `Content-Length` equal to `sizeBytes` (both are baked into the presigned URL; a mismatch 403s); then (3) call wiki_confirm_attachment to activate it. To embed the result as an image, add a TipTap image node with no `src` — { type:"image", attrs:{ attachmentId, pageId, width, height, align } }, width <= ~660 and height proportional — via wiki_update_page (content payload). Do NOT embed base64 data: URIs; they render distorted. Max 25 MB; system-executable file types are rejected. `pageId` is the page UUID (wiki_get_space_with_pages tree node `id`). API-key scope: `wiki:attachments:write`.
Argument
Type
Description
pageId*
string
Page UUID (tree node `id` from wiki_get_space_with_pages)
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
filename*
string
Original filename, e.g. "diagram.png"
sizeBytes*
integer
Exact file size in bytes — must match the PUT Content-Length exactly
workspace
wiki_retrieve
Search the wiki by MEANING and get back the most relevant PASSAGES (chunks) with citations and relevance scores. Use this to GROUND or ANSWER a question from wiki content: it returns quotable chunkText plus the source page/section so you can cite it. Each result has pageSlug, pageTitle, spaceKey, spaceName, chunkIndex, headingPath (heading-path breadcrumb), chunkText, score (0..1, higher = more relevant), status and updatedAt. This is retrieval-augmented generation (RAG) over wiki content, NOT a page finder — to merely LOCATE or LIST pages by title/keyword use wiki_search. Defaults to the top 5 chunks; pass limit to widen. Fails open to keyword retrieval if the embedding provider is unavailable. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:search:read`.
read-only
Argument
Type
Description
limit
integer
Max chunks to return (default 5)
query*
string
Natural-language question or topic to retrieve passages for
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey
string
Optional: restrict retrieval to one space
workspace
string
wiki_search
Find wiki PAGES by title/keyword in the current workspace. Returns a list of matching pages (slug, title, spaceKey, spaceName, excerpt, status, updatedAt) — no UUIDs, no full body. Use this to LOCATE or LIST pages (then call wiki_get_page to read one). To ANSWER a question FROM wiki content — i.e. get back quotable passages with citations and relevance scores — use wiki_retrieve instead. Optionally scope to a single space by passing spaceKey. Defaults to hybrid (keyword + semantic) ranking; pass mode to override. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:search:read`.
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey
string
Optional: restrict search to one space
workspace
wiki_set_public_settings
Publish / unpublish a space to the PUBLIC INTERNET, or update its public-site config. This is the REAL publish switch — NOT the space `isPublic` flag (which is internal visibility). Pass only the fields you want to change: `isEnabled` (true = publish to the web, false = take offline), `customSlug` (public URL slug — validate first with wiki_check_public_slug), `allowedEmojis` (string[]), `showReactions`, `showPageViews`, `showLastUpdated`, `showAuthor`, `viewMode` ("space"|"helpcenter"), `heroTitle`, `heroSubtitle`. Provided fields are merged onto the current settings (read-modify-write), so unspecified fields are preserved. Minimal publish: { isEnabled: true, customSlug: "my-docs" }. ⚠️ HIGH-TRUST / OUTWARD-FACING: enabling makes the space readable by ANYONE on the internet — confirm with the user before publishing. Requires space ADMIN. API-key scope: `wiki:spaces:write`.
destructive
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
spaceKey*
string
Uppercase space key
viewMode
string
"space" (default) or "helpcenter"
heroTitle
string
Help-center hero title (max 150 chars)
isEnabled
boolean
wiki_update_page
Update an existing wiki page by slug. Any field left unset preserves the current value. Pass EITHER `markdown` OR `content` (TipTap/ProseMirror JSON) for the body — they're mutually exclusive. Use `content` for rich features (banners, collapsibles, mermaid, etc.); call get_endpoint_examples(tag="Wiki Pages (Lite)") for the full doc shape. Page results include webUrl: a browser link requiring normal workspace access. Use it for citations; it does not make the page public. API-key scope: `wiki:pages:write`.
destructive
Argument
Type
Description
slug*
string
title
string
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
content
object
Replacement body as TipTap/ProseMirror JSON. Mutually exclusive with `markdown`. Call get_endpoint_examples(tag="Wiki Pages (Lite)") for the full doc shape.
markdown
string
Replacement body as Markdown. Mutually exclusive with `content`.
spaceKey*
string
wiki_update_space
Update a wiki space's metadata. All fields are optional — pass only what you want to change. The space key cannot be changed. Requires edit access to the space. API-key scope: `wiki:spaces:write`.
destructive
Argument
Type
Description
icon
string
Emoji name or "icon:<PhosphorName>". Valid names: GET /v1/custom-field-icon-options.
name
string
New display name
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
isPublic
boolean
INTERNAL visibility (workspace members). NOT public-web publishing — use wiki_set_public_settings.
spaceKey*
string
Uppercase space key
iconColor
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
string
Optional product area name
actualResult
string
expectedResult
string
stepsToReproduce
string
Input schema (JSON)
{
"type": "object",
"required": [
"boardSlug",
"title"
],
"properties": {
"title": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"severity": {
"type": "string",
"description": "Optional severity name"
},
"boardSlug": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"isSecurity": {
"type": "boolean",
"description": "Default false. True forces the bug to private regardless of board visibility."
},
"environment": {
"type": "object",
"description": "Free-form map: {browser, os, version, url, ...}",
"additionalProperties": true
},
"productArea": {
"type": "string",
"description": "Optional product area name"
},
"actualResult": {
"type": "string"
},
"expectedResult": {
"type": "string"
},
"stepsToReproduce": {
"type": "string"
}
},
"additionalProperties": false
}
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"boardSlug"
],
"properties": {
"q": {
"type": "string",
"description": "Title search query (ignores other filters when set)"
},
"page": {
"type": "integer",
"description": "Zero-based page number (default 0)"
},
"size": {
"type": "integer",
"description": "Page size (default 20, max 200)"
},
"status": {
"type": "string",
"description": "Status name filter (e.g. \"In Progress\")"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"category": {
"type": "string"
},
"boardSlug": {
"type": "string",
"description": "Board slug (from list_boards)"
},
"milestone": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
operationId
string
Optional: narrow to one operation. Operation IDs come from the spec; they appear in the per-tag detail response next to each operation summary.
Input schema (JSON)
{
"type": "object",
"required": [
"tag"
],
"properties": {
"tag": {
"type": "string",
"description": "Resource tag, e.g. \"Wiki Pages (Lite)\", \"Milestone Articles\", \"Tasks\". Pass it verbatim — the case and spacing matter."
},
"name": {
"type": "string",
"description": "Optional: narrow to one named example. Common names: \"minimal\", \"full\", \"full-tiptap\", \"full-markdown\". Names appear in the per-tag detail response under each operation's requestBody.examples."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"operationId": {
"type": "string",
"description": "Optional: narrow to one operation. Operation IDs come from the spec; they appear in the per-tag detail response next to each operation summary."
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "UserCall integer ID — the OUTER `id` from list/search/etc., NOT the inner `call.id`."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
*
array
One or more Jira project ids within the cloud.
Input schema (JSON)
{
"type": "object",
"required": [
"callUUID",
"cloudId",
"projectIds"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"cloudId": {
"type": "string",
"description": "Jira cloud id (from connected integration)."
},
"callUUID": {
"type": "string",
"description": "Call's UUID — NESTED at hub_get_call.call.callUuid (NOT top-level hub_get_call.uuid). The DTO has two integer ids and one UUID; this is the UUID, not either of the integers."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"projectIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "One or more Jira project ids within the cloud."
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"required": [
"seriesMasterId",
"customPrompt"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"workspaceId": {
"type": "string",
"description": "Optional. Only used when the series has no stored row yet and one must be created. Personal keys may choose a workspace they belong to that permits the key. Workspace keys may choose only the key's workspace or the owner's default. Omit it to use the key's selected or bound workspace."
},
"customPrompt": {
"type": "string",
"description": "Instructions for the AI when it analyses meetings in this series."
},
"seriesMasterId": {
"type": "string",
"description": "Series master id from hub_list_calendar_events."
}
},
"additionalProperties": false
}
shareDueDate
boolean
Expose due date
shareAssignee
boolean
Expose assignees on the public view
shareComments
boolean
Expose comments
sharePriority
boolean
Expose priority
shareSubtasks
boolean
Expose subtasks
taskIdentifier*
string
Task identifier (tsk_…) or short key
shareAttachments
boolean
Expose file attachments
shareDescription
boolean
Expose task description
shareCustomFields
boolean
Expose custom field values
sharedCustomFieldIdentifiers
array
Explicit allow-list of custom-field identifiers to expose (when shareCustomFields=true)
Input schema (JSON)
{
"type": "object",
"required": [
"taskIdentifier"
],
"properties": {
"shared": {
"type": "boolean",
"description": "true to publish, false to revoke"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"expiresAt": {
"type": "string",
"description": "Optional ISO 8601 timestamp when the share link should auto-expire (e.g. \"2026-12-31T23:59:59Z\")"
},
"shareTags": {
"type": "boolean",
"description": "Expose tags"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"shareStatus": {
"type": "boolean",
"description": "Expose current status"
},
"shareDueDate": {
"type": "boolean",
"description": "Expose due date"
},
"shareAssignee": {
"type": "boolean",
"description": "Expose assignees on the public view"
},
"shareComments": {
"type": "boolean",
"description": "Expose comments"
},
"sharePriority": {
"type": "boolean",
"description": "Expose priority"
},
"shareSubtasks": {
"type": "boolean",
"description": "Expose subtasks"
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…) or short key"
},
"shareAttachments": {
"type": "boolean",
"description": "Expose file attachments"
},
"shareDescription": {
"type": "boolean",
"description": "Expose task description"
},
"shareCustomFields": {
"type": "boolean",
"description": "Expose custom field values"
},
"sharedCustomFieldIdentifiers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit allow-list of custom-field identifiers to expose (when shareCustomFields=true)"
}
},
"additionalProperties": false
}
description
string
Optional description (max 2000 chars)
conditionNodes
array
Optional flat condition tree (AND/OR groups + leaf predicates)
listIdentifier
string
Scope: a list (use exactly one of list/folder/space)
spaceIdentifier
string
Scope: a space
folderIdentifier
string
Scope: a folder
Input schema (JSON)
{
"type": "object",
"required": [
"name",
"triggers",
"actions"
],
"properties": {
"name": {
"type": "string",
"description": "Display name (max 200 chars)"
},
"active": {
"type": "boolean",
"description": "Start enabled or disabled. Default true on backend."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"actionType"
],
"properties": {
"actionType": {
"type": "string",
"description": "Action type from automation-action-types reference"
},
"parameters": {
"type": "string",
"description": "JSON-encoded parameters string"
}
},
"description": "An action to perform when the automation fires. Actions run in order."
},
"description": "Actions executed in order on trigger"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"required": [
"triggerType"
],
"properties": {
"parameters": {
"type": "string",
"description": "JSON-encoded parameters string, e.g. \"{\\\"fromStatus\\\":\\\"in_progress\\\"}\""
},
"triggerType": {
"type": "string",
"description": "Event type, e.g. \"status_changed\", \"task_created\", \"due_date_changed\""
}
},
"description": "A trigger that activates the automation. Multiple triggers are OR-ed."
},
"description": "One or more triggers (OR-ed)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "Optional description (max 2000 chars)"
},
"conditionNodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"children": {
"type": "array",
"description": "Child nodes (group only)"
},
"nodeType": {
"enum": [
"condition",
"operator"
],
"type": "string"
},
"leftOperand": {
"type": "string",
"description": "Field being inspected (leaf only)"
},
"operatorType": {
"type": "string",
"description": "AND/OR for group nodes; predicate operator for leaves"
},
"rightOperand": {
"type": "string",
"description": "Comparison value (leaf only)"
},
"conditionType": {
"type": "string",
"description": "Predicate category (leaf only)"
}
},
"description": "A node in the condition tree. Leaf node uses nodeType=\"condition\" with conditionType/operatorType/leftOperand/rightOperand. Group node uses nodeType=\"operator\" with operatorType=AND|OR and `children`."
},
"description": "Optional flat condition tree (AND/OR groups + leaf predicates)"
},
"listIdentifier": {
"type": "string",
"description": "Scope: a list (use exactly one of list/folder/space)"
},
"spaceIdentifier": {
"type": "string",
"description": "Scope: a space"
},
"folderIdentifier": {
"type": "string",
"description": "Scope: a folder"
}
},
"additionalProperties": false
}
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
options
array
For dropdown/labels types only
scopeName
string
Space or list name (omitted for workspace scope)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"scope",
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Plain custom-field display name. Do not prefix names with emoji for icons."
},
"type": {
"type": "string",
"description": "Field type — text, number, date, checkbox, dropdown, labels, url, email, phone, etc."
},
"color": {
"type": "string",
"description": "Optional hex color code for the field icon"
},
"emoji": {
"type": "string",
"description": "Optional icon-picker key for the field icon. Query /v1/custom-field-icon-options for supported keys. Prefer semantically matching emojiNames when available (e.g. severity=fire, target=direct_hit, launch=rocket); use iconNames for structural/type icons."
},
"scope": {
"enum": [
"workspace",
"space",
"list"
],
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"value"
],
"properties": {
"color": {
"type": "string"
},
"emoji": {
"type": "string"
},
"value": {
"type": "string"
},
"orderIndex": {
"type": "integer"
}
}
},
"description": "For dropdown/labels types only"
},
"scopeName": {
"type": "string",
"description": "Space or list name (omitted for workspace scope)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
idempotencyKey
string
Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed.
Input schema (JSON)
{
"type": "object",
"required": [
"space",
"name"
],
"properties": {
"icon": {
"type": "string",
"description": "Optional list icon. Prefer semantic emoji names first (rocket, fire, direct_hit, white_check_mark, pushpin, moneybag); use icon identifiers only when no emoji fits."
},
"name": {
"type": "string",
"description": "List name"
},
"color": {
"type": "string",
"description": "Optional list color, usually a hex color"
},
"space": {
"type": "string",
"description": "Space name"
},
"folder": {
"type": "string",
"description": "Optional folder name"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"idempotencyKey": {
"type": "string",
"description": "Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed."
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"required": [
"name"
],
"properties": {
"icon": {
"type": "string",
"description": "Emoji or icon name"
},
"name": {
"type": "string"
},
"color": {
"type": "string",
"description": "Hex color code"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string"
},
"idempotencyKey": {
"type": "string",
"description": "Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed."
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"groupIdentifier",
"name"
],
"properties": {
"goal": {
"type": "string",
"description": "Sprint goal (max 5000 chars)"
},
"name": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"endDate": {
"type": "string",
"description": "ISO-8601 instant"
},
"startDate": {
"type": "string",
"description": "ISO-8601 instant, e.g. 2026-04-14T00:00:00Z"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"groupIdentifier": {
"type": "string",
"description": "Sprint group identifier"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"spaceIdentifier",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Display name (case-sensitive — duplicates rejected per space)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"textColor": {
"type": "string",
"description": "Hex foreground color, e.g. \"#FFFFFF\". Optional."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"backgroundColor": {
"type": "string",
"description": "Hex background color, e.g. \"#3B82F6\". Optional — server picks a default."
},
"spaceIdentifier": {
"type": "string",
"description": "Space identifier (sp_…)"
}
},
"additionalProperties": false
}
parent
string
Parent task key or identifier (for subtasks)
status
string
Status name (e.g. "In Progress")
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
dueDate
string
ISO-8601 datetime
priority
string
taskType
string
assignees
array
Emails
isPrivate
boolean
startDate
string
ISO-8601 datetime
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
customFields
object
{fieldName: value}. Include every field the list marks mandatory (isMandatory, see pm_get_workspace_context) — a missing required field is rejected with a 400 VALIDATION_ERROR (details.field = field display name, also named in the message). Note on email: multi-value is supported but OPT-IN per field via visualSettings.allowsMultiple (default false, and settable only on the rich custom-field endpoints, not the lite ones). When enabled, pass an array of email strings and/or {email,displayName,verified} objects, max 200 elements (over that = 400 "Array value exceeds maximum size of 200 elements"). When not enabled, pass a string or object — an array is rejected with "Email field value must be a string or object", and the fix is to enable allowsMultiple, not to use a comma-separated string (that fails format validation). phone/website/location remain single-value.
estimatedTime
integer
Minutes
idempotencyKey
string
Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed.
recurrenceRule
string
iCal RRULE string
Input schema (JSON)
{
"type": "object",
"required": [
"title"
],
"properties": {
"list": {
"type": "string",
"description": "Task-list identifier (tl_…); omit if parent is set"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"level": {
"type": "string"
},
"title": {
"type": "string"
},
"nextTo": {
"type": "string",
"description": "Task key/identifier to position next to"
},
"parent": {
"type": "string",
"description": "Parent task key or identifier (for subtasks)"
},
"status": {
"type": "string",
"description": "Status name (e.g. \"In Progress\")"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"dueDate": {
"type": "string",
"description": "ISO-8601 datetime"
},
"priority": {
"type": "string"
},
"taskType": {
"type": "string"
},
"assignees": {
"type": "array",
"items": {
"type": "string"
},
"description": "Emails"
},
"isPrivate": {
"type": "boolean"
},
"startDate": {
"type": "string",
"description": "ISO-8601 datetime"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string"
},
"customFields": {
"type": "object",
"description": "{fieldName: value}. Include every field the list marks mandatory (isMandatory, see pm_get_workspace_context) — a missing required field is rejected with a 400 VALIDATION_ERROR (details.field = field display name, also named in the message). Note on email: multi-value is supported but OPT-IN per field via visualSettings.allowsMultiple (default false, and settable only on the rich custom-field endpoints, not the lite ones). When enabled, pass an array of email strings and/or {email,displayName,verified} objects, max 200 elements (over that = 400 \"Array value exceeds maximum size of 200 elements\"). When not enabled, pass a string or object — an array is rejected with \"Email field value must be a string or object\", and the fix is to enable allowsMultiple, not to use a comma-separated string (that fails format validation). phone/website/location remain single-value.",
"additionalProperties": true
},
"estimatedTime": {
"type": "integer",
"description": "Minutes"
},
"idempotencyKey": {
"type": "string",
"description": "Optional. Pass a UUID to dedupe retries within a 5-minute window. The same key inside the window returns 409 DUPLICATE_REQUEST regardless of body — query by name/identifier to find what was created on the first attempt; never assume the second call failed."
},
"recurrenceRule": {
"type": "string",
"description": "iCal RRULE string"
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"required": [
"name"
],
"properties": {
"icon": {
"type": "string",
"description": "Icon identifier or emoji"
},
"name": {
"type": "string",
"description": "Display name (max 100 chars)"
},
"alias": {
"type": "string",
"description": "Short alias / @handle (max 100 chars)"
},
"color": {
"type": "string",
"description": "Hex color, e.g. \"#E91E63\""
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "Optional description (max 10000 chars)"
},
"memberUuids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Initial members (user UUIDs). Optional — add members later via pm_add_team_member."
}
},
"additionalProperties": false
}
columns
array
Visible columns in display order — strongly recommended on every create. Each item should include columnIdentifier, isMandatory, and optional fixed. Include every custom field you want viewable; omitted columns are hidden and leaving this out yields a defaults-only, effectively empty view. Headers come from the underlying system/custom-field names; keep names plain and use custom-field emoji/color metadata for icons.
filters
array
Optional filter groups (FilterGroupDTO shape).
groupBy
string
Field name to group by (status, priority, etc.)
isPrivate
boolean
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sortDirection
string
scopeIdentifier
string
Input schema (JSON)
{
"type": "object",
"required": [
"scope",
"name",
"type"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"list",
"board",
"table",
"dashboard",
"gantt",
"calendar",
"gallery"
],
"type": "string"
},
"scope": {
"enum": [
"workspace",
"space",
"folder",
"list"
],
"type": "string"
},
"sortBy": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"columns": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Visible columns in display order — strongly recommended on every create. Each item should include columnIdentifier, isMandatory, and optional fixed. Include every custom field you want viewable; omitted columns are hidden and leaving this out yields a defaults-only, effectively empty view. Headers come from the underlying system/custom-field names; keep names plain and use custom-field emoji/color metadata for icons."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Optional filter groups (FilterGroupDTO shape)."
},
"groupBy": {
"type": "string",
"description": "Field name to group by (status, priority, etc.)"
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string"
},
"scopeIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
url*
string
Public HTTPS endpoint that will receive POSTs
name
string
Human-readable label for the webhook
secret
string
Optional HMAC signing secret; omit it to get a generated one, returned once
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
scopeType
string
Optional scope narrowing; requires scopeEntityIdentifier when set
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
eventTypes*
array
Event names from pm_list_webhook_event_types, e.g. ["task-created", "wiki.page.published", "feedback.request.created"]
scopeEntityIdentifier
string
The scoped entity: its identifier, a wiki space key, a board slug or id, or a request/bug short key (required when scopeType is set; requires scopeType)
Input schema (JSON)
{
"type": "object",
"required": [
"url",
"eventTypes"
],
"properties": {
"url": {
"type": "string",
"description": "Public HTTPS endpoint that will receive POSTs"
},
"name": {
"type": "string",
"description": "Human-readable label for the webhook"
},
"secret": {
"type": "string",
"description": "Optional HMAC signing secret; omit it to get a generated one, returned once"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"scopeType": {
"enum": [
"SPACE",
"FOLDER",
"TASK_LIST",
"TASK",
"WIKI_SPACE",
"WIKI_PAGE",
"FEEDBACK_BOARD",
"FEEDBACK_REQUEST",
"FEEDBACK_BUG"
],
"type": "string",
"description": "Optional scope narrowing; requires scopeEntityIdentifier when set"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Event names from pm_list_webhook_event_types, e.g. [\"task-created\", \"wiki.page.published\", \"feedback.request.created\"]"
},
"scopeEntityIdentifier": {
"type": "string",
"description": "The scoped entity: its identifier, a wiki space key, a board slug or id, or a request/bug short key (required when scopeType is set; requires scopeType)"
}
},
"additionalProperties": false
}
includeTags
boolean
Default true
includeTaskTypes
boolean
Default true
includeCustomFields
boolean
Default true
includeRelationshipTypes
boolean
Default true
Input schema (JSON)
{
"type": "object",
"properties": {
"space": {
"type": "string",
"description": "Narrow to one space by name (exact match)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"shallow": {
"type": "boolean",
"description": "Skip per-list statuses/priorities (faster)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"includeTags": {
"type": "boolean",
"description": "Default true"
},
"includeTaskTypes": {
"type": "boolean",
"description": "Default true"
},
"includeCustomFields": {
"type": "boolean",
"description": "Default true"
},
"includeRelationshipTypes": {
"type": "boolean",
"description": "Default true"
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 0,
"description": "0-indexed page number"
},
"size": {
"type": "integer",
"description": "1–100"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sortColumn": {
"type": "string"
},
"unreadOnly": {
"type": "boolean"
},
"sortDirection": {
"type": "string",
"description": "e.g. 'asc' or 'desc'"
}
},
"additionalProperties": false
}
read-only
Argument
Type
Description
account
string
Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection.
category*
string
Which reference-data enum to list.
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"category"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"category": {
"enum": [
"custom-field-types",
"custom-field-icon-options",
"resource-view-types",
"status-types",
"activity-types",
"automation-action-types",
"automation-condition-types",
"automation-field-operators",
"access-levels",
"workspace-access-level-permissions"
],
"type": "string",
"description": "Which reference-data enum to list."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"taskIdentifier"
],
"properties": {
"page": {
"type": "integer",
"minimum": 0
},
"size": {
"type": "integer",
"description": "1–100"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sortColumn": {
"type": "string"
},
"sortDirection": {
"type": "string"
},
"taskIdentifier": {
"type": "string",
"description": "Task identifier (tsk_…)"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"webhookIdentifier"
],
"properties": {
"size": {
"type": "integer",
"description": "Page size (max 100)"
},
"limit": {
"type": "integer",
"description": "Alias for size (max 100)"
},
"cursor": {
"type": "string",
"description": "Opaque cursor / page token from a previous response"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
}
},
"additionalProperties": false
}
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
sortColumn
string
sortDirection
string
'asc' or 'desc'
Input schema (JSON)
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "0-based page number"
},
"size": {
"type": "integer",
"description": "Page size, 1–100. DEFAULTS TO 20 if omitted (silent truncation); >100 returns 400."
},
"search": {
"type": "string",
"description": "Case-insensitive substring on first name / last name / email; applied before paging, so totalCount reflects matches."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sortColumn": {
"type": "string"
},
"sortDirection": {
"type": "string",
"description": "'asc' or 'desc'"
}
},
"additionalProperties": false
}
identifier*
string
Entity identifier — workspace identifier when scope=workspace, otherwise the space/list/task identifier.
Input schema (JSON)
{
"type": "object",
"required": [
"scope",
"identifier"
],
"properties": {
"mode": {
"enum": [
"full",
"own"
],
"type": "string",
"description": "Default 'full'"
},
"size": {
"type": "integer",
"description": "1–100"
},
"scope": {
"enum": [
"workspace",
"space",
"list",
"task"
],
"type": "string"
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Entity identifier — workspace identifier when scope=workspace, otherwise the space/list/task identifier."
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"webhookIdentifier",
"deliveryIdentifier"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
},
"deliveryIdentifier": {
"type": "string",
"description": "Delivery (attempt) identifier to replay"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"listIdentifier",
"filterGroups"
],
"properties": {
"name": {
"type": "string",
"description": "Display name for the saved filter"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"filterGroups": {
"type": "array",
"items": {
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"operator"
],
"properties": {
"field": {
"type": "string",
"description": "Field name (e.g. \"status\") or custom-field identifier"
},
"value": {
"description": "Comparison value; type depends on the field + operator. Strings, numbers, booleans, arrays, or objects all valid — server validates per operator."
},
"operator": {
"enum": [
"is",
"equals",
"not",
"not_equals",
"like",
"greater_than",
"less_than",
"greater_or_equal",
"less_or_equal",
"is_set",
"is_not_set",
"in",
"not_in"
],
"type": "string"
},
"isCustomField": {
"type": "boolean"
},
"precedingLogic": {
"enum": [
"AND",
"OR",
"and",
"or"
],
"type": "string"
}
}
},
"maxItems": 20,
"description": "Filter conditions in this group (max 20)"
},
"precedingLogic": {
"enum": [
"AND",
"OR",
"and",
"or"
],
"type": "string",
"description": "Logical connector with the previous group"
}
}
},
"maxItems": 10,
"description": "Filter groups (max 10)"
},
"listIdentifier": {
"type": "string",
"description": "List identifier (tl_…)"
}
},
"additionalProperties": false
}
assignee
array
Assignee emails or UUIDs (OR)
priority
array
Priority names (OR)
taskType
array
Task type names (OR)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
includeClosed
boolean
Default false
listIdentifier
string
Narrow to one list by its identifier (lst_…)
includeSubtasks
boolean
Default true
Input schema (JSON)
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free-text search over title + description"
},
"tag": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names (OR)"
},
"limit": {
"type": "integer",
"description": "Default 50, max 200"
},
"space": {
"type": "string",
"description": "Narrow to one space by name"
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response"
},
"parent": {
"type": "string",
"description": "Direct children of this task (key or identifier)"
},
"status": {
"type": "array",
"items": {
"type": "string"
},
"description": "Status names (OR)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"assignee": {
"type": "array",
"items": {
"type": "string"
},
"description": "Assignee emails or UUIDs (OR)"
},
"priority": {
"type": "array",
"items": {
"type": "string"
},
"description": "Priority names (OR)"
},
"taskType": {
"type": "array",
"items": {
"type": "string"
},
"description": "Task type names (OR)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"includeClosed": {
"type": "boolean",
"description": "Default false"
},
"listIdentifier": {
"type": "string",
"description": "Narrow to one list by its identifier (lst_…)"
},
"includeSubtasks": {
"type": "boolean",
"description": "Default true"
}
},
"additionalProperties": false
}
Automation identifier (auto_…)
description
string
conditionNodes
array
REPLACES existing condition tree (omit to leave it untouched)
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"name": {
"type": "string"
},
"active": {
"type": "boolean",
"description": "Enable / disable the rule"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"actionType"
],
"properties": {
"actionType": {
"type": "string",
"description": "Action type from automation-action-types reference"
},
"parameters": {
"type": "string",
"description": "JSON-encoded parameters string"
}
},
"description": "An action to perform when the automation fires. Actions run in order."
},
"description": "REPLACES existing actions"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"required": [
"triggerType"
],
"properties": {
"parameters": {
"type": "string",
"description": "JSON-encoded parameters string, e.g. \"{\\\"fromStatus\\\":\\\"in_progress\\\"}\""
},
"triggerType": {
"type": "string",
"description": "Event type, e.g. \"status_changed\", \"task_created\", \"due_date_changed\""
}
},
"description": "A trigger that activates the automation. Multiple triggers are OR-ed."
},
"description": "REPLACES existing triggers"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Automation identifier (auto_…)"
},
"description": {
"type": "string"
},
"conditionNodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"children": {
"type": "array",
"description": "Child nodes (group only)"
},
"nodeType": {
"enum": [
"condition",
"operator"
],
"type": "string"
},
"leftOperand": {
"type": "string",
"description": "Field being inspected (leaf only)"
},
"operatorType": {
"type": "string",
"description": "AND/OR for group nodes; predicate operator for leaves"
},
"rightOperand": {
"type": "string",
"description": "Comparison value (leaf only)"
},
"conditionType": {
"type": "string",
"description": "Predicate category (leaf only)"
}
},
"description": "A node in the condition tree. Leaf node uses nodeType=\"condition\" with conditionType/operatorType/leftOperand/rightOperand. Group node uses nodeType=\"operator\" with operatorType=AND|OR and `children`."
},
"description": "REPLACES existing condition tree (omit to leave it untouched)"
}
},
"additionalProperties": false
}
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"name": {
"type": "string"
},
"color": {
"type": "string"
},
"emoji": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Custom field identifier (cf_…)"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"icon": {
"type": "string"
},
"name": {
"type": "string"
},
"color": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Folder identifier (fld_…)"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"icon": {
"type": "string"
},
"name": {
"type": "string"
},
"color": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
},
"description": {
"type": "string"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"module",
"channel",
"enabled"
],
"properties": {
"module": {
"type": "string",
"description": "Module identifier from the aggregated settings — e.g. 'comments', 'mentions', 'assignments', 'due_date', 'automation', 'invitation'"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"channel": {
"enum": [
"app",
"browser",
"email"
],
"type": "string",
"description": "Delivery channel"
},
"enabled": {
"type": "boolean",
"description": "Turn the channel on (true) or off (false)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"sprintIdentifier"
],
"properties": {
"goal": {
"type": "string",
"description": "Max 5000 chars"
},
"name": {
"type": "string",
"description": "Max 200 chars"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"endDate": {
"type": "string",
"description": "ISO-8601 instant"
},
"startDate": {
"type": "string",
"description": "ISO-8601 instant"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"sprintIdentifier": {
"type": "string"
}
},
"additionalProperties": false
}
dueDate
string | null
priority
string | null
taskType
string | null
Task type name (e.g. "Bug"); pass null to clear and make the task untyped
assignees
array
isPrivate
boolean
startDate
string | null
timeSpent
integer | null
Minutes
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string | null
customFields
object
estimatedTime
integer | null
Input schema (JSON)
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"description": "Task key or identifier"
},
"list": {
"type": [
"string",
"null"
],
"description": "Move to another list"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"level": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"nextTo": {
"type": [
"string",
"null"
]
},
"parent": {
"type": [
"string",
"null"
],
"description": "Re-parent (or null to detach)"
},
"status": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"dueDate": {
"type": [
"string",
"null"
]
},
"priority": {
"type": [
"string",
"null"
]
},
"taskType": {
"type": [
"string",
"null"
],
"description": "Task type name (e.g. \"Bug\"); pass null to clear and make the task untyped"
},
"assignees": {
"type": "array",
"items": {
"type": "string"
}
},
"isPrivate": {
"type": "boolean"
},
"startDate": {
"type": [
"string",
"null"
]
},
"timeSpent": {
"type": [
"integer",
"null"
],
"description": "Minutes"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": [
"string",
"null"
]
},
"customFields": {
"type": "object",
"additionalProperties": true
},
"estimatedTime": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": false
}
string
Team identifier (team_…)
description
string
Optional description (max 10000 chars)
memberUuids
array
COMPLETE replacement list of member UUIDs. Omit to leave membership unchanged.
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"icon": {
"type": "string",
"description": "Icon identifier or emoji"
},
"name": {
"type": "string",
"description": "Display name (max 100 chars)"
},
"alias": {
"type": "string",
"description": "Short alias / @handle (max 100 chars)"
},
"color": {
"type": "string",
"description": "Hex color, e.g. \"#E91E63\""
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string",
"description": "Team identifier (team_…)"
},
"description": {
"type": "string",
"description": "Optional description (max 10000 chars)"
},
"memberUuids": {
"type": "array",
"items": {
"type": "string"
},
"description": "COMPLETE replacement list of member UUIDs. Omit to leave membership unchanged."
}
},
"additionalProperties": false
}
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
identifier*
string
sortDirection
string
Input schema (JSON)
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"name": {
"type": "string"
},
"sortBy": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"columns": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Column order items"
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Filter groups (FilterGroupDTO shape)"
},
"groupBy": {
"type": "string"
},
"isPrivate": {
"type": "boolean"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"identifier": {
"type": "string"
},
"sortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string"
}
},
"additionalProperties": false
}
scopeType
string
New scope; requires scopeEntityIdentifier when set
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
clearScope
boolean
true removes the scope (workspace-wide delivery); not with scopeType
eventTypes
array
Replacement event-type list (see pm_list_webhook_event_types)
webhookIdentifier*
string
Webhook identifier
includeSecurityBugs
boolean
Feature requests: also deliver security bugs. Omit to keep the current value; an API key can only turn it off
scopeEntityIdentifier
string
The scoped entity: its identifier, a wiki space key, a board slug or id, or a request/bug short key (required when scopeType is set; requires scopeType)
Input schema (JSON)
{
"type": "object",
"required": [
"webhookIdentifier"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"active": {
"type": "boolean",
"description": "Toggle delivery on/off without deleting"
},
"secret": {
"type": "string",
"description": "New HMAC signing secret (rotation); must not be blank; sent unchanged, never returned"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"scopeType": {
"enum": [
"SPACE",
"FOLDER",
"TASK_LIST",
"TASK",
"WIKI_SPACE",
"WIKI_PAGE",
"FEEDBACK_BOARD",
"FEEDBACK_REQUEST",
"FEEDBACK_BUG"
],
"type": "string",
"description": "New scope; requires scopeEntityIdentifier when set"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"clearScope": {
"type": "boolean",
"description": "true removes the scope (workspace-wide delivery); not with scopeType"
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replacement event-type list (see pm_list_webhook_event_types)"
},
"webhookIdentifier": {
"type": "string",
"description": "Webhook identifier"
},
"includeSecurityBugs": {
"type": "boolean",
"description": "Feature requests: also deliver security bugs. Omit to keep the current value; an API key can only turn it off"
},
"scopeEntityIdentifier": {
"type": "string",
"description": "The scoped entity: its identifier, a wiki space key, a board slug or id, or a request/bug short key (required when scopeType is set; requires scopeType)"
}
},
"additionalProperties": false
}
markdown
string
Page body as Markdown. Mutually exclusive with `content`.
spaceKey*
string
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"title"
],
"properties": {
"icon": {
"type": "string",
"description": "Optional icon/emoji (e.g. \"rocket\")"
},
"title": {
"type": "string"
},
"parent": {
"type": "string",
"description": "Optional parent page slug"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"content": {
"type": "object",
"description": "Page body as TipTap/ProseMirror JSON. Use for rich content that markdown doesn't support (banners, collapsibles, mermaid, action buttons, inline labels, mentions). Mutually exclusive with `markdown`. Call get_endpoint_examples(tag=\"Wiki Pages (Lite)\") for the full doc shape.",
"additionalProperties": true
},
"markdown": {
"type": "string",
"description": "Page body as Markdown. Mutually exclusive with `content`."
},
"spaceKey": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
string
Icon color hex code (only for non-emoji icons)
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
description
string
Optional description, max 2000 chars
isEditPublic
boolean
Editable by all workspace members (default false)
Input schema (JSON)
{
"type": "object",
"required": [
"key",
"name"
],
"properties": {
"key": {
"type": "string",
"description": "Uppercase alphanumeric key, 2-20 chars, must start with a letter"
},
"icon": {
"type": "string",
"description": "Emoji name (e.g. \"rocket\") or \"icon:<PhosphorName>\" (e.g. \"icon:BookOpen\"). Valid names: GET /v1/custom-field-icon-options (emojiNames bare; iconNames with the \"icon:\" prefix)."
},
"name": {
"type": "string",
"description": "Display name, max 200 chars"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPublic": {
"type": "boolean",
"description": "INTERNAL visibility — all workspace members can view (default true). NOT public-web publishing; use wiki_set_public_settings to publish."
},
"iconColor": {
"type": "string",
"description": "Icon color hex code (only for non-emoji icons)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "Optional description, max 2000 chars"
},
"isEditPublic": {
"type": "boolean",
"description": "Editable by all workspace members (default false)"
}
},
"additionalProperties": false
}
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Slug of the page to delete"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string"
},
"permanent": {
"type": "boolean",
"description": "If true, permanently deletes instead of archiving. Requires admin access."
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
boolean
Show the author on the public page
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Page slug"
},
"token": {
"type": "string",
"description": "Optional custom URL token (3-100 chars, lowercase a-z, 0-9, hyphens). Omit to auto-generate."
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"showAuthor": {
"type": "boolean",
"description": "Show the author on the public page"
}
},
"additionalProperties": false
}
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
targetSpaceKey
string
Optional target space key for cross-space moves
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Slug of the page to move"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Source space key"
},
"afterPage": {
"type": [
"string",
"null"
],
"description": "Optional sibling page slug to insert after (omit or null to place first)"
},
"newParent": {
"type": [
"string",
"null"
],
"description": "Optional new parent page slug (omit or null to move to space root)"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"targetSpaceKey": {
"type": "string",
"description": "Optional target space key for cross-space moves"
}
},
"additionalProperties": false
}
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
contentType*
string
MIME type, e.g. "image/png" — must match the PUT Content-Type exactly
Input schema (JSON)
{
"type": "object",
"required": [
"pageId",
"filename",
"contentType",
"sizeBytes"
],
"properties": {
"pageId": {
"type": "string",
"description": "Page UUID (tree node `id` from wiki_get_space_with_pages)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"filename": {
"type": "string",
"description": "Original filename, e.g. \"diagram.png\""
},
"sizeBytes": {
"type": "integer",
"description": "Exact file size in bytes — must match the PUT Content-Length exactly"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"contentType": {
"type": "string",
"description": "MIME type, e.g. \"image/png\" — must match the PUT Content-Type exactly"
}
},
"additionalProperties": false
}
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max chunks to return (default 5)"
},
"query": {
"type": "string",
"description": "Natural-language question or topic to retrieve passages for"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Optional: restrict retrieval to one space"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Search query string"
},
"mode": {
"enum": [
"keyword",
"semantic",
"hybrid"
],
"type": "string",
"description": "Ranking mode (default hybrid): keyword = legacy full-text only, semantic = embeddings only, hybrid = both combined."
},
"limit": {
"type": "integer",
"description": "Max results (default 20)"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Optional: restrict search to one space"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
Publish (true) / unpublish (false) the space to the public web
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
customSlug
string
Public URL slug (validate with wiki_check_public_slug first)
showAuthor
boolean
heroSubtitle
string
Help-center hero subtitle (max 250 chars)
allowedEmojis
array
Reaction emojis readers may use; omit = leave unchanged
showPageViews
boolean
showReactions
boolean
showLastUpdated
boolean
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"viewMode": {
"type": "string",
"description": "\"space\" (default) or \"helpcenter\""
},
"heroTitle": {
"type": "string",
"description": "Help-center hero title (max 150 chars)"
},
"isEnabled": {
"type": "boolean",
"description": "Publish (true) / unpublish (false) the space to the public web"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"customSlug": {
"type": "string",
"description": "Public URL slug (validate with wiki_check_public_slug first)"
},
"showAuthor": {
"type": "boolean"
},
"heroSubtitle": {
"type": "string",
"description": "Help-center hero subtitle (max 250 chars)"
},
"allowedEmojis": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reaction emojis readers may use; omit = leave unchanged"
},
"showPageViews": {
"type": "boolean"
},
"showReactions": {
"type": "boolean"
},
"showLastUpdated": {
"type": "boolean"
}
},
"additionalProperties": false
}
workspace
string
Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access.
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey",
"slug"
],
"properties": {
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"content": {
"type": "object",
"description": "Replacement body as TipTap/ProseMirror JSON. Mutually exclusive with `markdown`. Call get_endpoint_examples(tag=\"Wiki Pages (Lite)\") for the full doc shape.",
"additionalProperties": true
},
"markdown": {
"type": "string",
"description": "Replacement body as Markdown. Mutually exclusive with `content`."
},
"spaceKey": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
}
},
"additionalProperties": false
}
description
string
New description
isEditPublic
boolean
Input schema (JSON)
{
"type": "object",
"required": [
"spaceKey"
],
"properties": {
"icon": {
"type": "string",
"description": "Emoji name or \"icon:<PhosphorName>\". Valid names: GET /v1/custom-field-icon-options."
},
"name": {
"type": "string",
"description": "New display name"
},
"account": {
"type": "string",
"description": "Multi-account auth only: name of the account from X-Dutify-Accounts to use for this call. Ignored in single-account mode (X-API-Key header). When multiple accounts are configured and this is omitted, the call fails with ACCOUNT_REQUIRED listing the available names. list_accounts never requires a selection."
},
"isPublic": {
"type": "boolean",
"description": "INTERNAL visibility (workspace members). NOT public-web publishing — use wiki_set_public_settings."
},
"spaceKey": {
"type": "string",
"description": "Uppercase space key"
},
"iconColor": {
"type": "string"
},
"workspace": {
"type": "string",
"pattern": "\\S",
"minLength": 1,
"description": "Workspace identifier or exact name for this call. Overrides the configured workspace. For personal keys, discover candidates with list_workspaces and select explicitly. Does not change other calls or expand a workspace key's access."
},
"description": {
"type": "string",
"description": "New description"
},
"isEditPublic": {
"type": "boolean"
}
},
"additionalProperties": false
}