- _status_choices no longer caches failures: a transient /ticket_form_fields
error used to cache [] forever, silently degrading unresolved=True to an
unfiltered listing (including Resolved/Closed) until container restart.
unresolved=True and list_ticket_statuses now return an explicit error when
the status list can't be fetched instead of degrading silently.
- All API calls (server and skill helper) now use a 30s timeout with a clean
error, so a hung connection can't block a tool call indefinitely.
- _coerce_status falls back to the instance's live status list, so custom
names like "Working" coerce to their id instead of 400ing at the API.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The pesco instance defines 13 ticket statuses, not the 4 defaults, so a
(status:2 OR status:3) 'open tickets' filter silently dropped Working,
Scheduled, Waiting*, Pending Approval, etc. — undercounting 24 open tickets as 1.
Add a status helper that reads the status field from /ticket_form_fields and
treats only ids 4/5 (and closed/resolved-labelled) as terminal. Expose
list_ticket_statuses() and a list_tickets(unresolved=True) shortcut that builds
the full non-terminal status clause automatically. Document the gotcha in the
skill reference.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
list_tickets struggled to express 'assigned to me and not resolved/closed'.
Document that assignee filtering uses the numeric agent_id (resolve from email
via list_agents first) and that open statuses must be enumerated as
(status:2 OR status:3) since there's no negation. Add workspace_id passthrough
for multi-workspace accounts. Mirror the guidance in the skill reference.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The streamable-HTTP transport enables DNS-rebinding protection by default,
which rejects non-localhost Host headers with HTTP 421. The server is reached
by LAN IP via mcp-remote (not a browser) and is gated by a bearer token, so
disable the protection via TransportSecuritySettings.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cowork runs the agent in an isolated VM, so the uploaded skill can't see host
credentials or reach the Freshservice host. Add an HTTP/streamable MCP server
(bearer-auth, Dockerfile, compose) to run as a container on the LAN box and
connect via mcp-remote like the existing sharepoint-lists server. The skill
remains the right tool for the non-sandboxed Claude Code CLI.
Also gitignore mcp-server/.env and include the desktop skill install package.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>