Define tools once, get both CLI and MCP server. The dual-interface framework for AI agent tooling.
Server has 12 tools with explicit Zod schemas and descriptions. Naming follows verb_noun convention (get_repo, list_issues, create_issue, search_code, etc.). All tools have non-empty descriptions (avg ~100 chars). Parameters are typed with Zod and include descriptions. However, several critical gaps: (1) Output schemas are NOT documented, tools return JSON.stringify() with no schema specification for downstream tool chaining; (2) Parameter descriptions lack format/constraint details (e.g., per_page says 'default: 30, max: 100' but no min bound stated); (3) No error handling guidance, execute() blocks have no try-catch or recovery hints; (4) Jira create_issue (tool 8) has file path mismatch (listed as connectors/github/index.ts but should be connectors/jira/index.ts); (5) No pagination cursors or total counts in list tools; (6) Sensitive parameters (GITHUB_TOKEN, Jira credentials) appear to be env-injected correctly, but no explicit secret-injection pattern documented.
Add a comment to a Jira issue.
Create a new issue in a repository. Returns the created issue with its number and URL.
Create a new Jira issue in a project. Returns the created issue key.
Get a Jira issue by key (e.g. SDT-1234). Returns summary, status, assignee, description, and comments.
Get repository details including stars, forks, language, and description.
List available status transitions for a Jira issue.
List issues for a repository, optionally filtered by state and labels.
Output schemas not documented. Tools return JSON.stringify() with no declared response structure. LLMs cannot plan downstream tool chaining or extract required fields (e.g., issue_id from create_issue response).
No error handling or recovery guidance in tool implementations. execute() blocks lack try-catch, validation, or actionable error messages. LLMs receive raw API errors with no guidance on retry strategy or alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
List pull requests for a repository, optionally filtered by state.
Search code across GitHub repositories. Use qualifiers like 'repo:owner/name' or 'language:typescript' in the query.
Search Jira issues using JQL query. Returns matching issues with key fields.
Transition a Jira issue to a new status. Use get_transitions first to find valid transition IDs.
Update fields on an existing Jira issue.
List tools (list_issues, list_pull_requests, search_issues) lack pagination cursors and total counts. Returning all results without limits risks context window exhaustion. No next_cursor or total_count in response schema.
Parameter descriptions lack format constraints and validation rules. E.g., per_page states 'default: 30, max: 100' but no minimum; issue_key format (e.g., 'SDT-1234') not formally specified; JQL query has no syntax guidance.
File path mismatch: Jira create_issue (tool 8) listed as 'connectors/github/index.ts' but should be 'connectors/jira/index.ts'. Indicates incomplete or copy-paste error in tool registration.