Repository navigation
Tools
Complete reference of all 48 tools, generated from the registered tool schemas in src/server.ts / src/schemas.ts.
| Kind | Tools | workspace |
|---|---|---|
| 🌐 Account | 1 (list_workspaces) |
none (lists all workspaces) |
| 📖 Read | 19 | optional — may be omitted only if exactly one workspace is available |
| ✏️ Write | 28 | required — never falls back to an implicit workspace |
workspace accepts the slug, the ID or a unique display name, case-insensitively (see Multi-Workspace). IDs returned by a tool (issue identifiers, document/comment/attachment/channel IDs, …) are only valid in the workspace they came from.
All errors are returned as MCP tool errors prefixed with Huly MCP:. Missing required arguments are rejected by schema validation before the tool runs.
| Category | Tool | Kind | Description |
|---|---|---|---|
| Workspaces | list_workspaces |
🌐 | List all Huly workspaces this account can access (name, slug, id) |
| Projects | list_projects |
📖 | List all projects in a Huly workspace |
get_project |
📖 | Get a project by its identifier (e.g. "PROJ") | |
create_project |
✏️ | Create a new tracker project with a unique ALL-CAPS identifier | |
| Issues | list_issues |
📖 | List issues in a project with optional filters |
get_issue |
📖 | Get full details of an issue by identifier (e.g. "PROJ-123") | |
create_issue |
✏️ | Create a new issue in a project | |
update_issue |
✏️ | Update an existing issue (title, status, priority, due date, assignee, component, milestone) | |
delete_issue |
✏️ | Permanently delete an issue by identifier (e.g. "PROJ-123") | |
| Comments | add_comment |
✏️ | Add a comment to an issue |
list_comments |
📖 | List all comments on an issue (includes comment IDs for use with delete_comment) | |
delete_comment |
✏️ | Delete a specific comment from an issue by its ID (get IDs from list_comments) | |
| Time tracking | log_time |
✏️ | Log hours spent on an issue |
| Labels | list_labels |
📖 | List all labels in the workspace |
create_label |
✏️ | Create a new label with an optional hex color | |
add_label |
✏️ | Add a label to an issue (auto-creates the label if it does not exist) | |
remove_label |
✏️ | Remove a label from an issue | |
| Relations | add_relation |
✏️ | Mark two issues as related to each other (bidirectional) |
add_blocked_by |
✏️ | Mark an issue as blocked by another issue | |
set_parent |
✏️ | Set or clear the parent (epic) of an issue | |
| Members | list_members |
📖 | List all members in the workspace |
| Milestones | list_milestones |
📖 | List milestones for a project |
create_milestone |
✏️ | Create a new milestone in a project with a target date | |
| Components | list_components |
📖 | List components (sub-areas) in a project |
create_component |
✏️ | Create a new component in a project | |
| Documents | list_teamspaces |
📖 | List all document teamspaces in the workspace |
create_teamspace |
✏️ | Create a new document teamspace (a top-level folder for documents) | |
list_documents |
📖 | List documents in a teamspace | |
get_document |
📖 | Get metadata and content of a document (content requires HULY_FRONT_URL env) | |
create_document |
✏️ | Create a new document in a teamspace | |
delete_document |
✏️ | Permanently delete a document by its ID | |
update_document |
✏️ | Set or replace the content of a document from Markdown (supports headings, paragraphs, code blocks, tables, bullet lists) | |
link_document |
✏️ | Link a Huly document to an issue — appears in the Relations panel on the issue | |
| Search | search_issues |
📖 | Full-text search across all issues |
| Chat | list_channels |
📖 | List all channels in the workspace |
create_channel |
✏️ | Create a new channel | |
start_direct_message |
✏️ | Start (or find) a 1:1 direct message with a workspace member | |
send_message |
✏️ | Send a message to a channel or direct message | |
list_messages |
📖 | List messages in a channel or direct message | |
| Attachments | attach_file |
✏️ | Attach a file to an issue (base64-encoded content) |
list_attachments |
📖 | List files attached to an issue | |
delete_attachment |
✏️ | Delete a file attachment from an issue | |
| Issue statuses | list_issue_statuses |
📖 | List all issue statuses (workflow states), grouped by phase |
create_issue_status |
✏️ | Create a new issue status — becomes available in every project immediately | |
| Organizations | list_organizations |
📖 | List all organizations (companies) in the workspace |
get_organization |
📖 | Get details of an organization, including description | |
create_organization |
✏️ | Create a new organization (company contact) | |
update_organization |
✏️ | Set the description of an organization from Markdown |
list_workspaces()
list_projects(workspace="acmeteam")
list_issues(workspace="acmeteam", projectIdentifier="WEB", status="In Progress", limit=20)
get_issue(workspace="personal", identifier="TSK-1")
create_issue(workspace="acmeteam", projectIdentifier="WEB", title="Fix login timeout", priority="High",
description="## Steps\n- open /login\n- wait 30 s")
update_issue(workspace="acmeteam", identifier="WEB-42", statusName="Done", assignee="Sarah")
log_time(workspace="personal", identifier="TSK-1", hours=2.5, description="refactoring")
set_parent(workspace="acmeteam", identifier="WEB-43", parentIdentifier="WEB-40")
update_document(workspace="acmeteam", documentId="<id from list_documents>", markdown="# Title\n\nText")
send_message(workspace="acmeteam", spaceId="<id from list_channels>", message="Deployed ✅")
A typical agent flow: list_workspaces → pick the slug → list_projects(workspace=…) → read (get_issue) → write with the same workspace (update_issue).
🌐 List all Huly workspaces this account can access (name, slug, id)
No arguments.
📖 List all projects in a Huly workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. |
📖 Get a project by its identifier (e.g. "PROJ")
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
identifier |
string | yes | Project identifier, e.g. "PROJ" |
✏️ Create a new tracker project with a unique ALL-CAPS identifier
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
name |
string | yes | Project name, e.g. "My Project" | |
identifier |
string | yes | Short ALL-CAPS identifier, e.g. "MYPROJ" | |
description |
string | no | Project description |
📖 List issues in a project with optional filters
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" | |
status |
string | no | Filter by status name, e.g. "In Progress" | |
priority |
NoPriority | Urgent | High | Medium | Low | no | Filter by priority | |
limit |
number | no | 50 |
Max issues to return |
📖 Get full details of an issue by identifier (e.g. "PROJ-123")
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" |
✏️ Create a new issue in a project
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" | |
title |
string | yes | Issue title | |
description |
string | no | Issue description as Markdown (headings, bold, code, lists, tables, mermaid supported) | |
priority |
NoPriority | Urgent | High | Medium | Low | no | "NoPriority" |
Issue priority |
statusName |
string | no | Status name (defaults to project default) | |
dueDate |
string | no | Due date as ISO 8601 string, e.g. "2026-04-01" |
✏️ Update an existing issue (title, status, priority, due date, assignee, component, milestone)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
title |
string | no | New title | |
description |
string | no | New description as Markdown (replaces existing content) | |
statusName |
string | no | New status name | |
priority |
NoPriority | Urgent | High | Medium | Low | no | New priority | |
dueDate |
string | no | New due date (ISO 8601) or null to clear | |
assignee |
string | no | Assignee name (first/last/full) or null to unassign | |
componentLabel |
string | no | Component name to assign, or null to unassign | |
milestoneLabel |
string | no | Milestone name to assign, or null to clear |
✏️ Permanently delete an issue by identifier (e.g. "PROJ-123")
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier to delete, e.g. "PROJ-123" |
✏️ Add a comment to an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
message |
string | yes | Comment text |
📖 List all comments on an issue (includes comment IDs for use with delete_comment)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
limit |
number | no | 20 |
Max comments to return |
✏️ Delete a specific comment from an issue by its ID (get IDs from list_comments)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
commentId |
string | yes | Comment _id from list_comments |
✏️ Log hours spent on an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
hours |
number | yes | Hours spent (e.g. 2.5) | |
description |
string | no | What was done (optional note) |
📖 List all labels in the workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
projectIdentifier |
string | no | Optional project filter (currently returns all workspace labels) |
✏️ Create a new label with an optional hex color
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
title |
string | yes | Label name | |
color |
string | no | Hex color, e.g. "#FF6B6B" (optional) |
✏️ Add a label to an issue (auto-creates the label if it does not exist)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
labelName |
string | yes | Label name to add (auto-created if it does not exist) |
✏️ Remove a label from an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
labelName |
string | yes | Label name to remove |
✏️ Mark two issues as related to each other (bidirectional)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
relatedTo |
string | yes | Related issue identifier, e.g. "PROJ-456" |
✏️ Mark an issue as blocked by another issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue that is blocked, e.g. "PROJ-123" | |
blockedBy |
string | yes | Issue that blocks it, e.g. "PROJ-100" |
✏️ Set or clear the parent (epic) of an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Child issue identifier, e.g. "PROJ-123" | |
parentIdentifier |
string | no | Parent issue identifier, or null to clear parent |
📖 List all members in the workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. |
📖 List milestones for a project
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" |
✏️ Create a new milestone in a project with a target date
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" | |
label |
string | yes | Milestone name | |
targetDate |
string | yes | Target date as ISO 8601 string, e.g. "2026-06-01" | |
status |
Planned | InProgress | Completed | Canceled | no | "Planned" |
Milestone status |
📖 List components (sub-areas) in a project
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" |
✏️ Create a new component in a project
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
projectIdentifier |
string | yes | Project identifier, e.g. "PROJ" | |
label |
string | yes | Component name | |
description |
string | no | Component description | |
lead |
string | no | Lead member name (first/last/full) |
📖 List all document teamspaces in the workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. |
✏️ Create a new document teamspace (a top-level folder for documents)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
name |
string | yes | Teamspace name | |
description |
string | no | Optional description | |
isPrivate |
boolean | no | false |
Whether the teamspace is private (default: false = visible to all members) |
📖 List documents in a teamspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
teamspaceId |
string | yes | Teamspace _id from list_teamspaces |
📖 Get metadata and content of a document (content requires HULY_FRONT_URL env)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
documentId |
string | yes | Document _id from list_documents |
✏️ Create a new document in a teamspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
teamspaceId |
string | yes | Teamspace _id from list_teamspaces | |
title |
string | yes | Document title | |
parentId |
string | no | Parent document _id (for nested docs); omit for top-level |
✏️ Permanently delete a document by its ID
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
documentId |
string | yes | Document _id to delete (from list_documents) |
✏️ Set or replace the content of a document from Markdown (supports headings, paragraphs, code blocks, tables, bullet lists)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
documentId |
string | yes | Document _id from list_documents or create_document | |
markdown |
string | yes | Markdown content to set as the document body |
✏️ Link a Huly document to an issue — appears in the Relations panel on the issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
documentId |
string | yes | Document _id from list_documents or create_document |
📖 Full-text search across all issues
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
query |
string | yes | Search query | |
limit |
number | no | 20 |
Max results |
📖 List all channels in the workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
includeArchived |
boolean | no | false |
Include archived channels |
✏️ Create a new channel
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
name |
string | yes | Channel name | |
topic |
string | no | Optional channel topic/description | |
isPrivate |
boolean | no | false |
Whether the channel is private (invite-only) |
✏️ Start (or find) a 1:1 direct message with a workspace member
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
member |
string | yes | Name (first/last/full) of the workspace member to message |
✏️ Send a message to a channel or direct message
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
spaceId |
string | yes | Channel or direct-message _id, from list_channels/create_channel/start_direct_message | |
message |
string | yes | Message text |
📖 List messages in a channel or direct message
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
spaceId |
string | yes | Channel or direct-message _id | |
limit |
number | no | 50 |
Max messages to return |
✏️ Attach a file to an issue (base64-encoded content)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier to attach the file to, e.g. "PROJ-123" | |
filename |
string | yes | File name, e.g. "screenshot.png" | |
contentBase64 |
string | yes | File content, base64-encoded | |
mimeType |
string | no | "application/octet-stream" |
MIME type, e.g. "image/png" |
📖 List files attached to an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" |
✏️ Delete a file attachment from an issue
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
identifier |
string | yes | Issue identifier, e.g. "PROJ-123" | |
attachmentId |
string | yes | Attachment _id from list_attachments |
📖 List all issue statuses (workflow states), grouped by phase
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. |
✏️ Create a new issue status — becomes available in every project immediately
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
name |
string | yes | Status name, e.g. "Waiting for review" | |
category |
Backlog | Todo | InProgress | Done | Cancelled | yes | Which phase this status belongs to (determines grouping/color in the UI) | |
color |
string | no | Hex color, e.g. "#FF6B6B" (optional) |
📖 List all organizations (companies) in the workspace
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. |
📖 Get details of an organization, including description
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | no | Workspace (slug, name or ID from list_workspaces). May be omitted only if exactly one workspace is available. | |
organizationId |
string | yes | Organization _id from list_organizations |
✏️ Create a new organization (company contact)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
name |
string | yes | Organization name | |
city |
string | no | City (optional) |
✏️ Set the description of an organization from Markdown
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
workspace |
string | yes | Target workspace (slug, name or ID from list_workspaces). Required for every change. | |
organizationId |
string | yes | Organization _id from list_organizations | |
description |
string | yes | New description as Markdown (replaces existing content) |
-
get_document,get_issue,get_organization: show content/descriptions only withHULY_FRONT_URLset. The content is fetched by the server with the workspace token in anAuthorization: Bearerheader. The printed "Content URL" ofget_documentcontains no credentials (see Security). -
update_document,update_organization,create_issue/update_issuewithdescription: write Markdown as a Huly markup blob. Supported: headings, paragraphs, bold/inline code, bullet lists, pipe tables, code blocks, andmermaidblocks (rendered natively).update_documentreplaces the whole body. -
attach_file: takes base64 content, not a path or URL. -
list_issue_statuses/create_issue_status: statuses are global per workspace, not per project. -
start_direct_message: matchesmemberagainst person names (substring, case-insensitive). -
list_members: uses the workspace-level account client (getWorkspaceMembers()with the workspace token), and lists account IDs and roles. -
search_issues: full-text search within one workspace.