Skip to content
JoKeks2023 edited this page Sep 28, 2026 · 1 revision

Tools

Complete reference of all 48 tools, generated from the registered tool schemas in src/server.ts / src/schemas.ts.

Workspace requirement

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.

Overview

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

Examples

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).

Reference

Workspaces

list_workspaces

🌐 List all Huly workspaces this account can access (name, slug, id)

No arguments.

Projects

list_projects

📖 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_project

📖 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_project

✏️ 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

Issues

list_issues

📖 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_issue

📖 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_issue

✏️ 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_issue

✏️ 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

delete_issue

✏️ 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"

Comments

add_comment

✏️ 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_comments

📖 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_comment

✏️ 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

Time tracking

log_time

✏️ 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)

Labels

list_labels

📖 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_label

✏️ 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_label

✏️ 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_label

✏️ 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

Relations

add_relation

✏️ 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"

add_blocked_by

✏️ 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_parent

✏️ 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

Members

list_members

📖 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.

Milestones

list_milestones

📖 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_milestone

✏️ 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

Components

list_components

📖 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_component

✏️ 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)

Documents

list_teamspaces

📖 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_teamspace

✏️ 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

📖 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_document

📖 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_document

✏️ 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

delete_document

✏️ 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)

update_document

✏️ 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_document

✏️ 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

Search

search_issues

📖 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

Chat

list_channels

📖 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_channel

✏️ 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_direct_message

✏️ 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_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

📖 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

Attachments

attach_file

✏️ 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_attachments

📖 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_attachment

✏️ 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

Issue statuses

list_issue_statuses

📖 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_issue_status

✏️ 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)

Organizations

list_organizations

📖 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_organization

📖 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_organization

✏️ 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)

update_organization

✏️ 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)

Notes on specific tools

  • get_document, get_issue, get_organization: show content/descriptions only with HULY_FRONT_URL set. The content is fetched by the server with the workspace token in an Authorization: Bearer header. The printed "Content URL" of get_document contains no credentials (see Security).
  • update_document, update_organization, create_issue/update_issue with description: write Markdown as a Huly markup blob. Supported: headings, paragraphs, bold/inline code, bullet lists, pipe tables, code blocks, and mermaid blocks (rendered natively). update_document replaces 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: matches member against 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.

Clone this wiki locally