feat: Regular Time entry support with name resolution#33
feat: Regular Time entry support with name resolution#33asachs01 merged 1 commit intowyre-technology:mainfrom
Conversation
asachs01
left a comment
There was a problem hiding this comment.
Thanks for the contribution @shaank0! The Regular Time entry feature is a great addition. However, there are some blockers before this can be merged:
Blockers
-
Dependent SDK PR is closed. This PR depends on wyre-technology/autotask-node#153, which is closed (not merged). The SDK methods this relies on (
createRegularTimeEntry(),resolveResourceByName(),getInternalBillingCodes(), etc.) don't exist, so all new code paths will throw at runtime. -
CI is failing. The existing test
should handle unsupported entity methods with proper error messagesexpectsgetBillingCode()to throw"Billing codes API not directly available", but the PR changes that method to call the (non-existent) SDK. The test needs updating. -
No new tests. The PR adds substantial new logic (name resolution, category resolution, prompting flow, three distinct createTimeEntry paths) but includes zero new tests.
Other Notes
- Heavy use of
(client as any)casts — understandable if the SDK types aren't updated, but means zero compile-time safety searchBillingCodesignores its_optionsparameter entirely- Handler mutates the
a(arguments) object directly withdelete— fragile if the framework ever freezes or logs args after the handler
Next steps: Please get the SDK PR (autotask-node#153) reopened and merged first, then update tests and we can move forward. The architecture and approach look solid otherwise.
# 1.0.0 (2026-04-01) * feat!: Namespace all MCP tools with 'autotask_' prefix (v2.0.0) ([1190101](1190101)) ### Bug Fixes * add CLI bin entry and enforce test failures in CI ([10ce1c7](10ce1c7)), closes [wyre-technology#4](https://github.com/KameronTT/autotask-mcp/issues/4) [wyre-technology#4](https://github.com/KameronTT/autotask-mcp/issues/4) * add missing required fields to task, project note, and project creation ([df72fb4](df72fb4)), closes [wyre-technology/msp-claude-plugins#36](wyre-technology/msp-claude-plugins#36) [wyre-technology#40](https://github.com/KameronTT/autotask-mcp/issues/40) [wyre-technology#41](https://github.com/KameronTT/autotask-mcp/issues/41) [wyre-technology#42](https://github.com/KameronTT/autotask-mcp/issues/42) [wyre-technology#40](wyre-technology#40) [wyre-technology#41](wyre-technology#41) [wyre-technology#42](wyre-technology#42) * Address GitHub issues [wyre-technology#3](https://github.com/KameronTT/autotask-mcp/issues/3), [wyre-technology#8](https://github.com/KameronTT/autotask-mcp/issues/8), [wyre-technology#9](https://github.com/KameronTT/autotask-mcp/issues/9) - search filtering and API endpoints ([b11256b](b11256b)) * **cache:** solve thundering herd bug resolving company mapping limits ([ffa318a](ffa318a)) * **ci:** add GITHUB_TOKEN to version detection step ([99e2b29](99e2b29)) * **ci:** add multi-platform Docker builds for arm64 support ([9e565c6](9e565c6)) * **ci:** Add proper permissions for release and security scan jobs ([d60e138](d60e138)) * **ci:** Disable npm publishing in semantic-release ([ae11880](ae11880)) * **ci:** fix broken YAML in Discord notification step ([bc3b34a](bc3b34a)) * **ci:** move Discord notification into release workflow ([113d526](113d526)) * **ci:** pack MCPB bundle after semantic-release version bump ([53c952e](53c952e)) * **ci:** replace dist file uploads with MCPB bundle in releases ([280127f](280127f)) * **ci:** Replace local file dependency with git dependency for autotask-node ([828bf1a](828bf1a)) * **ci:** Resolve npm ci prefer-offline/online conflict in Dockerfile ([60734c8](60734c8)) * **ci:** use Node 22 in release job for semantic-release v25 compatibility ([f8d96eb](f8d96eb)) * **deploy:** replace node_compat with nodejs_compat for Wrangler v4 ([e0bb78d](e0bb78d)), closes [wyre-technology#50](https://github.com/KameronTT/autotask-mcp/issues/50) * **deps:** bump autotask-node to main branch with endpoint semaphore fix ([35cef9c](35cef9c)) * **deps:** update autotask-node to compiled semaphore fix ([f282e21](f282e21)) * **deps:** Update autotask-node to v2.0.6 ([1a2e08e](1a2e08e)) * **deps:** update autotask-node with gzip compression body fix ([62a6373](62a6373)), closes [#151](https://github.com/KameronTT/autotask-mcp/issues/151) * **deps:** Update package-lock.json with correct autotask-node v2.0.6 hash ([7c0ff90](7c0ff90)) * **deps:** upgrade semantic-release to ^25.0.0 for github plugin compatibility ([41e88f1](41e88f1)) * disable broken gzip compression and fix create ID parsing ([d6889f3](d6889f3)) * **docker:** drop arm64 platform to fix QEMU build failures ([038f21c](038f21c)) * **docker:** Fix build and runtime failures in Dockerfile ([c6e37e2](c6e37e2)) * **docker:** pin npm to v10 to fix git dep install failure ([bab0dc8](bab0dc8)) * **docs:** Add base path prefix to content links for GitHub Pages ([be4b661](be4b661)) * **docs:** Use npx for Claude Code instructions instead of bundle extraction ([e5c7a01](e5c7a01)) * don't crash on missing credentials, return tool-level errors instead ([cd9294c](cd9294c)) * **expenses:** correct weekEnding field name and required params for expense report creation ([226d38d](226d38d)) * **gateway:** skip autotask-node connection test in stateless mode ([67643c6](67643c6)) * load .env file at startup for credential configuration ([192c52c](192c52c)) * **mapping:** coalesce concurrent cache refreshes and fix fetch-all fallback ([ea08f80](ea08f80)) * **mcpb:** Add bundle signing, size reduction, and Claude Desktop compatibility ([89a4711](89a4711)) * **mcpb:** Fix bundle runtime errors and add automated test harness ([c3beb22](c3beb22)) * **notes:** use sub-resource URL /Tickets/{id}/Notes for create_ticket_note ([wyre-technology#33](https://github.com/KameronTT/autotask-mcp/issues/33)) ([d9a26a0](d9a26a0)) * prevent dotenv stdout pollution in MCP stdio transport ([8818749](8818749)) * prevent stdout pollution from autotask-node's dotenv.config() ([abc61fd](abc61fd)) * **projects:** build searchProjects filters from individual params ([6e30860](6e30860)), closes [wyre-technology/msp-claude-plugins#36](wyre-technology/msp-claude-plugins#36) * quote item creation 404 and quote creation 500 errors ([wyre-technology#30](https://github.com/KameronTT/autotask-mcp/issues/30)) ([7f8e64f](7f8e64f)), closes [wyre-technology/autotask-node#149](wyre-technology/autotask-node#149) * rename duplicate step id 'version' to 'release-version' in docker job ([5e093cb](5e093cb)) * resolve .env relative to script location as fallback ([367eb0d](367eb0d)) * resolve merge conflict markers from squash merges ([6c152eb](6c152eb)), closes [wyre-technology#43](https://github.com/KameronTT/autotask-mcp/issues/43) [wyre-technology#44](https://github.com/KameronTT/autotask-mcp/issues/44) [wyre-technology#45](https://github.com/KameronTT/autotask-mcp/issues/45) * **security:** address code scanning vulnerabilities ([9fba187](9fba187)) * **security:** update brace-expansion for CVE-2025-5889 ([wyre-technology#19](https://github.com/KameronTT/autotask-mcp/issues/19)) ([619d8d8](619d8d8)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#14](https://github.com/KameronTT/autotask-mcp/issues/14) * **security:** update Docker base image for npm CVEs ([wyre-technology#16](https://github.com/KameronTT/autotask-mcp/issues/16)) ([cef86ba](cef86ba)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) * **security:** update lodash for CVE-2025-13465 ([wyre-technology#18](https://github.com/KameronTT/autotask-mcp/issues/18)) ([99e856d](99e856d)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#14](https://github.com/KameronTT/autotask-mcp/issues/14) * **security:** update MCP SDK for CVE-2026-0621, CVE-2025-66414 ([wyre-technology#17](https://github.com/KameronTT/autotask-mcp/issues/17)) ([33a7d81](33a7d81)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#11](https://github.com/KameronTT/autotask-mcp/issues/11) * **security:** update tar for CVE-2026-23950, CVE-2026-23745 ([6890ca6](6890ca6)), closes [wyre-technology#12](https://github.com/KameronTT/autotask-mcp/issues/12) * surface Autotask API validation errors instead of generic 500 ([wyre-technology#32](https://github.com/KameronTT/autotask-mcp/issues/32)) ([b8e2453](b8e2453)) * sync manifest.json version from package.json at pack time ([c7a9724](c7a9724)) * task creation endpoint, ticket notes, field info + phase tools ([9d7fa42](9d7fa42)), closes [wyre-technology#46](https://github.com/KameronTT/autotask-mcp/issues/46) [wyre-technology#47](https://github.com/KameronTT/autotask-mcp/issues/47) * **test:** Run all MCPB tests in single server session to avoid rate limits ([7b425cf](7b425cf)) * **tests:** Resolve ESM compatibility and rewrite mapping tests ([a294a7c](a294a7c)) * **tests:** update expense item test assertions to match refactored API ([9affc62](9affc62)), closes [wyre-technology#27](https://github.com/KameronTT/autotask-mcp/issues/27) * **tests:** update expense item tests to match implemented API signatures ([7fac014](7fac014)) * **tickets:** update autotask-node lockfile with PATCH collection endpoint fix ([4156635](4156635)) * **tickets:** update autotask-node to PATCH collection endpoint fix ([0cf01d8](0cf01d8)) * **tickets:** use PATCH instead of PUT for updateTicket ([c0a0b7b](c0a0b7b)) * **tools:** return explicit not-found errors to prevent LLM hallucination ([wyre-technology#31](https://github.com/KameronTT/autotask-mcp/issues/31)) ([7f628db](7f628db)) * upgrade autotask-node to v2.0.3 (removes dotenv dependency) ([1a5727b](1a5727b)) * upgrade autotask-node to v2.0.4 (graceful logger) ([213db40](213db40)) * upgrade autotask-node to v2.0.5 (stderr-only logging) ([a01588b](a01588b)) * use autotask-node v2.1.0 parent-child URL pattern for note/time entry creates ([6397094](6397094)) * use correct parent-child URL patterns for child entity creation ([wyre-technology#24](https://github.com/KameronTT/autotask-mcp/issues/24)) ([47f2a75](47f2a75)) * use stateless per-request server pattern for HTTP transport ([e8c6326](e8c6326)) ### Features * add create_expense_item tool and fix expense report accessors ([0cf9f09](0cf9f09)) * add DigitalOcean and Cloudflare deploy infrastructure and badges ([b68bad5](b68bad5)) * Add ESLint configuration file ([3a8ef4d](3a8ef4d)) * Add gateway mode for hosted MCP deployments ([14d5682](14d5682)) * add HTTP Streamable transport for remote MCP access ([2d31853](2d31853)), closes [wyre-technology#7](https://github.com/KameronTT/autotask-mcp/issues/7) * add MCPB (MCP Bundle) packaging for desktop distribution ([e7601b1](e7601b1)) * Add picklist discovery tools and elicitation support ([93c68f2](93c68f2)) * add Service Call support (11 new tools) ([11b682e](11b682e)), closes [wyre-technology#38](https://github.com/KameronTT/autotask-mcp/issues/38) * add Service Calls CRUD support ([wyre-technology#38](https://github.com/KameronTT/autotask-mcp/issues/38)) ([163d5eb](163d5eb)) * add TicketCharges CRUD support ([b61aaf0](b61aaf0)) * add TicketCharges CRUD support ([wyre-technology#36](https://github.com/KameronTT/autotask-mcp/issues/36)) ([de2d684](de2d684)) * **billing:** Add BillingItems and BillingItemApprovalLevels support ([4c88034](4c88034)), closes [wyre-technology#21](https://github.com/KameronTT/autotask-mcp/issues/21) * bump autotask-node to v2.2.0 with Regular Time entry support ([00f1f1e](00f1f1e)) * Initialize Taskmaster and fix build setup ([5e22e0c](5e22e0c)) * Quote Builder - create quotes with line items from cost sheets ([wyre-technology#29](https://github.com/KameronTT/autotask-mcp/issues/29)) ([5da3a98](5da3a98)) * **search:** Add compact response format, smart defaults, and pagination ([00aa4b9](00aa4b9)) * Switch Docker publishing to GitHub Container Registry ([97fa1ac](97fa1ac)) * **time-entries:** add approvalStatus filter for un-posted entries ([d27f0ab](d27f0ab)), closes [wyre-technology#21](https://github.com/KameronTT/autotask-mcp/issues/21) * **tools:** add autotask_update_ticket tool ([b73c3f9](b73c3f9)), closes [wyre-technology#28](https://github.com/KameronTT/autotask-mcp/issues/28) * **tools:** wire autotask_update_ticket handler ([13fe142](13fe142)) ### Reverts * remove arm64 platform and QEMU, keep linux/amd64 only ([d2f4d6a](d2f4d6a)) ### BREAKING CHANGES * All 35 MCP tools now use 'autotask_' prefix to prevent naming collisions when multiple MCP servers are connected. - search_companies → autotask_search_companies - create_ticket → autotask_create_ticket - test_connection → autotask_test_connection - (all other tools follow same pattern) Migration: Update all tool calls to use new namespaced names. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds the ability to create "Regular Time" entries (meetings, admin work,
training, etc.) that are not tied to a ticket, task, or project.
Tool changes:
- autotask_create_time_entry now accepts resourceName (auto-resolves to
resourceID) and category (auto-resolves to internalBillingCodeID)
- When no resource is specified, prompts user for their name
- When no category is specified on Regular Time, lists available
categories and prompts user to pick one
- Added projectID field for project-scoped time entries
Service changes:
- createTimeEntry now supports Regular Time via SDK's
createRegularTimeEntry() when no ticket/task/project is specified
- Implemented resolveResourceByName(), getInternalBillingCodeNames(),
and resolveInternalBillingCodeByName() delegating to SDK helpers
- Implemented searchBillingCodes() and getBillingCode() which were
previously unimplemented stubs
Key Autotask API details:
- Regular Time requires internalBillingCodeID (not billingCodeID)
- Only BillingCodes with useType=3 are valid internal categories
- The API returns {itemId: N} for creates, not {id: N}
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
416d1a9 to
f1947a8
Compare
Add four new MCP tools for managing Autotask ticket checklist items:
- autotask_search_ticket_checklist_items
- autotask_create_ticket_checklist_item
- autotask_update_ticket_checklist_item
- autotask_delete_ticket_checklist_item
Checklist items are a sub-resource of tickets in the Autotask REST API
and can only be accessed via /Tickets/{id}/ChecklistItems. Following the
same pattern as the note-creation fix in #33, the service talks to the
underlying axios instance directly rather than routing through the
autotask-node SDK, which does not expose this sub-resource. API-level
validation errors are surfaced instead of being swallowed as generic
500s (see #32).
Refs #55
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add four new MCP tools for managing Autotask ticket checklist items:
- autotask_search_ticket_checklist_items
- autotask_create_ticket_checklist_item
- autotask_update_ticket_checklist_item
- autotask_delete_ticket_checklist_item
Checklist items are a sub-resource of tickets in the Autotask REST API
and can only be accessed via /Tickets/{id}/ChecklistItems. Following the
same pattern as the note-creation fix in #33, the service talks to the
underlying axios instance directly rather than routing through the
autotask-node SDK, which does not expose this sub-resource. API-level
validation errors are surfaced instead of being swallowed as generic
500s (see #32).
Refs #55
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# [2.18.0](v2.17.2...v2.18.0) (2026-04-08) ### Features * **attachments:** add autotask_create_ticket_attachment tool ([#55](#55)) ([#62](#62)) ([8ff325e](8ff325e)) * **billing:** add invoice details tool and billing item filters ([#55](#55)) ([#61](#61)) ([cc9354f](cc9354f)) * **checklist:** add ticket checklist items CRUD tools ([#55](#55)) ([#59](#59)) ([78e0f78](78e0f78)), closes [#33](#33) [#32](#32) * **config:** auto-detect Autotask API zone from username ([#55](#55)) ([#60](#60)) ([01a3bae](01a3bae)) * **projects:** add autotask_update_project tool ([#55](#55)) ([#57](#57)) ([1efeead](1efeead)) * **tickets:** expand create/update_ticket field coverage ([#55](#55)) ([#58](#58)) ([16614ff](16614ff))
# 1.0.0 (2026-04-08) * feat!: Namespace all MCP tools with 'autotask_' prefix (v2.0.0) ([1190101](1190101)) ### Bug Fixes * add CLI bin entry and enforce test failures in CI ([10ce1c7](10ce1c7)), closes [wyre-technology#4](https://github.com/KameronTT/autotask-mcp/issues/4) [wyre-technology#4](https://github.com/KameronTT/autotask-mcp/issues/4) * add missing required fields to task, project note, and project creation ([df72fb4](df72fb4)), closes [wyre-technology/msp-claude-plugins#36](wyre-technology/msp-claude-plugins#36) [wyre-technology#40](https://github.com/KameronTT/autotask-mcp/issues/40) [wyre-technology#41](https://github.com/KameronTT/autotask-mcp/issues/41) [wyre-technology#42](https://github.com/KameronTT/autotask-mcp/issues/42) [wyre-technology#40](wyre-technology#40) [wyre-technology#41](wyre-technology#41) [wyre-technology#42](wyre-technology#42) * Address GitHub issues [wyre-technology#3](https://github.com/KameronTT/autotask-mcp/issues/3), [wyre-technology#8](https://github.com/KameronTT/autotask-mcp/issues/8), [wyre-technology#9](https://github.com/KameronTT/autotask-mcp/issues/9) - search filtering and API endpoints ([b11256b](b11256b)) * allow unauthenticated tools/list in gateway mode ([afa5120](afa5120)) * **cache:** solve thundering herd bug resolving company mapping limits ([ffa318a](ffa318a)) * **ci:** add GITHUB_TOKEN to version detection step ([99e2b29](99e2b29)) * **ci:** add multi-platform Docker builds for arm64 support ([9e565c6](9e565c6)) * **ci:** Add proper permissions for release and security scan jobs ([d60e138](d60e138)) * **ci:** deploy :latest tag, force revision via env var bump ([dd31423](dd31423)) * **ci:** Disable npm publishing in semantic-release ([ae11880](ae11880)) * **ci:** fix broken YAML in Discord notification step ([bc3b34a](bc3b34a)) * **ci:** move Discord notification into release workflow ([113d526](113d526)) * **ci:** pack MCPB bundle after semantic-release version bump ([53c952e](53c952e)) * **ci:** replace dist file uploads with MCPB bundle in releases ([280127f](280127f)) * **ci:** Replace local file dependency with git dependency for autotask-node ([828bf1a](828bf1a)) * **ci:** Resolve npm ci prefer-offline/online conflict in Dockerfile ([60734c8](60734c8)) * **ci:** use Node 22 in release job for semantic-release v25 compatibility ([f8d96eb](f8d96eb)) * **deploy:** replace node_compat with nodejs_compat for Wrangler v4 ([e0bb78d](e0bb78d)), closes [wyre-technology#50](https://github.com/KameronTT/autotask-mcp/issues/50) * **deps:** bump autotask-node to main branch with endpoint semaphore fix ([35cef9c](35cef9c)) * **deps:** update autotask-node to compiled semaphore fix ([f282e21](f282e21)) * **deps:** Update autotask-node to v2.0.6 ([1a2e08e](1a2e08e)) * **deps:** update autotask-node with gzip compression body fix ([62a6373](62a6373)), closes [#151](https://github.com/KameronTT/autotask-mcp/issues/151) * **deps:** Update package-lock.json with correct autotask-node v2.0.6 hash ([7c0ff90](7c0ff90)) * **deps:** upgrade semantic-release to ^25.0.0 for github plugin compatibility ([41e88f1](41e88f1)) * disable broken gzip compression and fix create ID parsing ([d6889f3](d6889f3)) * **docker:** drop arm64 platform to fix QEMU build failures ([038f21c](038f21c)) * **docker:** Fix build and runtime failures in Dockerfile ([c6e37e2](c6e37e2)) * **docker:** pin npm to v10 to fix git dep install failure ([bab0dc8](bab0dc8)) * **docs:** Add base path prefix to content links for GitHub Pages ([be4b661](be4b661)) * **docs:** Use npx for Claude Code instructions instead of bundle extraction ([e5c7a01](e5c7a01)) * don't crash on missing credentials, return tool-level errors instead ([cd9294c](cd9294c)) * **expenses:** correct weekEnding field name and required params for expense report creation ([226d38d](226d38d)) * **gateway:** skip autotask-node connection test in stateless mode ([67643c6](67643c6)) * load .env file at startup for credential configuration ([192c52c](192c52c)) * **mapping:** coalesce concurrent cache refreshes and fix fetch-all fallback ([ea08f80](ea08f80)) * **mcpb:** Add bundle signing, size reduction, and Claude Desktop compatibility ([89a4711](89a4711)) * **mcpb:** Fix bundle runtime errors and add automated test harness ([c3beb22](c3beb22)) * **notes:** use sub-resource URL /Tickets/{id}/Notes for create_ticket_note ([wyre-technology#33](https://github.com/KameronTT/autotask-mcp/issues/33)) ([d9a26a0](d9a26a0)) * prevent dotenv stdout pollution in MCP stdio transport ([8818749](8818749)) * prevent stdout pollution from autotask-node's dotenv.config() ([abc61fd](abc61fd)) * **projects:** build searchProjects filters from individual params ([6e30860](6e30860)), closes [wyre-technology/msp-claude-plugins#36](wyre-technology/msp-claude-plugins#36) * quote item creation 404 and quote creation 500 errors ([wyre-technology#30](https://github.com/KameronTT/autotask-mcp/issues/30)) ([7f8e64f](7f8e64f)), closes [wyre-technology/autotask-node#149](wyre-technology/autotask-node#149) * rename duplicate step id 'version' to 'release-version' in docker job ([5e093cb](5e093cb)) * resolve .env relative to script location as fallback ([367eb0d](367eb0d)) * resolve Docker build failure caused by prepare script running before source copy ([87b0a0c](87b0a0c)) * resolve merge conflict markers from squash merges ([6c152eb](6c152eb)), closes [wyre-technology#43](https://github.com/KameronTT/autotask-mcp/issues/43) [wyre-technology#44](https://github.com/KameronTT/autotask-mcp/issues/44) [wyre-technology#45](https://github.com/KameronTT/autotask-mcp/issues/45) * **security:** address code scanning vulnerabilities ([9fba187](9fba187)) * **security:** update brace-expansion for CVE-2025-5889 ([wyre-technology#19](https://github.com/KameronTT/autotask-mcp/issues/19)) ([619d8d8](619d8d8)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#14](https://github.com/KameronTT/autotask-mcp/issues/14) * **security:** update Docker base image for npm CVEs ([wyre-technology#16](https://github.com/KameronTT/autotask-mcp/issues/16)) ([cef86ba](cef86ba)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) * **security:** update lodash for CVE-2025-13465 ([wyre-technology#18](https://github.com/KameronTT/autotask-mcp/issues/18)) ([99e856d](99e856d)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#14](https://github.com/KameronTT/autotask-mcp/issues/14) * **security:** update MCP SDK for CVE-2026-0621, CVE-2025-66414 ([wyre-technology#17](https://github.com/KameronTT/autotask-mcp/issues/17)) ([33a7d81](33a7d81)), closes [wyre-technology#13](https://github.com/KameronTT/autotask-mcp/issues/13) [wyre-technology#11](https://github.com/KameronTT/autotask-mcp/issues/11) * **security:** update tar for CVE-2026-23950, CVE-2026-23745 ([6890ca6](6890ca6)), closes [wyre-technology#12](https://github.com/KameronTT/autotask-mcp/issues/12) * surface Autotask API validation errors instead of generic 500 ([wyre-technology#32](https://github.com/KameronTT/autotask-mcp/issues/32)) ([b8e2453](b8e2453)) * sync manifest.json version from package.json at pack time ([c7a9724](c7a9724)) * task creation endpoint, ticket notes, field info + phase tools ([9d7fa42](9d7fa42)), closes [wyre-technology#46](https://github.com/KameronTT/autotask-mcp/issues/46) [wyre-technology#47](https://github.com/KameronTT/autotask-mcp/issues/47) * **test:** Run all MCPB tests in single server session to avoid rate limits ([7b425cf](7b425cf)) * **tests:** Resolve ESM compatibility and rewrite mapping tests ([a294a7c](a294a7c)) * **tests:** update expense item test assertions to match refactored API ([9affc62](9affc62)), closes [wyre-technology#27](https://github.com/KameronTT/autotask-mcp/issues/27) * **tests:** update expense item tests to match implemented API signatures ([7fac014](7fac014)) * **tests:** update test expectations for implemented billing code methods ([1833d02](1833d02)) * **tickets:** update autotask-node lockfile with PATCH collection endpoint fix ([4156635](4156635)) * **tickets:** update autotask-node to PATCH collection endpoint fix ([0cf01d8](0cf01d8)) * **tickets:** use PATCH instead of PUT for updateTicket ([c0a0b7b](c0a0b7b)) * **time-entries:** bypass broken list() filter by calling /TimeEntries/query directly ([146e94d](146e94d)), closes [wyre-technology#53](https://github.com/KameronTT/autotask-mcp/issues/53) * **tools:** return explicit not-found errors to prevent LLM hallucination ([wyre-technology#31](https://github.com/KameronTT/autotask-mcp/issues/31)) ([7f628db](7f628db)) * upgrade autotask-node to v2.0.3 (removes dotenv dependency) ([1a5727b](1a5727b)) * upgrade autotask-node to v2.0.4 (graceful logger) ([213db40](213db40)) * upgrade autotask-node to v2.0.5 (stderr-only logging) ([a01588b](a01588b)) * use autotask-node v2.1.0 parent-child URL pattern for note/time entry creates ([6397094](6397094)) * use correct parent-child URL patterns for child entity creation ([wyre-technology#24](https://github.com/KameronTT/autotask-mcp/issues/24)) ([47f2a75](47f2a75)) * use stateless per-request server pattern for HTTP transport ([e8c6326](e8c6326)) ### Features * add create_expense_item tool and fix expense report accessors ([0cf9f09](0cf9f09)) * add DigitalOcean and Cloudflare deploy infrastructure and badges ([b68bad5](b68bad5)) * Add ESLint configuration file ([3a8ef4d](3a8ef4d)) * Add gateway mode for hosted MCP deployments ([14d5682](14d5682)) * add HTTP Streamable transport for remote MCP access ([2d31853](2d31853)), closes [wyre-technology#7](https://github.com/KameronTT/autotask-mcp/issues/7) * add MCPB (MCP Bundle) packaging for desktop distribution ([e7601b1](e7601b1)) * Add picklist discovery tools and elicitation support ([93c68f2](93c68f2)) * add Regular Time entry support with name resolution ([f1947a8](f1947a8)) * add Service Call support (11 new tools) ([11b682e](11b682e)), closes [wyre-technology#38](https://github.com/KameronTT/autotask-mcp/issues/38) * add Service Calls CRUD support ([wyre-technology#38](https://github.com/KameronTT/autotask-mcp/issues/38)) ([163d5eb](163d5eb)) * add TicketCharges CRUD support ([b61aaf0](b61aaf0)) * add TicketCharges CRUD support ([wyre-technology#36](https://github.com/KameronTT/autotask-mcp/issues/36)) ([de2d684](de2d684)) * **attachments:** add autotask_create_ticket_attachment tool ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#62](https://github.com/KameronTT/autotask-mcp/issues/62)) ([8ff325e](8ff325e)) * **billing:** Add BillingItems and BillingItemApprovalLevels support ([4c88034](4c88034)), closes [wyre-technology#21](https://github.com/KameronTT/autotask-mcp/issues/21) * **billing:** add invoice details tool and billing item filters ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#61](https://github.com/KameronTT/autotask-mcp/issues/61)) ([cc9354f](cc9354f)) * bump autotask-node to v2.2.0 with Regular Time entry support ([00f1f1e](00f1f1e)) * **checklist:** add ticket checklist items CRUD tools ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#59](https://github.com/KameronTT/autotask-mcp/issues/59)) ([78e0f78](78e0f78)), closes [wyre-technology#33](https://github.com/KameronTT/autotask-mcp/issues/33) [wyre-technology#32](https://github.com/KameronTT/autotask-mcp/issues/32) * **config:** auto-detect Autotask API zone from username ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#60](https://github.com/KameronTT/autotask-mcp/issues/60)) ([01a3bae](01a3bae)) * Initialize Taskmaster and fix build setup ([5e22e0c](5e22e0c)) * **projects:** add autotask_update_project tool ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#57](https://github.com/KameronTT/autotask-mcp/issues/57)) ([1efeead](1efeead)) * Quote Builder - create quotes with line items from cost sheets ([wyre-technology#29](https://github.com/KameronTT/autotask-mcp/issues/29)) ([5da3a98](5da3a98)) * **search:** Add compact response format, smart defaults, and pagination ([00aa4b9](00aa4b9)) * **site-config:** add company site configuration read and update tools ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#63](https://github.com/KameronTT/autotask-mcp/issues/63)) ([bb26f1a](bb26f1a)), closes [wyre-technology#5](https://github.com/KameronTT/autotask-mcp/issues/5) * Switch Docker publishing to GitHub Container Registry ([97fa1ac](97fa1ac)) * **tickets:** expand create/update_ticket field coverage ([wyre-technology#55](https://github.com/KameronTT/autotask-mcp/issues/55)) ([wyre-technology#58](https://github.com/KameronTT/autotask-mcp/issues/58)) ([16614ff](16614ff)) * **time-entries:** add approvalStatus filter for un-posted entries ([d27f0ab](d27f0ab)), closes [wyre-technology#21](https://github.com/KameronTT/autotask-mcp/issues/21) * **tools:** add autotask_update_ticket tool ([b73c3f9](b73c3f9)), closes [wyre-technology#28](https://github.com/KameronTT/autotask-mcp/issues/28) * **tools:** wire autotask_update_ticket handler ([13fe142](13fe142)) ### Reverts * remove arm64 platform and QEMU, keep linux/amd64 only ([d2f4d6a](d2f4d6a)) ### BREAKING CHANGES * All 35 MCP tools now use 'autotask_' prefix to prevent naming collisions when multiple MCP servers are connected. - search_companies → autotask_search_companies - create_ticket → autotask_create_ticket - test_connection → autotask_test_connection - (all other tools follow same pattern) Migration: Update all tool calls to use new namespaced names. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
autotask_create_time_entrycan now create time entries not tied to a ticket, task, or project (for meetings, admin work, training, etc.)resourceName(e.g., "Will Spence") instead of requiring numericresourceIDcategory(e.g., "Internal Meeting") instead of requiring numericinternalBillingCodeIDsearchBillingCodes()andgetBillingCode()now work instead of throwing "not available" errorsExample usage in Claude Desktop:
Depends on
Test plan
resourceName+category(both resolved automatically)🤖 Generated with Claude Code