@firfi/huly-mcp 0.50.0 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -23
- package/dist/index.cjs +37684 -21547
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -340,7 +340,7 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
340
340
|
| `get_tool_schema` | Returns the exact input and output schema for one proxy-visible Huly tool. Use this before invoke_tool when you are not certain about required argument names or result shape. |
|
|
341
341
|
| `invoke_tool` | Invokes one proxy-visible Huly tool by exact name with its arguments. This tool can call read or write Huly operations; check get_tool_schema and the target tool annotations when safety matters. |
|
|
342
342
|
|
|
343
|
-
**`TOOLSETS` categories:** `projects`, `issues`, `comments`, `milestones`, `documents`, `storage`, `attachments`, `contacts`, `channels`, `calendar`, `time tracking`, `search`, `associations`, `activity`, `notifications`, `workspace`, `approvals`, `boards`, `cards`, `collaborators`, `custom-fields`, `drive`, `inventory`, `labels`, `leads`, `mail`, `templates`, `model-administration`, `planner`, `preferences`, `processes`, `recruiting`, `sdk-discovery`, `security-administration`, `sequence-administration`, `spaces`, `support`, `tag-categories`, `tags`, `task-management`, `test-management`, `user-statuses`, `views`, `virtual-office`, `workbench`, `workflow-statuses`
|
|
343
|
+
**`TOOLSETS` categories:** `projects`, `issues`, `comments`, `milestones`, `documents`, `storage`, `attachments`, `contacts`, `channels`, `calendar`, `time tracking`, `search`, `associations`, `activity`, `notifications`, `workspace`, `approvals`, `boards`, `cards`, `collaborators`, `custom-fields`, `drive`, `hr`, `inventory`, `labels`, `leads`, `mail`, `templates`, `model-administration`, `planner`, `preferences`, `processes`, `recruiting`, `sdk-discovery`, `security-administration`, `sequence-administration`, `spaces`, `support`, `tag-categories`, `tags`, `task-management`, `test-management`, `user-statuses`, `views`, `virtual-office`, `workbench`, `workflow-statuses`
|
|
344
344
|
|
|
345
345
|
### Projects
|
|
346
346
|
|
|
@@ -466,12 +466,16 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
466
466
|
|
|
467
467
|
| Tool | Description |
|
|
468
468
|
|------|-------------|
|
|
469
|
+
| `list_employees` | List employees (persons who are team members), sorted by modification date (newest first). Each summary exposes stable Contact Employee fields city, email, role, statuses count, personUuid, position, active, and modifiedOn. SDK avatarType/avatar/avatarProps are provider/blob metadata; attachment/comment/channel counters and social identity collections are derived; birthday/profile need separate contracts; createdOn/createdBy/modifiedBy and class/space refs are internal metadata and intentionally unsupported in this projection. |
|
|
470
|
+
| `set_employee_position` | Idempotently set an employee's official position on contact.mixin.Employee. employee must be an object with exactly one locator field: {id}, {email}, or {name}; combined locator modalities are rejected. The selected ID, email, or display name is exact, and duplicate email/name matches are rejected. The position field is required: pass a string to set it, or null/an empty string to clear it. Omitting position fails schema parsing and performs no mutation. This updates the Contact Employee mixin, not an HR Staff record. |
|
|
471
|
+
| `invite_employee` | Create or promote and invite an employee, or resend an inactive employee invitation. mode=create-or-promote requires the exact Huly display name and email; one checked atomic transaction creates or updates the Person, email SocialIdentity, and active Employee before sending. A changed authoritative precondition sends no invite and directs the caller to retry in a fresh session. mode=invite-existing requires an exact email/name locator and rejects active or non-Employee targets. Omitted role preserves the Employee role; an explicit different role is persisted atomically before resend. Returns no invitation link, credential, or token; an invitation-provider failure reports completed preparation. |
|
|
472
|
+
| `list_inactive_employees` | List every inactive Employee before applying output pagination. Each result distinguishes the account link, workspace membership and role, Person identity, and Employee active state so an agent can choose reinvite, deactivate, or kick safely. |
|
|
473
|
+
| `deactivate_employee` | Preview or execute an employee lifecycle change resolved by exact email or exact display name. action=deactivate only sets Employee.active=false and retains workspace membership; action=kick then removes the linked account from the workspace. If workspace removal fails after deactivation, the typed partial failure lists completed changes and directs a safe preview-and-retry. Preview is the default. Execution requires execute=true plus one exact expected relationship object copied from the preview: unlinked, linked-without-membership, or workspace-member. Any changed Person ID, account UUID, Employee active flag, membership, or workspace role is rejected. The authenticated employee cannot target itself. |
|
|
469
474
|
| `list_persons` | List all persons in the Huly workspace. Returns persons sorted by modification date (newest first). Supports searching by name substring (nameSearch) and email substring (emailSearch). |
|
|
470
475
|
| `get_person` | Retrieve full details for a person including contact channels. Use personId or email to identify the person. |
|
|
471
476
|
| `create_person` | Create a new person in Huly. Returns the created person ID. |
|
|
472
477
|
| `update_person` | Update fields on an existing person. Only provided fields are modified. |
|
|
473
478
|
| `delete_person` | Permanently delete a person from Huly. This action cannot be undone. |
|
|
474
|
-
| `list_employees` | List employees (persons who are team members). Returns employees sorted by modification date (newest first). |
|
|
475
479
|
| `list_contact_channel_providers` | List supported contact channel provider labels for person and organization channel tools. |
|
|
476
480
|
| `list_person_channels` | List contact channels for a person. Person accepts person ID, exact email address, or exact Huly display name; ambiguous names fail and should be retried with email or person ID. |
|
|
477
481
|
| `add_person_channel` | Idempotently add a contact channel to a person. Person accepts person ID, exact email address, or exact Huly display name. Provider labels match list_contact_channel_providers. Returns added=false and the existing channel when the exact provider+value already exists. |
|
|
@@ -483,6 +487,7 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
483
487
|
| `update_organization` | Update fields on an existing organization identified by ID or exact name when that name is unique. Only provided fields are modified. Description supports markdown for CRM notes / revenue summaries / context. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. Pass null to clear city or description. If multiple organizations share the same name, use the organization ID. |
|
|
484
488
|
| `delete_organization` | Permanently delete an organization identified by ID or exact name when that name is unique. Use with care - this cannot be undone. Useful for cleaning up duplicate organizations after merging their data elsewhere. If multiple organizations share the same name, use the organization ID. |
|
|
485
489
|
| `make_organization_customer` | Apply the Customer mixin to an organization so it appears in the Huly Leads > Customers view. Idempotent - safe to call on organizations that are already customers. Takes the organization ID or exact name when that name is unique. |
|
|
490
|
+
| `make_person_customer` | Apply the native Customer mixin to one existing person so it appears in Huly Leads > Customers. Resolve by person ID, exact email address, or exact display name; ambiguous identifiers fail, no person is created, and repeated calls are idempotent. |
|
|
486
491
|
| `add_organization_channel` | Idempotently add a contact channel to an organization identified by ID or exact unique name. Provider labels: email, phone, linkedin, twitter, github, facebook, telegram, homepage, whatsapp, skype, profile, viber. Returns added=false and the existing channel when the exact provider+value already exists. |
|
|
487
492
|
| `list_organization_channels` | List contact channels for an organization identified by ID or exact unique organization name. Returns channelId, provider label, value, and optional activity metadata. |
|
|
488
493
|
| `update_organization_channel` | Update one contact channel on an organization identified by ID or exact unique name. Identify the channel with exactly one locator: channelId, or provider plus value. Provide newProvider, newValue, or both. Updating to an existing provider+value on the same organization fails with a conflict. |
|
|
@@ -491,6 +496,19 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
491
496
|
| `list_organization_members` | List all persons who are members of an organization. Returns each member's person ID, name, and primary email (if any). When using a name instead of an ID, that name must identify exactly one organization. |
|
|
492
497
|
| `list_person_organizations` | List all organizations that a person is a member of. Provide personId or email. Returns each organization's ID and name. |
|
|
493
498
|
| `remove_organization_member` | Unlink a person from an organization's members. Reverses add_organization_member. Returns removed: false if the person was not a member. When using an organization name instead of an ID, that name must identify exactly one organization. |
|
|
499
|
+
| `merge_people` | Preview or execute a native-reference-preserving person merge with an explicitly selected source and survivor; source and survivor must each contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. Preview is the default and reports identities, channels, memberships, comments, attachments, every other model-declared Person/Contact/Employee reference, account eligibility, retained scalar fields, and an exact preflight token bound to canonical affected document IDs, write-routing fields, and scalar/array values. Execution requires execute=true plus that current token, rejects any snapshot drift before writing, rewires scalar and array references without dropping other array members, and invokes Huly's global Person merge when applicable. The source workspace Person record is retained because Huly's native merge does not cascade-delete it. |
|
|
500
|
+
| `get_person_administration` | Inspect one person's identity and profile administration surface; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. Returns contact statuses, workspace membership, avatar metadata, birthday, social identities, account profile, channel activity, and an explicit stable-field support ledger. |
|
|
501
|
+
| `list_social_identity_providers` | List SocialIdentity providers installed in this Huly workspace, returning native provider IDs and types. |
|
|
502
|
+
| `repair_person_social_identities` | Apply only Huly's native safe, idempotent SocialIdentity repairs from the authenticated person's authoritative account record: recreate missing active projections, promote verification, reassign an unverified identity after an account merge, and propagate authoritative deletion; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. Another account-linked person, verified cross-person reassignment, arbitrary active type/value/key changes, removal of workspace-only identities, and key collisions return a Huly-specific unsupported reason instead of being overwritten. |
|
|
503
|
+
| `list_person_comments` | List notes/comments genuinely attached to one person, oldest first; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
504
|
+
| `add_person_comment` | Add a markdown note/comment to one person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. |
|
|
505
|
+
| `update_person_comment` | Idempotently update a note/comment belonging to one resolved person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. |
|
|
506
|
+
| `delete_person_comment` | Permanently delete a note/comment only when it belongs to one resolved person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
507
|
+
| `list_person_attachments` | List attachments genuinely attached to one person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
508
|
+
| `add_person_attachment` | Upload and attach a file to one person from exactly one of filePath, fileUrl, or base64 data; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
509
|
+
| `get_person_attachment` | Get an attachment only when it belongs to one resolved person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
510
|
+
| `update_person_attachment` | Update description or pinned state only when the attachment belongs to one resolved person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
511
|
+
| `delete_person_attachment` | Permanently delete an attachment only when it belongs to one resolved person; person must contain exactly one exact locator: {id}, {email}, or {name}; duplicate email/name matches fail as ambiguous. |
|
|
494
512
|
|
|
495
513
|
### Channels
|
|
496
514
|
|
|
@@ -540,16 +558,19 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
540
558
|
|
|
541
559
|
| Tool | Description |
|
|
542
560
|
|------|-------------|
|
|
543
|
-
| `list_events` | List calendar events
|
|
561
|
+
| `list_events` | List calendar events sorted by date, with meetingRoom identity when an Event has the native Meeting composition. Supports filtering by date range. |
|
|
544
562
|
| `list_calendars` | List writable, non-hidden calendars that can be used as create_event or create_recurring_event targets. Use this before creating events when you need to choose a target calendarId explicitly. |
|
|
545
|
-
| `
|
|
546
|
-
| `
|
|
547
|
-
| `
|
|
563
|
+
| `list_calendar_settings` | List the authenticated caller's Calendar settings, including caller-owned hidden and read-only calendars. Returns each calendar's stable ID, name, kind, hidden state, visibility, access, and computed primary state. Provider identifiers and defaults are omitted. Use list_calendars for writable, non-hidden event targets. |
|
|
564
|
+
| `set_primary_calendar` | Set the authenticated caller's primary personal calendar by calendarId or an unambiguous exact calendarName. The target must be caller-owned, visible, and Writer or Owner. Creates or updates the single PrimaryCalendar preference and never changes provider defaults. |
|
|
565
|
+
| `update_calendar_settings` | Update local visibility and/or hidden settings on one authenticated caller-owned calendar. Visibility accepts public, freeBusy, or private. Hidden changes are allowed only for ExternalCalendar rows and require Writer or Owner access; internal-calendar hiding and provider-owned fields are rejected. |
|
|
566
|
+
| `get_event` | Retrieve full details for a calendar event, including description and meetingRoom identity when it has the native Meeting composition. |
|
|
567
|
+
| `create_event` | Create a new calendar event. Description supports markdown formatting. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. Optional calendarId targets a specific calendar; when omitted, the event uses the authenticated user's primary personal calendar. Optional meetingRoom.room resolves an ID first, then an exact unambiguous name; meetingRoom.floor disambiguates names only. It creates the native Meeting assignment for every eventId sibling without replacing location. Returns the created event ID. |
|
|
568
|
+
| `update_event` | Update fields on an existing calendar event. Only provided fields are modified. Description updates support markdown. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. meetingRoom changes an existing native Meeting only (ordinary Events are rejected), resolves room ID first then exact name with optional floor disambiguation, and updates every eventId sibling without replacing location. Room removal is not supported. |
|
|
548
569
|
| `delete_event` | Permanently delete a calendar event. This action cannot be undone. |
|
|
549
570
|
| `list_schedules` | List calendar scheduling links/availability schedules. Optional owner accepts an employee/person ID, exact name, or email. |
|
|
550
571
|
| `get_schedule` | Retrieve one calendar schedule including owner, availability, calendar target, time zone, and room information when it is a meeting schedule. |
|
|
551
|
-
| `create_schedule` | Create a calendar schedule. Owner accepts an employee/person ID, exact name, or email; calendar can be targeted by calendarId or calendarName. |
|
|
552
|
-
| `update_schedule` | Update a calendar schedule. Supports owner, title, description, duration, interval, availability, timeZone, and calendar move by calendarId or calendarName. |
|
|
572
|
+
| `create_schedule` | Create a calendar schedule. Owner accepts an employee/person ID, exact name, or email; calendar can be targeted by calendarId or calendarName. Optional meetingRoom.room resolves an ID first, then an exact unambiguous name; meetingRoom.floor disambiguates names only and creates the native MeetingSchedule composition. Meeting-room schedules must be owned by the authenticated caller. |
|
|
573
|
+
| `update_schedule` | Update a calendar schedule. Supports owner, title, description, duration, interval, availability, timeZone, and calendar move by calendarId or calendarName. meetingRoom changes an existing caller-owned native MeetingSchedule only, using ID-first then exact-name resolution with optional floor disambiguation; room removal is not supported. |
|
|
553
574
|
| `delete_schedule` | Delete a calendar schedule by scheduleId. |
|
|
554
575
|
| `list_recurring_events` | List recurring event definitions. Returns recurring events sorted by modification date (newest first). |
|
|
555
576
|
| `create_recurring_event` | Create a new recurring calendar event with RFC5545 RRULE rules. Description supports markdown. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. Optional calendarId targets a specific calendar; when omitted, the event uses the authenticated user's primary personal calendar. Returns the created event ID. |
|
|
@@ -580,9 +601,9 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
580
601
|
| `list_associations` | List Huly association definitions: class-level typed links that define which document classes may be related. Use this before create_relation to discover association IDs, source/target classes, and whether relation writes are supported. |
|
|
581
602
|
| `create_association` | Idempotently create one Huly association definition between two non-system classes. Use sourceClass/targetClass with sourceRole/targetRole and cardinality; returns an existing identical association by default. |
|
|
582
603
|
| `delete_association` | Idempotently delete one Huly association definition only when no concrete relations reference it. If relations exist, delete_relation must clean them up first; deleting an already-missing association is a successful no-op. |
|
|
583
|
-
| `list_relations` | List concrete Huly relation instances under an association, optionally filtered by source and target documents. Endpoint locators support raw, issue, document, and
|
|
584
|
-
| `create_relation` | Idempotently create one concrete relation between two resolved documents for a writable association. Endpoint locators support raw, issue, document, and
|
|
585
|
-
| `delete_relation` | Idempotently delete one concrete relation by relation ID or by exact association/source/target triple. Triple endpoint locators support raw, issue, document, and
|
|
604
|
+
| `list_relations` | List concrete Huly relation instances under an association, optionally filtered by source and target documents. Endpoint locators support raw, issue, document, card, and exact funnel-scoped lead targets. Requires at least one filter to avoid broad workspace scans. |
|
|
605
|
+
| `create_relation` | Idempotently create one concrete relation between two resolved documents for a writable association. Endpoint locators support raw, issue, document, card, and exact funnel-scoped lead targets. Enforces association endpoint classes, direction, duplicate handling, automation-only restrictions, and cardinality. Published Relation endpoints have no mutable field; replace a relation with delete_relation then create_relation. |
|
|
606
|
+
| `delete_relation` | Idempotently delete one concrete relation by relation ID or by exact association/source/target triple. Triple endpoint locators support raw, issue, document, card, and exact funnel-scoped lead targets. Triple deletes use the same direction semantics as create_relation and fail if the selector is ambiguous. |
|
|
586
607
|
|
|
587
608
|
### Activity
|
|
588
609
|
|
|
@@ -752,6 +773,41 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
752
773
|
| `list_drive_file_versions` | List versions for a Drive file resolved by file id or file path. Marks the current version and includes blob id, size, MIME type, lastModified, and download URL. |
|
|
753
774
|
| `restore_drive_file_version` | Restore an existing Drive file version by version id or numeric version. Idempotent when the requested version is already current and does not increment the file version counter. |
|
|
754
775
|
|
|
776
|
+
### Hr
|
|
777
|
+
|
|
778
|
+
| Tool | Description |
|
|
779
|
+
|------|-------------|
|
|
780
|
+
| `list_departments` | List HR departments with exact full paths, hierarchy, managers, subscribers, team lead, direct Staff assignments, server-derived member count, and stable counters. Scope by exact parent path/ID; recursive=false returns direct children. |
|
|
781
|
+
| `get_department` | Get one HR department by exact full slash-separated path or department ID. |
|
|
782
|
+
| `create_department` | Create a top-level or nested HR department. Parent and people use exact paths/IDs/names/emails and reject ambiguity. Names cannot contain '/'. Department.members starts empty and remains server-derived. |
|
|
783
|
+
| `update_department` | Rename, move, or replace department metadata and people. Rejects duplicate sibling names, parent cycles, and moves of subtrees with server-derived members; clear Staff.department assignments before moving a populated subtree. newParent=null moves top-level; teamLead=null clears. Never writes Department.members. |
|
|
784
|
+
| `delete_department` | Preview destructive impact by default. Execution requires execute=true plus exact previewed descendant and assigned-Staff counts; Huly then cascades descendant deletion and clears affected Staff assignments. |
|
|
785
|
+
| `list_staff` | List HR Staff and authoritative department assignments. Optionally scope by exact department path/ID, include descendants, and filter Employee active state. |
|
|
786
|
+
| `assign_staff_department` | Assign an exact employee ID/email/display name by writing only authoritative Staff.department. Use department=null to clear. Department.members hierarchy propagation is performed asynchronously by Huly's server trigger. |
|
|
787
|
+
| `list_hr_request_comments` | List comments directly attached to an exact HR request ID, with total and truncation metadata. |
|
|
788
|
+
| `add_hr_request_comment` | Add a Markdown comment directly to an exact HR request ID. |
|
|
789
|
+
| `update_hr_request_comment` | Update a comment that belongs directly to an exact HR request. |
|
|
790
|
+
| `delete_hr_request_comment` | Delete a comment that belongs directly to an exact HR request. |
|
|
791
|
+
| `list_hr_request_attachments` | List files directly attached to an exact HR request ID, with total and truncation metadata. |
|
|
792
|
+
| `get_hr_request_attachment` | Get one file belonging directly to an exact HR request. |
|
|
793
|
+
| `add_hr_request_attachment` | Attach a file to an exact HR request. Provide filename, contentType, and exactly one of filePath, fileUrl, or base64 data. |
|
|
794
|
+
| `update_hr_request_attachment` | Update description and/or pinned state for a file belonging directly to an exact HR request. |
|
|
795
|
+
| `delete_hr_request_attachment` | Delete one file belonging directly to an exact HR request. |
|
|
796
|
+
| `list_hr_request_types` | Discover installed HR request types by stable ID and Huly-translated human label. Set locale to a supported Huly locale such as fr; labels from any supported locale may be used by request tools, while ambiguous labels are rejected. Request-type mutation is intentionally unsupported because Huly installs these as model-space documents and exposes no stable runtime mutation contract. |
|
|
797
|
+
| `list_hr_requests` | List HR requests with exact optional employee, department, and request-type filters. Calendar dates are inclusive YYYY-MM-DD values stored with UTC offset 0. Every match is loaded from Huly before the intentional output page is applied; results include total, truncation, and nextOffset continuation metadata. |
|
|
798
|
+
| `get_hr_request` | Get one HR request by the exact raw request ID returned by list_hr_requests. |
|
|
799
|
+
| `create_hr_request` | Create an employee-attached HR request using exact employee, department, and request-type resolution. Dates are inclusive calendar dates in YYYY-MM-DD form and descriptions accept Markdown with native Huly references. |
|
|
800
|
+
| `update_hr_request` | Update selected HR request fields by exact request ID. Department and type locators resolve exactly; omitted fields are preserved. Dates remain inclusive YYYY-MM-DD calendar dates. |
|
|
801
|
+
| `delete_hr_request` | Delete one exact HR request. Its comments and attachments are Huly-owned attached collections and follow the request deletion lifecycle. |
|
|
802
|
+
| `list_public_holidays` | List public-holiday documents with exact optional department and inclusive date filters. includeInherited adds every ancestor department explicitly; it never adds descendants. Results are loaded completely from Huly before the intentional output page is applied, and include total, truncated, and nextOffset metadata. |
|
|
803
|
+
| `get_public_holiday` | Get one public-holiday document by the exact raw ID returned by list_public_holidays. |
|
|
804
|
+
| `create_public_holiday` | Create one public holiday for an exact department ID or full path. The date is a timezone-independent Gregorian calendar day stored as Huly TzDate with UTC offset 0; duplicate department/date pairs are rejected. |
|
|
805
|
+
| `update_public_holiday` | Update selected fields of one exact public-holiday ID. Department paths resolve exactly and duplicate department/date pairs are rejected. Omitted fields are preserved without a read-after-write query. |
|
|
806
|
+
| `delete_public_holiday` | Permanently delete one public-holiday document by exact raw ID. |
|
|
807
|
+
| `get_hr_schedule` | Return every HR request overlapping an inclusive UTC calendar-date range, every applicable holiday document, and one day cell per date. Department scope includes nested departments by default; holiday inheritance walks upward from each scoped department by default. No result cap is applied and complete=true certifies full cursor pagination. |
|
|
808
|
+
| `get_hr_table` | Return a complete employee table for an inclusive UTC calendar-date range. Base workdays are Monday-Friday minus applicable inherited holiday dates; negative request types consume non-holiday workdays, positive types add calendar-day units, and zero types add none. No result cap is applied. |
|
|
809
|
+
| `get_hr_summary_report` | Return complete request totals grouped by exact department and request type for an inclusive UTC date range. Requests are clipped to the range; calendar days include weekends, workdays exclude weekends and applicable inherited holidays, and signed units follow Huly request-type values. No result cap is applied. |
|
|
810
|
+
|
|
755
811
|
### Inventory
|
|
756
812
|
|
|
757
813
|
| Tool | Description |
|
|
@@ -800,10 +856,32 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
800
856
|
|
|
801
857
|
| Tool | Description |
|
|
802
858
|
|------|-------------|
|
|
859
|
+
| `list_lead_comments` | List native comments on one lead resolved by exact funnel ID/name and LEAD-<number>. Returns Markdown with native Huly references preserved. |
|
|
860
|
+
| `add_lead_comment` | Add a Markdown comment to one exact lead. Current-workspace Huly links are stored as native references. |
|
|
861
|
+
| `update_lead_comment` | Update one comment belonging to an exact lead; comments attached elsewhere are rejected. Markdown native references are preserved. |
|
|
862
|
+
| `delete_lead_comment` | Delete one comment only when it belongs to the exact lead target. |
|
|
863
|
+
| `list_lead_attachments` | List native attachment references belonging to one exact lead. |
|
|
864
|
+
| `add_lead_attachment` | Upload a local path, URL, or base64 payload and attach the native file reference to one exact lead. |
|
|
865
|
+
| `get_lead_attachment` | Get metadata and a download URL for an attachment only when it belongs to one exact lead. |
|
|
866
|
+
| `update_lead_attachment` | Update description or pinned state for an attachment only when it belongs to one exact lead. |
|
|
867
|
+
| `delete_lead_attachment` | Delete an attachment only when it belongs to one exact lead. The native blob reference remains governed by Huly storage cleanup. |
|
|
868
|
+
| `list_lead_label_definitions` | List reusable native label definitions whose target class is Lead, without raw class IDs. Returns the full matching total and whether the limited page is truncated. |
|
|
869
|
+
| `list_lead_labels` | List native TagReference label relations attached to one exact lead. |
|
|
870
|
+
| `add_lead_label` | Idempotently attach a label relation to one exact lead. Accepts a definition ID or exact title; a missing title creates the Lead label definition. |
|
|
871
|
+
| `update_lead_label` | Update the published optional weight on every matching TagReference relation for one exact lead and label. |
|
|
872
|
+
| `remove_lead_label` | Idempotently remove all matching TagReference relations from one exact lead without deleting the reusable label definition. |
|
|
803
873
|
| `list_funnels` | List all Huly sales funnels (lead pipelines). Returns each funnel's stable ID and display name, sorted by name. Supports filtering by archived status. |
|
|
874
|
+
| `get_funnel` | Get one funnel by stable _id or exact name. Ambiguous names are rejected. Returns the full stable Funnel/Project projection, validated Lead workflow, content counts, deletion impact, and explicit unsupported-field classifications. |
|
|
875
|
+
| `create_funnel` | Create a native Huly funnel after validating its Funnel project type, Lead task types, workflow statuses, membership, and owners. Full description accepts Markdown and preserves current-workspace native references. Creation is idempotent only for one exact existing name; the result explicitly reports whether that existing funnel is archived, and ambiguous names are rejected. |
|
|
876
|
+
| `update_funnel` | Update a funnel resolved by stable _id or exact unambiguous name. Validates the existing Funnel project type/workflow and membership before mutation. Null clears description or fullDescription; Markdown native references are preserved. |
|
|
877
|
+
| `archive_funnel` | Archive a funnel without deleting it. Returns lead/comment/attachment impact so the caller can assess the hidden native content. Already archived funnels are an idempotent no-op. |
|
|
878
|
+
| `delete_funnel` | Permanently delete an exact funnel only after it is archived and empty. First call get_funnel or archive_funnel, then pass the observed impact counts as expectedLeads, expectedComments, and expectedAttachments. Deletion fails if any count changed after that preflight snapshot. |
|
|
804
879
|
| `list_leads` | Query Huly leads in a funnel with optional filters. Pass the funnel ID returned by list_funnels, or a funnel name for convenience lookup. Returns leads sorted by modification date (newest first). Supports filtering by status, assignee, and title search. |
|
|
805
|
-
| `get_lead` | Retrieve
|
|
806
|
-
| `create_lead` | Create one native Huly lead in an active funnel for an existing person or organization. Resolve the funnel by ID or exact name; identify the customer explicitly as person or organization; optionally choose an employee assignee,
|
|
880
|
+
| `get_lead` | Retrieve one exact funnel-scoped Huly lead with Markdown descriptions, customer identity/type, workflow task type and status, rank/completion, native collection counts, actor timestamps, funnel identity, and explicit classifications for fields without stable published semantics. Lead identifiers use LEAD-<number>. |
|
|
881
|
+
| `create_lead` | Create one native Huly lead in an active funnel for an existing person or organization. Resolve the funnel by ID or exact name; identify the customer explicitly as person or organization; optionally choose an employee assignee, a workflow status matched exactly after normalization (trimmed, case-insensitive, and ignoring spaces, hyphens, and underscores), and Markdown description. Automatically applies the Customer mixin when needed, preserves native Huly references, and returns both leadId and LEAD-<number>. This tool never creates a person or organization inline. |
|
|
882
|
+
| `update_lead` | Update a native Huly lead by funnel ID or exact name and LEAD-<number> identifier. Supported fields are title, Markdown description, a workflow status matched exactly after normalization (trimmed, case-insensitive, and ignoring spaces, hyphens, and underscores), employee assignee, start date, due date, and Customer mixin description. Omitted fields are unchanged; pass null explicitly to clear description, assignee, dates, or customer description. Existing people are resolved exactly and ambiguous identifiers fail. |
|
|
883
|
+
| `move_lead` | Move a native Huly lead to another active funnel after validating both native Funnel project types and Lead workflows. Pass a destination status matched exactly after normalization (trimmed, case-insensitive, and ignoring spaces, hyphens, and underscores), or omit status to map the current status name; incompatible or ambiguous mappings fail without writing. |
|
|
884
|
+
| `delete_lead` | Preview native lead deletion impact by default. The preview reads authoritative comment, attachment, and label relation counts. To permanently delete, pass execute=true together with the exact counts returned by the preview; deletion fails if impact changed. |
|
|
807
885
|
|
|
808
886
|
### Mail
|
|
809
887
|
|
|
@@ -840,15 +918,15 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
840
918
|
| `list_todo_labels` | List labels attached to one Planner ToDo. Resolves the ToDo by raw ID or the same human-oriented issue, title, owner, and completion locators used by get_todo. |
|
|
841
919
|
| `add_todo_label` | Idempotently attach a label to a Planner ToDo resolved by raw ID or human locator. label accepts a definition ID or exact title; a missing title creates the ToDo label definition first, while duplicate exact titles return candidate IDs. |
|
|
842
920
|
| `remove_todo_label` | Detach a label from one Planner ToDo without deleting the reusable label definition. Returns detached=false when the label exists but is not attached; duplicate exact titles return candidate IDs. |
|
|
843
|
-
| `list_todos` | List Huly Planner ToDos. Empty input returns up to 50 ToDos in planner order with all completion states. Use owner, issue, title, due date, priority, visibility, or completion filters to narrow results. |
|
|
844
|
-
| `get_todo` | Get one Planner ToDo by raw todoId or by human locator such as issue + title + owner. Returns stable ToDo fields, owner, attachment context, description, labels count, and work slot count. |
|
|
845
|
-
| `create_todo` | Create a Planner ToDo. Omit attachedTo for a personal ToDo,
|
|
846
|
-
| `update_todo` | Update a Planner ToDo by human locator or raw todoId. Supports title, markdown description, owner, dueDate including null to clear, priority, and visibility. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. |
|
|
847
|
-
| `complete_todo` | Complete a Planner ToDo by setting doneOn. Huly may trim future work slots and run issue automation when the ToDo is attached to an issue. |
|
|
848
|
-
| `reopen_todo` | Reopen a completed Planner ToDo by clearing doneOn. Human locators search completed ToDos by default; raw todoId locators target that exact ToDo. |
|
|
849
|
-
| `delete_todo` | Delete a Planner ToDo. This is destructive; deleting the last open issue ToDo can cause Huly classic issue status automation. |
|
|
850
|
-
| `schedule_todo` | Schedule a Planner ToDo by raw todoId or human locator. Creates a Planner-visible blocking work slot on the authenticated user's personal calendar, owned by their primary social identity and including them as a participant. Fails actionably when the identity, employee, or writable calendar prerequisite is unavailable. |
|
|
851
|
-
| `unschedule_todo` | Remove ToDo work slots. Pass either workSlotId to remove one slot, locator with scope=all
|
|
921
|
+
| `list_todos` | List Huly Planner ToDos. Empty input returns up to 50 ToDos in planner order with all completion states. Use owner, issue, document, title, due date, priority, visibility, or completion filters to narrow results. Issue and document filters cannot be combined. |
|
|
922
|
+
| `get_todo` | Get one Planner ToDo by raw todoId or by a human locator such as issue + title + owner or attachedTo.type=document with teamspace/document + title. Returns stable ToDo fields, owner, attachment context, description, labels count, and work slot count. |
|
|
923
|
+
| `create_todo` | Create a Planner ToDo. Omit attachedTo for a personal ToDo, pass attachedTo.type=issue with project and identifier for an issue action item, or pass attachedTo.type=document with teamspace and document names or IDs for a document action item. Document ToDos are private by default. Omit owner to use the authenticated user. Description supports markdown. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. |
|
|
924
|
+
| `update_todo` | Update a Planner ToDo by human locator or raw todoId. Human locators can target an issue or document attachment. Supports title, markdown description, owner, dueDate including null to clear, priority, and visibility. Markdown links to current-workspace Huly browse URLs with _class, _id, and label become native Huly references; external URLs and other-workspace browse URLs stay normal links. |
|
|
925
|
+
| `complete_todo` | Complete a Planner ToDo by raw todoId or human locator, including a document attachment locator, by setting doneOn. Huly may trim future work slots and run issue automation when the ToDo is attached to an issue. |
|
|
926
|
+
| `reopen_todo` | Reopen a completed Planner ToDo by raw todoId or human locator, including a document attachment locator, by clearing doneOn. Human locators search completed ToDos by default; raw todoId locators target that exact ToDo. |
|
|
927
|
+
| `delete_todo` | Delete a Planner ToDo by raw todoId or human locator, including a document attachment locator. This is destructive; deleting the last open issue ToDo can cause Huly classic issue status automation, while document ToDos do not change issue counters. |
|
|
928
|
+
| `schedule_todo` | Schedule a Planner ToDo by raw todoId or human locator, including a document attachment locator. Creates a Planner-visible blocking work slot on the authenticated user's personal calendar, owned by their primary social identity and including them as a participant. Fails actionably when the identity, employee, or writable calendar prerequisite is unavailable. |
|
|
929
|
+
| `unschedule_todo` | Remove ToDo work slots. Pass either workSlotId to remove one slot, or a raw ToDo ID/human locator (including a document attachment locator) with scope=all or scope=future and optional from. |
|
|
852
930
|
|
|
853
931
|
### Preferences
|
|
854
932
|
|
|
@@ -906,7 +984,10 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
906
984
|
| `unarchive_recruiting_vacancy` | Unarchive a Recruiting vacancy by raw _id, VCN-<number>, bare number, or exact name. |
|
|
907
985
|
| `list_recruiting_candidates` | List persons that already have the Recruiting Candidate mixin. Use set_recruiting_candidate_profile, add_recruiting_candidate_skill, or create_recruiting_applicant to recruit-enable an existing person. |
|
|
908
986
|
| `get_recruiting_candidate` | Get one Recruiting candidate by person _id, email, or exact display name. Returns profile fields, skills, application/review counts, and primary email when available. |
|
|
909
|
-
| `set_recruiting_candidate_profile` | Create or update the Recruiting Candidate profile mixin on an existing person. candidate accepts person _id, email, or exact display name. Provide at least one of title, source, onsite, remote. |
|
|
987
|
+
| `set_recruiting_candidate_profile` | Create or update the Recruiting Candidate profile mixin on an existing person. For a new candidate, call create_person first, then call this tool with the returned Person ID (or exact email/name). candidate accepts person _id, email, or exact display name. Provide at least one of title, source, onsite, remote. |
|
|
988
|
+
| `list_recruiting_candidate_custom_fields` | List custom field definitions applicable to an existing Recruiting Candidate. candidate accepts a person _id, exact email, or exact display name. Fields owned by undefined or undefined are returned with IDs, labels, types, and owner metadata. This read never enables Recruiting; for a new person, call create_person first, then set_recruiting_candidate_profile. |
|
|
989
|
+
| `get_recruiting_candidate_custom_field_values` | Read all applicable custom field values for an existing Recruiting Candidate, including definitions that are currently unset. candidate accepts a person _id, exact email, or exact display name. Candidate and Person-owned fields are projected with their Huly type metadata; this read never enables Recruiting. For a new person, call create_person first, then set_recruiting_candidate_profile. |
|
|
990
|
+
| `set_recruiting_candidate_custom_field` | Set one custom field on an existing Recruiting Candidate by field ID from list_recruiting_candidate_custom_fields. candidate accepts a person _id, exact email, or exact display name. Only isCustom fields owned by undefined or undefined are writable; array, ref, and unknown fields are rejected. Values use the documented field type wire format (numbers as numeric strings, booleans as true/false, dates as YYYY-MM-DD or canonical epoch milliseconds). This write never enables Recruiting; for a new person, call create_person first, then set_recruiting_candidate_profile. |
|
|
910
991
|
| `list_recruiting_skills` | List Recruiting skill tag definitions. Skills are Huly tags scoped to targetClass recruit:mixin:Candidate; use returned titles or IDs with candidate skill tools. |
|
|
911
992
|
| `list_recruiting_candidate_skills` | List skill tag references attached to one Recruiting candidate by person _id, email, or exact name. |
|
|
912
993
|
| `add_recruiting_candidate_skill` | Attach a skill to a candidate. candidate accepts person _id, email, or exact name. skill accepts title or tag ID; missing skill titles are created. Optional category/color apply only to newly created skill tags. |
|
|
@@ -1062,8 +1143,11 @@ When resolved tool exposure is `proxy`, clients see the built-in tools plus thes
|
|
|
1062
1143
|
|------|-------------|
|
|
1063
1144
|
| `list_office_floors` | List virtual office floors. |
|
|
1064
1145
|
| `get_office_floor` | Get one virtual office floor by floorId. |
|
|
1146
|
+
| `create_office_floor` | Create one durable virtual-office Floor with a nonblank name. Returns the generated floorId immediately. Floor rename and deletion are intentionally unavailable. |
|
|
1065
1147
|
| `list_office_rooms` | List virtual office rooms, including access mode, type, floor, floor-plan position/size, language, and recording/transcription defaults. |
|
|
1066
1148
|
| `get_office_room` | Get one virtual office room by roomId, including description when readable. |
|
|
1149
|
+
| `create_office_room` | Create one durable video, audio, reception, or personal office on a Floor resolved from an exact ID or unambiguous exact name. Video/audio/reception require a nonblank name; office uses Huly's native empty name and person=null. Huly class, access, language, 2x1 free floor-plan position, and recording/transcription defaults are derived internally; video inherits workspace OfficeSettings while other kinds default both flags to false. This does not create participants or start recording/transcription. |
|
|
1150
|
+
| `update_office_room` | Update one durable Room or Office by roomId. Accepts only name, Markdown description, access, startWithTranscription, and startWithRecording. Personal offices reject open access; Huly's protected Reception cannot be renamed. Floor, geometry, person assignment, language, ACLs, occupancy, and active provider state are preserved. Default flags affect future sessions and do not start or stop recording/transcription. |
|
|
1067
1151
|
| `list_offices` | List personal office rooms and their assigned people when readable. |
|
|
1068
1152
|
| `get_office` | Get one personal office room by roomId, including assigned person and description when readable. |
|
|
1069
1153
|
| `list_active_room_info` | List transient active room occupancy summaries. |
|