AI-powered Jira pipeline CLI: Ticket → Code → GitHub → Deploy → Notify
jiraACP has well-structured Zod schemas with type definitions and descriptions for all 6 tools. Tool names follow verb_noun convention (getTasks, getTicket, transitionTicket, addComment, reassign). However, descriptions are inconsistent in depth and some parameter descriptions lack actionable detail. Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; most tools return raw JSON without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction. Parameter descriptions sometimes reference examples (e.g. 'e.g. "hi", "geo"') which LLMs may reuse literally.
Add a comment to a Jira ticket
Get tasks assigned to specified users, optionally filtered by project key and status
Get detailed information about a specific Jira ticket
Get available state transitions for a Jira ticket
Reassign a Jira ticket to a different user
Transition a Jira ticket to a new state
Output schemas not documented. Tools return JSON strings but LLMs cannot predict field structure (e.g., getTasks returns {total, issues[{key, summary, status, assignee, priority}]} but this is invisible to the agent). Forces LLMs to guess or parse unstructured output.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools clearly split into read (getTasks, getTicket, getTransitions) and write (transitionTicket, addComment, reassign) but LLMs cannot see this distinction without annotations. Agents may incorrectly retry destructive operations.
Parameter descriptions include example values (e.g. 'Instance name (e.g. "hi", "geo")') which LLMs frequently reuse literally in real calls. Should use enum constraints or remove examples.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Error handling lacks recovery guidance. transitionTicket throws 'Transition not found' with available options (good), but other tools return raw JSON or generic errors. No categorization of retryable vs. fatal errors.
getTransitions description is minimal ('Get available state transitions for a Jira ticket'), lacks context on when to call it or what to do with results. Should explain it's a discovery tool to call before transitionTicket.