mcp-jira-stdio
This server integrates Jira with the Model Context Protocol (MCP), enabling comprehensive project and issue management directly through Claude.
Core Capabilities:
Project Management: List accessible projects, retrieve detailed project information (components, versions, roles, insights), and filter recent projects
Issue Operations: Retrieve, search (via JQL), create, and update issues with support for custom fields, assignees, priorities, labels, and components. Create subtasks with automatic project and type detection, and view issues assigned to the current user
Comments: Add comments to issues with optional visibility restrictions by group or role
Metadata & Discovery: Retrieve issue types, priorities, statuses, custom fields, and create metadata for projects. Discover required fields and allowed values before creating issues
User Search: Search for users by name, email, username, or account ID
Special Features:
Auto-formatted descriptions: Automatic conversion of plain text to Atlassian Document Format (ADF) with heading, list, and link detection
Smart issue key parsing: Accepts both issue keys (PROJECT-123) and full Jira URLs
Pagination support: Efficiently handles large result sets across searches and queries
Flexible authentication: Supports Jira Cloud via API tokens
Provides comprehensive tools for managing Jira issues, projects, and workflows including creating and updating issues, searching with JQL, managing comments, retrieving project information, and handling user assignments and metadata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-jira-stdiocreate a new bug ticket for the login page issue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Jira Server
A Model Context Protocol (MCP) server for Jira API integration. Enables reading, writing, and managing Jira issues and projects directly from your MCP client (e.g., Claude Desktop).
⚡ Quick Install for Claude Code
The fastest way to add this MCP server to Claude Code:
claude mcp add jira npx mcp-jira-stdio@latest \
--env JIRA_BASE_URL=https://yourcompany.atlassian.net \
--env JIRA_EMAIL=your-email@example.com \
--env JIRA_API_TOKEN=your-api-tokenReplace the values with your actual Jira credentials:
JIRA_BASE_URL: Your Jira instance URL (e.g.,
https://yourcompany.atlassian.net)JIRA_EMAIL: Your Jira account email
JIRA_API_TOKEN: Your Jira API token (generate here)
That's it! The server will be automatically configured and ready to use.
Alternative: Manual Configuration
If you prefer to configure manually or use Claude Desktop, see the Configuration section below.
Related MCP server: JIRA MCP Tools
🚀 Quick Start
1. Prerequisites
Node.js v20 or higher
Jira instance (Cloud or Server)
Jira API token
2. Installation
# Install from npm
npm install -g mcp-jira-stdio
# Or install locally in your project
npm install mcp-jira-stdioDevelopment Installation
# Clone the repository
git clone https://github.com/freema/mcp-jira-stdio.git
cd mcp-jira-stdio
# Install dependencies
npm install
# or using Task runner
task install
# Build the project
npm run build
# or
task build3. Jira API Setup
Go to your Jira instance settings
Create an API token:
Jira Cloud: Go to Account Settings → Security → Create and manage API tokens
Jira Server: Use your username and password (or create an application password)
Note your Jira base URL (e.g.,
https://yourcompany.atlassian.net)
4. Configuration
Create a .env file from the provided example:
# Copy the example environment file
cp .env.example .env
# Edit .env with your actual Jira credentials
# Or use Task runner:
task envExample .env contents:
JIRA_BASE_URL=https://your-instance.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-tokenNote: Generate your API token at https://id.atlassian.com/manage-profile/security/api-tokens
5. Test Connection
# Test Jira connection
task jira:test
# List visible projects
task jira:projects6. Configure MCP Client
For Claude Code
Use the quick install command (recommended):
claude mcp add jira npx mcp-jira-stdio@latest \
--env JIRA_BASE_URL=https://yourcompany.atlassian.net \
--env JIRA_EMAIL=your-email@example.com \
--env JIRA_API_TOKEN=your-api-tokenFor Claude Desktop
Add to your Claude Desktop config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"jira": {
"command": "mcp-jira-stdio",
"env": {
"JIRA_BASE_URL": "https://your-instance.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}Alternative: Using npx
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["mcp-jira-stdio"],
"env": {
"JIRA_BASE_URL": "https://your-instance.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}Restart Claude Desktop after adding the configuration.
📦 Available Tools
Projects
jira_get_visible_projects: Retrieves all projects visible to the user.jira_get_project_info: Retrieves detailed information about a project (components, versions, roles, insights).
Issues
jira_get_issue: Retrieve issue details by key (supports optional fields/expand).jira_search_issues: Search for Jira issues using JQL with pagination and fields.jira_create_issue: Create a new issue in a project (type, priority, assignee, labels, components).jira_update_issue: Update an existing issue (summary, description, priority, assignee, labels, components).jira_create_subtask: Create a subtask under a parent issue (auto-detects subtask type).
Comments
jira_add_comment: Add a comment to an issue (optional visibility by group/role).
Metadata & Users
jira_get_create_meta: Get create metadata for a project showing all available fields (including custom fields) with their allowed values. Essential for discovering required fields before creating issues.jira_get_issue_types: List issue types (optionally per project).jira_get_users: Search for users (by query, username, or accountId).jira_get_priorities: List available priorities.jira_get_statuses: List available statuses (global or project-specific).jira_get_custom_fields: List all custom fields in Jira with their types and schemas.
My Work
jira_get_my_issues: Retrieve issues assigned to the current user (sorted by updated).
🛠️ Development
Development Commands
# Development mode with hot reload
npm run dev
task dev
# Build for production
npm run build
task build
# Type checking
npm run typecheck
task typecheck
# Linting
npm run lint
task lint
# Format code
npm run format
task fmt
# Run all checks
npm run check
task checkMCP Inspector
Debug your MCP server using the inspector:
# Run inspector (production build)
npm run inspector
task inspector
# Run inspector (development mode)
npm run inspector:dev
task inspector:devNotes:
Startup no longer blocks on Jira connectivity. If Jira env vars are missing, the server still starts and lists tools; tool calls will fail with a clear auth error until you set
JIRA_BASE_URL,JIRA_EMAIL, andJIRA_API_TOKEN.Connection testing runs only in development/test (
NODE_ENV=developmentortest). Failures are logged but do not terminate the server, so the inspector can still display tools.
Testing
# Run tests
npm test
task test
# Run tests with coverage
npm run test:coverage
task test:coverage
# Watch mode
npm run test:watch
task test:watch📋 Project Structure
src/
├── index.ts # Entry point & MCP server setup
├── config/
│ └── constants.ts # API configuration & constants
├── tools/
│ ├── index.ts # Tool exports
│ └── get-visible-projects.ts # Get visible projects tool
├── types/
│ ├── common.ts # Common types & interfaces
│ ├── jira.ts # Jira API types
│ └── tools.ts # Tool input/output schemas
└── utils/
├── jira-auth.ts # Jira authentication & client
├── validators.ts # Input validation with Zod
├── formatters.ts # Response formatting
├── error-handler.ts # Error handling
└── api-helpers.ts # Jira API helpers🔧 Tool Usage Examples
Get Visible Projects
// List all projects
jira_get_visible_projects({});
// List projects with additional details
jira_get_visible_projects({
expand: ['description', 'lead', 'issueTypes'],
});
// List recent projects only
jira_get_visible_projects({
recent: 10,
});❗ Troubleshooting
Common Issues
"Authentication failed"
Verify your API token is correct
Check that your email matches your Jira account
Ensure your Jira base URL is correct (no trailing slash)
"Connection failed"
Verify your Jira instance is accessible
Check network connectivity
Ensure Jira REST API is enabled
"Permission denied"
Verify your account has the necessary permissions
Check project permissions in Jira
Ensure you're using the correct Jira instance
MCP Connection Issues
Ensure you're using the built version (
dist/index.js)Check that Node.js path is correct in Claude Desktop config
Look for errors in Claude Desktop logs
Use
task inspectorto debug
Timeout when running multiple instances with npx
If you're running multiple Claude Code sessions simultaneously and experience timeouts, this is caused by npx cache/registry locking — not the MCP server itself. Each instance tries to verify the package, causing conflicts. To fix this, install the package globally instead:
npm install -g mcp-jira-stdio
claude mcp add jira mcp-jira-stdio \
--env JIRA_BASE_URL=... \
--env JIRA_EMAIL=... \
--env JIRA_API_TOKEN=...Debug Commands
# Test Jira connection
task jira:test
# List projects (test API connectivity)
task jira:projects
# Run MCP inspector for debugging
task inspector:dev
# Check all configuration
task checkIf the inspector shows an SSE error and the server exits immediately, ensure you are not forcing an early exit with invalid credentials. With the current behavior, the server should not exit on missing credentials; export your Jira vars to exercise the tools:
export JIRA_BASE_URL="https://your-instance.atlassian.net"
export JIRA_EMAIL="your-email@example.com"
export JIRA_API_TOKEN="your-api-token"
npm run inspector🔍 Environment Variables
Variable | Required | Description | Example |
| Yes | Jira instance URL |
|
| Yes | Your Jira email |
|
| Yes | Jira API token |
|
| No | Environment mode |
|
🤝 Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Run tests and linting (
task check)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
📄 License
This project is licensed under the MIT License — see the LICENSE file for details.
MCP Config Setup
Configure Claude Desktop to use this MCP server interactively:
npm run setup:mcpThe script will:
Build the project if needed and detect your Node path
Prompt for
JIRA_BASE_URL,JIRA_EMAIL,JIRA_API_TOKENSave a
jiraentry into your Claude Desktop config or print the JSONOptionally generate a local
.envfor development
Available Tools
23 toolsjira_add_attachmentA
Uploads an attachment (image, document, etc.) to a Jira issue.
EFFICIENT METHOD (recommended for large files):
fileUrl: Provide URL to remote file - MINIMAL tokens (~60 tokens) Example: Upload to Dropbox/S3/imgur first, then provide URL
DIRECT METHOD (for small files):
content: Base64 encoded content - WARNING: HIGH token cost (~330,000 tokens for 1MB file) Only suitable for small files (< 500 KB)
Returns attachment metadata including ID and download URL. To reference the image in a comment or description, use wiki markup: !filename.png! or !filename.png|thumbnail!
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Base64-encoded or plain text content. WARNING: HIGH token cost (~330k tokens for 1MB file). Use fileUrl for large files or upload to cloud storage first. | |
| fileUrl | No | URL to download file from (efficient for remote files, ~60 tokens). Upload large files to Dropbox/S3/imgur first, then use URL. | |
| filename | Yes | Name of the file to attach | |
| isBase64 | No | Whether content is base64-encoded (default: true). Set to false for plain text files. | |
| issueKey | Yes | Issue key to add attachment to (e.g., PROJECT-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses token cost implications for content vs fileUrl, and explains the isBase64 parameter. It describes return metadata and how to reference images. This goes beyond the minimal annotations (readOnlyHint: false) to provide full behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, bullet points, and examples. Every sentence provides essential information without redundancy. It is concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 5 parameters and no output schema, the description fully covers usage, trade-offs, token costs, and return value (attachment metadata with ID and download URL). No gaps in understanding for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema description coverage, the description adds significant value: token cost estimates, usage recommendations for fileUrl vs content, and explanation of isBase64 default behavior. This helps the agent understand parameter trade-offs beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Uploads an attachment (image, document, etc.) to a Jira issue.' It distinguishes between two methods (fileUrl vs content) and provides token cost warnings, making the purpose unambiguous and differentiating from sibling tools like jira_get_attachments or jira_delete_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use each method: 'EFFICIENT METHOD (recommended for large files)' with fileUrl, and 'DIRECT METHOD (for small files)' with content. It also warns about token costs and provides examples, helping the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_add_commentA
Adds a comment to an issue. Supports visibility restrictions for groups or roles. Comment format is controlled by the "format" parameter (default: markdown). Returns the created comment with author details and timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Comment body text | |
| format | No | Comment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown" | markdown |
| issueKey | Yes | Issue key to add comment to | |
| visibility | No | Comment visibility restrictions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the tool returns the created comment with author details and timestamp, and indicates format conversion behavior, adding value beyond the annotations (which only state readOnlyHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the primary action and providing key details without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, nested object, no output schema), the description covers return values and core behavior, though it lacks details on error handling or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the description adds marginal information (e.g., default format) beyond what the schema already provides, meeting the baseline for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Adds a comment to an issue' with a specific verb and resource, and it distinguishes itself from sibling tools like jira_get_comments (reading) and jira_create_issue (creating different entity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions visibility restrictions and format control, providing context for use, but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_create_issueA
Creates a new Jira issue in the specified project. Supports setting issue type, priority, assignee, labels, components, and custom fields. Description format is controlled by the "format" parameter (default: markdown). For required custom fields, supply them via customFields (e.g., { "customfield_12345": { id: "..." } }). Returns the created issue with all details.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown" | markdown |
| labels | No | Issue labels | |
| summary | Yes | Issue summary/title | |
| assignee | No | Assignee account ID | |
| priority | No | Issue priority | |
| issueType | Yes | Issue type (e.g., Bug, Story, Task) | |
| components | No | Component names | |
| projectKey | Yes | Project key where the issue will be created | |
| description | No | Issue description. Accepts plain text or ADF object. | |
| returnIssue | No | When false, skip fetching full issue after creation | |
| customFields | No | Additional Jira field mappings, e.g. { "customfield_12345": value }. Use for required custom fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, indicating mutation. The description adds context about the format parameter controlling description format and how to supply custom fields. It does not contradict annotations. However, it omits side effects like notifications or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a short detail on format and custom fields. Front-loaded with core purpose, then lists features. Every sentence is informative and concise, no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the description covers most aspects: creation, supported fields, format control, custom fields, and states the return. It could benefit from mentioning required parameters explicitly, but the schema already marks them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions. The description adds value by grouping supported features and explaining the format parameter's role and custom fields usage with an example. It goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource combination: 'Creates a new Jira issue in the specified project.' It lists supported features (type, priority, assignee, etc.) and distinguishes from siblings like jira_update_issue and jira_create_subtask by focusing on creation in a project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating issues, but does not explicitly state when to use this tool versus alternatives like jira_create_subtask, jira_create_issue_link, or jira_get_create_meta. No when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_create_issue_linkA
Creates a link between two Jira issues. Supports common link types like "blocks", "relates", "duplicates", and "clones". Use this to establish relationships between issues.
| Name | Required | Description | Default |
|---|---|---|---|
| toIssue | Yes | Target issue key | |
| linkType | Yes | Link type: "blocks", "is blocked by", "relates", "duplicates", "clones", or custom link type name | |
| fromIssue | Yes | Source issue key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation), and the description adds that it creates a link and lists supported types. However, it doesn't disclose side effects (e.g., if link already exists) or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states action and resource, second provides examples and usage hint. No verbose or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 3 required params and no output schema. The description covers purpose and supported types, but lacks mention of the return value/response format, which would help complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds no new semantic meaning beyond already documented parameter descriptions. The mention of common link types is partially redundant with the schema's enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Creates' and the resource 'a link between two Jira issues', lists supported link types, and is distinct from sibling tools that handle issue CRUD or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to establish relationships between issues' which gives context, but lacks when-not-to-use, prerequisites (like both issues must exist), or alternatives. No explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_create_subtaskA
Creates a subtask under an existing parent issue. Automatically determines the correct project and subtask issue type. Supports setting priority, assignee, labels, and components. Description format is controlled by the "format" parameter (default: markdown).
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown" | markdown |
| labels | No | Subtask labels | |
| summary | Yes | Subtask summary/title | |
| assignee | No | Assignee account ID | |
| priority | No | Subtask priority | |
| components | No | Component names | |
| description | No | Subtask description. Accepts plain text or ADF object. | |
| parentIssueKey | Yes | Parent issue key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false). The description adds behavioral context (automatic project/type detection, format control) but lacks details on auth requirements, rate limits, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with action and key features. Efficient use of words, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description doesn't mention return values or error handling. Covers main points but lacks completeness for a tool with 8 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so descriptions already document parameters. The description adds value by highlighting the format parameter's role but does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a subtask under an existing parent issue, with automatic project and issue type detection. It distinguishes from siblings like jira_create_issue (top-level) and jira_update_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for subtasks but does not explicitly state when to use this tool vs alternatives (e.g., jira_create_issue). No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_delete_attachmentADestructive
Deletes an attachment from Jira by its attachment ID. Use jira_get_attachments to find attachment IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| attachmentId | Yes | ID of the attachment to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal destructiveHint=true and readOnlyHint=false. Description simply says 'Deletes', which is consistent but adds no additional behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loading the action. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and no output schema, the description provides all necessary context: what it does and how to obtain the input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers attachmentId parameter 100% with description 'ID of the attachment to delete'. Description does not add extra meaning like format or source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Deletes' and resource 'attachment' with method 'by its attachment ID'. References sibling tool jira_get_attachments for ID retrieval, distinguishing it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use jira_get_attachments to find attachment IDs, but does not mention when not to use this tool or any prerequisites like permissions. Context is clear, but no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_attachmentsARead-only
Lists all attachments on a Jira issue. Returns attachment metadata including filename, size, MIME type, author, and download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | Issue key to get attachments for (e.g., PROJECT-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context beyond stating it returns metadata. No mention of pagination, rate limits, or preconditions beyond what is obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, and every word adds value. No wasted or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema), the description is complete. It explains the action, scope, and return data, making it fully self-contained for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter issueKey, and the description does not add additional meaning beyond the schema's description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'lists' and resource 'attachments on a Jira issue', and specifies the returned metadata (filename, size, MIME type, author, download URL). It distinguishes this tool from sibling tools like jira_add_attachment and jira_delete_attachment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when to avoid or which sibling tools to consider instead. The description relies on context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_commentsARead-only
Retrieves all comments for a Jira issue. Returns comment author, content, timestamps, and visibility settings. Supports pagination for issues with many comments.
| Name | Required | Description | Default |
|---|---|---|---|
| orderBy | No | Sort order for comments: "created" (oldest first), "-created" (newest first) | |
| startAt | No | Index of first comment to return (for pagination) | |
| issueKey | Yes | Issue key to get comments for (e.g., PROJECT-123) | |
| maxResults | No | Maximum number of comments to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is clear. Description adds that it returns specific details (author, content, timestamps, visibility) and supports pagination. No contradictions; adds useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the action and output. Every sentence adds value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately lists returned fields and pagination. All parameters are documented in schema. Could mention ordering but it's in schema. Overall sufficient for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description mentions pagination support but does not add meaning beyond the schema's parameter descriptions. No parameter-specific extra detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves all comments for a Jira issue, specifies returned fields (author, content, timestamps, visibility), and distinguishes from sibling tools like jira_add_comment (write) or jira_get_issue (issue details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides context that it supports pagination for many comments, implying when to use pagination parameters. However, it does not explicitly exclude alternatives or state when not to use it. Clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_create_metaARead-only
Retrieves create metadata for a project, showing all available fields (including custom fields) for creating issues. Shows required vs optional fields, field types, and allowed values. Use this before creating issues to discover what fields are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | Yes | Project key to get create metadata for | |
| issueTypeName | No | Specific issue type name to get metadata for (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to restate that. It adds some detail about showing required vs optional fields, types, and allowed values, but lacks auth or rate limit info. Adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main purpose, followed by detail and usage guidance. Every sentence adds value without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description explains what is returned (fields, types, allowed values). It could be more explicit about the scope per issue type, but it is fairly complete for a read-only tool with only two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description aligns with the schema but does not add new semantics beyond what's in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves create metadata for a project, showing all available fields including custom fields. It distinguishes from siblings like jira_get_issue_types and jira_get_custom_fields by being project-specific and focused on issue creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it before creating issues, providing clear context. It does not mention when not to use or name alternatives, but the context is strong so it earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_custom_fieldsARead-only
Retrieves all custom fields available in Jira. Shows custom field names, IDs (e.g., customfield_10071), and types. Useful for discovering what custom fields exist and their identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Project key to filter custom fields (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's statement of 'retrieves' is consistent. The description adds that it shows fields and their identifiers, but does not disclose any additional behavioral traits such as pagination, performance implications, or that the filter is optional. This is adequate but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loading the main action in the first sentence, then details, then usage context. Every sentence adds value; no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (one parameter, no output schema, read-only), the description adequately covers what it does and returns. It could mention that it returns a list or array, but the overall completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single optional parameter projectKey with a clear description. The tool description does not add any extra semantic meaning beyond what the schema provides (e.g., examples, value constraints). With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all Jira custom fields and enumerates what information it returns (names, IDs, types). It distinguishes itself from sibling tools like jira_get_issue_types or jira_get_priorities which return different metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use case ('useful for discovering what custom fields exist'), but does not explicitly state when to use this tool over alternatives or note any prerequisites. Since there is no direct sibling for custom fields, the lack of comparison is acceptable, but more explicit guidance would improve score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issueARead-only
Retrieve details for a specific Jira issue by key or URL. Use this when the user mentions an issue like "PAYWALL-943" or pastes a Jira link (e.g., https://your.atlassian.net/browse/PAYWALL-943). Returns status, assignee, priority, project, type, labels, components, timestamps, and description.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional issue details to include | |
| fields | No | Specific fields to retrieve | |
| issueKey | Yes | Issue key or full Jira URL (e.g., PROJECT-123 or https://your.atlassian.net/browse/PROJECT-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so description needn't repeat. Adds that it returns status, assignee, etc., which is useful but not critical beyond schema. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. First sentence states action, second provides usage example and return summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: how to invoke (key/URL), what is returned. Lacks mention of expand/fields parameter customization, but sufficient for simple retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all 3 parameters, so baseline is 3. The tool description does not add extra meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Retrieve details for a specific Jira issue' with specific verb and resource. Distinguishes from siblings like jira_search_issues which searches multiple issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when the user mentions an issue...' providing clear context. Lacks explicit exclusions but given sibling list, alternatives are implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_graphARead-only
Build a dependency/relationship graph starting from a seed issue. Returns a map of connected issues (parent/child hierarchy, blocks, relates to, duplicates, etc.) with nodes and edges, plus a Mermaid diagram for visualization. Use this to understand how issues are connected across epics, stories, and subtasks.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | Seed issue key to start graph traversal from (e.g., PROJECT-123) | |
| maxDepth | No | Maximum BFS traversal depth from seed issue (default: 2, max: 5) | |
| maxNodes | No | Maximum number of nodes to include in the graph (default: 50, max: 200) | |
| direction | No | Which link directions to follow: "all", "inward", or "outward" (default: "all") | all |
| linkTypes | No | Filter to specific link types (e.g., ["Blocks", "Relates"]). If omitted, includes all link types. | |
| includeHierarchy | No | Include parent/child/subtask edges (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds behavioral details about the output (map, nodes, edges, Mermaid diagram) but does not disclose potential performance implications or link traversal limits beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and output, followed by the use case. Every sentence is valuable and concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description briefly mentions the return format (map, nodes, edges, Mermaid) but lacks details on structure (e.g., keys in map, fields in nodes/edges). With 6 parameters and a graph tool, more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters are fully described in the schema (100% coverage). The description adds no additional meaning beyond the schema, which already explains each parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool builds a dependency/relationship graph from a seed issue and returns a map with nodes, edges, and a Mermaid diagram. It distinguishes itself from sibling tools like jira_get_issue or jira_search_issues, which are for single issues or search, making it unique for connectivity analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to understand how issues are connected across epics, stories, and subtasks,' providing clear context. It does not mention when not to use or alternative tools, but the sibling list implies alternatives for simpler needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_typesARead-only
Retrieves available issue types. Can get global issue types or project-specific issue types including regular issues and subtasks (Bug, Story, Task, Epic, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Project key to get issue types for specific project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is read-only. The description adds valuable behavioral context: the ability to retrieve either global or project-specific issue types, including subtasks. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and efficiently convey the two modes of operation with examples. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one optional parameter and no output schema, the description covers all necessary information: purpose, modes, and examples. It is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the only parameter 'projectKey' with a good description. The description adds meaning by explaining the difference between using the parameter (project-specific) and omitting it (global), which goes beyond the schema's simple statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves available issue types, distinguishes between global and project-specific, and provides concrete examples (Bug, Story, Task, Epic). It is a specific verb+resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the optional projectKey parameter (for project-specific types) vs global types. However, it does not explicitly mention when to use this tool over siblings, though siblings are distinct enough that confusion is unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_my_issuesARead-only
Retrieves issues assigned to current user, sorted by most recently updated first. Supports pagination and field selection. For pagination, use nextPageToken from previous response.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional details to include | |
| fields | No | Specific fields to retrieve | |
| maxResults | No | Maximum number of results to return per page | |
| nextPageToken | No | Token for pagination. Omit for first page, use value from previous response for next page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, confirming the tool is read-only. The description adds behavioral details like sorting by recency and pagination support (nextPageToken). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. Every sentence adds essential information: first sentence covers main function and sorting, second covers pagination. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers sorting, pagination, and field selection. It lacks mention of the return structure (list of issues with fields), but the pagination token hints at the response format. Reasonably complete for a read-only tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explicitly stating how to use nextPageToken for pagination ('use from previous response'), which is not fully captured in schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves issues assigned to the current user, sorted by most recent update, and supports pagination and field selection. This distinguishes it from siblings like jira_search_issues (arbitrary search) and jira_get_issue (single issue).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic context (user's own issues, sorted by update) but lacks explicit guidance on when to use versus alternatives. It does not mention exclusions or contrast with search or get_issue, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_prioritiesARead-only
Retrieves available priorities (e.g., Highest, High, Medium, Low, Lowest). Returns IDs, names, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description confirms a read operation (Retrieves...). The description adds no additional behavioral context, but annotations cover the key safety trait sufficiently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core action. Every element is necessary and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, has annotations, and the description specifies return fields (IDs, names, descriptions), the description is fully complete for this simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so per guidelines baseline is 4. The description does not need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves available priorities with examples (Highest, High, etc.) and specifies what is returned (IDs, names, descriptions). It differentiates from sibling tools by focusing solely on priorities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving priority options but does not explicitly state when or when not to use it, nor does it mention alternatives. However, given the tool's simplicity and uniqueness among siblings, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_project_infoARead-only
Retrieves detailed information about a project (components, versions, issue types, roles, insights). More comprehensive than the basic project list.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional project details to include | |
| projectKey | Yes | Project key to get detailed information for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation by specifying the exact details retrieved (components, versions, etc.). However, it does not cover other behavioral traits like authentication or rate limits, which are less critical given the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence. It is concise, front-loaded with the core action, and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description lists key return elements. It does not mention pagination or size limits, but these are less relevant for a single-project retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (expand, projectKey) are described in the input schema with 100% coverage. The description does not add additional meaning or examples, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves detailed project information, listing specific data types (components, versions, etc.). It distinguishes itself from the sibling tool 'jira_get_visible_projects' by noting it is more comprehensive than the basic project list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (for detailed info) versus the basic list, but does not explicitly mention when not to use it or provide alternative tools for other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_statusesARead-only
Retrieves available statuses (global or project-specific, e.g., To Do, In Progress, Done). Returns status categories and workflow information.
| Name | Required | Description | Default |
|---|---|---|---|
| projectKey | No | Project key to get statuses for specific project | |
| issueTypeId | No | Issue type ID to get statuses for specific issue type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's addition of 'Returns status categories and workflow information' adds some context but is minimal. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that covers purpose, scope, and return information without any waste. Front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with no output schema, the description gives a high-level idea of return values (status categories, workflow info). Lacks details like active statuses only, but adequate given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description does not add extra meaning beyond what's in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Retrieves available statuses' with verb and resource. Provides examples (To Do, In Progress, Done) and distinguishes between global and project-specific. No sibling tool covers statuses alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives like jira_get_transitions. The description only states what it does, lacking context for when-not or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_transitionsARead-only
Retrieves all available workflow transitions for a Jira issue. Use this to discover which status changes are possible for an issue before calling jira_transition_issue.
| Name | Required | Description | Default |
|---|---|---|---|
| issueKey | Yes | Issue key to get available transitions for (e.g., PROJECT-123) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Retrieves', which is consistent with the readOnlyHint annotation. It adds useful context about discovering possible transitions, though no further behavioral details are needed given the annotations cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the purpose and usage guidance without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description adequately covers purpose and usage. However, it could mention that the output is a list of transitions with IDs and names, though not strictly required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter issueKey already described in the schema. The description does not add additional parameter semantics, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieves all available workflow transitions for a Jira issue' with a specific verb and resource. It distinguishes itself from siblings by explicitly mentioning jira_transition_issue as a related tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this to discover which status changes are possible for an issue before calling jira_transition_issue.' This tells the agent when to use it and identifies the sibling to use afterward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_usersARead-only
Search for users by name, email, username, or account ID. Returns display name, email, account status, and account type. Supports pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for user name or email | |
| startAt | No | Index of first result to return | |
| username | No | Specific username to search for | |
| accountId | No | Specific account ID to search for | |
| maxResults | No | Maximum number of results to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, so the tool is safe. The description adds value by listing return fields (display name, email, account status, account type) and mentioning pagination support, which goes beyond the annotation. It does not detail potential errors or rate limits, but for a read-only search tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence clearly states the purpose and search options, the second covers return fields and pagination. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description covers return fields adequately. It mentions pagination and all search parameter options. No required parameters, so no missing prerequisites. For a search tool with simple inputs, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds context by grouping search criteria (name, email, username, account ID) and highlighting pagination, which is not explicitly aggregated in the schema. This adds marginal value over the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for users' specifying the verb and resource, and lists multiple search criteria (name, email, username, account ID) and return fields. It distinguishes itself from sibling tools like jira_search_issues and jira_get_visible_projects which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for user searches but does not explicitly state when to use this tool over alternatives. No guidance on prerequisites or specific scenarios is provided. Sibling tools are all about issues or projects, so the intent is clear but not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_visible_projectsBRead-only
Retrieves all projects accessible to the authenticated user. Returns project keys, names, descriptions, and basic metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional project details to include | |
| recent | No | Limit to recently accessed projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, and the description adds that it returns project metadata. However, it does not disclose potential pagination behavior, rate limiting, or performance implications beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one clear sentence that covers the core purpose and output. It is efficient, though adding structure (e.g., listing returned fields) could slightly improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately explains the return value (keys, names, descriptions, metadata) despite no output schema. However, it omits details on pagination, ordering, or result limits, leaving some gaps for a list retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions already present. The description does not add extra meaning or usage context for 'expand' or 'recent' beyond what the schema provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (retrieves), the resource (all projects accessible to the authenticated user), and the specific data returned (keys, names, descriptions, basic metadata). This distinguishes it from sibling tools like jira_get_project_info which targets a single project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus its siblings (e.g., jira_get_project_info for single project details). The description implies it's for listing, but lacks when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_search_issuesARead-only
Search for Jira issues using JQL. Supports complex queries with pagination and field selection. Examples: "project = PROJECT AND status = Open", "assignee = currentUser()". For pagination, use nextPageToken from previous response.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | Yes | JQL query string | |
| expand | No | Additional details to include | |
| fields | No | Specific fields to retrieve | |
| maxResults | No | Maximum number of results to return per page | |
| nextPageToken | No | Token for pagination. Omit for first page, use value from previous response for next page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that it supports complex queries, pagination, and field selection. It does not contradict annotations and adds useful behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences plus an example, front-loaded with the main purpose. Every word adds value, and there is no redundancy or wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 parameters and no output schema, the description covers usage well. It lacks explicit output format details, but the tool name and sibling patterns imply the return structure. Acceptable for a read-only search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented. The description adds value by explaining pagination token usage and providing JQL examples, which enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for Jira issues using JQL, which is a specific verb+resource combination. It distinguishes from siblings like jira_get_issue (single issue) and jira_get_my_issues (filtered).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of JQL queries and explains pagination with nextPageToken. While it does not explicitly list alternatives, the context from sibling names implies when to use this tool versus others for single issues or filtered lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_transition_issueA
Transitions a Jira issue to a new workflow status (e.g., "To Do" -> "In Progress" -> "Done"). Use jira_get_transitions first to discover available transitions. Supports adding a comment and setting resolution during the transition.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Comment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown" | markdown |
| comment | No | Optional comment to add when transitioning the issue | |
| issueKey | Yes | Issue key to transition (e.g., PROJECT-123) | |
| resolution | No | Resolution name when transitioning to a resolved/done status (e.g., "Done", "Fixed") | |
| transitionId | No | ID of the transition to perform. Use jira_get_transitions to find available transition IDs. | |
| transitionName | No | Name of the transition to perform (e.g., "In Progress", "Done"). Case-insensitive. Alternative to transitionId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutation (readOnlyHint=false). The description adds context by explaining that the tool supports adding a comment and setting resolution during the transition, going beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the main purpose, and each sentence serves a clear function (purpose and prerequisite/options). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema), the description covers the core functionality and prerequisite. It does not explain return values, which is acceptable since there is no output schema to document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description does not add significant meaning beyond the schema, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool transitions a Jira issue to a new workflow status, using a specific verb and resource. It distinguishes from sibling tools like create_issue or update_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using jira_get_transitions first to discover available transitions, providing clear usage guidance. It does not mention when not to use it, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_update_issueA
Updates an existing Jira issue by its key. Supports updating summary, description, priority, assignee, labels, and components. Description format is controlled by the "format" parameter (default: markdown). Only specified fields will be updated.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Description format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown" | markdown |
| labels | No | New labels (replaces existing) | |
| parent | No | New parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent. | |
| summary | No | New summary | |
| assignee | No | New assignee account ID | |
| issueKey | Yes | Issue key to update | |
| priority | No | New priority | |
| components | No | New components (replaces existing) | |
| description | No | New description. Accepts plain text or ADF object. | |
| returnIssue | No | When false, skip fetching full issue after update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, which matches the update behavior. The description adds that description format is controlled by a parameter and only specified fields are updated, but does not disclose potential side effects like triggers, permissions, or return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover purpose, supported fields, and format details without redundancy. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters and no output schema, the description covers the core update operation well. It lacks mention of return value or failure behavior, but is otherwise complete for the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds a high-level overview of supported fields, but does not provide significant new meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing Jira issue by key and lists supported fields (summary, description, priority, assignee, labels, components), distinguishing it from sibling tools like jira_create_issue (create) and jira_transition_issue (status change).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need to modify specific fields of an existing issue, but it does not explicitly exclude alternatives like jira_transition_issue for status changes or jira_add_comment for comments. It states 'Only specified fields will be updated' which guides partial updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
23 tool updates
v1.11.0- Changed
jira_add_attachment7 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / contentAdded value: +{ + "description": "Base64-encoded or plain text content. WARNING: HIGH token cost (~330k tokens for 1MB file). Use fileUrl for large files or upload to cloud storage first.", + "type": "string" +} - added
Input schema / properties / fileUrlAdded value: +{ + "description": "URL to download file from (efficient for remote files, ~60 tokens). Upload large files to Dropbox/S3/imgur first, then use URL.", + "format": "uri", + "type": "string" +} - added
Input schema / properties / filenameAdded value: +{ + "description": "Name of the file to attach", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / isBase64Added value: +{ + "default": true, + "description": "Whether content is base64-encoded (default: true). Set to false for plain text files.", + "type": "boolean" +} - added
Input schema / properties / issueKeyAdded value: +{ + "description": "Issue key to add attachment to (e.g., PROJECT-123)", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "issueKey", + "filename" +]
- Changed
jira_add_comment2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / visibility / additionalPropertiesRemoved value: -false
- Changed
jira_create_issue3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / customFields / propertyNamesAdded value: +{ + "type": "string" +} - changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - } -]New value: +[ + { + "type": "string" + }, + {} +]
- Changed
jira_create_issue_link1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_create_subtask2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - } -]New value: +[ + { + "type": "string" + }, + {} +]
- Changed
jira_delete_attachment1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_attachments1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_comments1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_create_meta1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_custom_fields1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_issue1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_issue_graph1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_issue_types1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_my_issues1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_priorities1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_project_info1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_statuses1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_transitions1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_users1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_get_visible_projects1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_search_issues1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
jira_transition_issue8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / commentAdded value: +{ + "description": "Optional comment to add when transitioning the issue", + "type": "string" +} - added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Comment format: \"markdown\" (converts Markdown to ADF), \"adf\" (use as-is ADF object), \"plain\" (converts plain text to ADF with basic formatting). Default: \"markdown\"", + "enum": [ + "markdown", + "adf", + "plain" + ], + "type": "string" +} - added
Input schema / properties / issueKeyAdded value: +{ + "description": "Issue key to transition (e.g., PROJECT-123)", + "type": "string" +} - added
Input schema / properties / resolutionAdded value: +{ + "description": "Resolution name when transitioning to a resolved/done status (e.g., \"Done\", \"Fixed\")", + "type": "string" +} - added
Input schema / properties / transitionIdAdded value: +{ + "description": "ID of the transition to perform. Use jira_get_transitions to find available transition IDs.", + "type": "string" +} - added
Input schema / properties / transitionNameAdded value: +{ + "description": "Name of the transition to perform (e.g., \"In Progress\", \"Done\"). Case-insensitive. Alternative to transitionId.", + "type": "string" +} - added
Input schema / requiredAdded value: +[ + "issueKey" +]
- Changed
jira_update_issue2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - } -]New value: +[ + { + "type": "string" + }, + {} +]
23 tool updates
v1.10.2- Added
jira_add_attachment - Changed
jira_add_comment8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Comment format: \"markdown\" (converts Markdown to ADF), \"adf\" (use as-is ADF object), \"plain\" (converts plain text to ADF with basic formatting). Default: \"markdown\"", + "enum": [ + "markdown", + "adf", + "plain" + ], + "type": "string" +} - changed
Input schema / properties / issueKey / descriptionPrevious value: -"Issue key to add comment to (e.g., PROJECT-123)"New value: +"Issue key to add comment to" - added
Input schema / properties / visibility / additionalPropertiesAdded value: +false - changed
Input schema / properties / visibility / descriptionPrevious value: -"Comment visibility restrictions (optional)"New value: +"Comment visibility restrictions" - changed
Input schema / properties / visibility / properties / type / descriptionPrevious value: -"Visibility type - either \"group\" or \"role\""New value: +"Visibility type" - changed
Input schema / properties / visibility / properties / value / descriptionPrevious value: -"Group name or role name for visibility restriction"New value: +"Group name or role name"
- Changed
jira_create_issue16 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / assignee / descriptionPrevious value: -"Assignee account ID (optional)"New value: +"Assignee account ID" - removed
Input schema / properties / components / defaultRemoved value: -[] - changed
Input schema / properties / components / descriptionPrevious value: -"Component names (optional)"New value: +"Component names" - changed
Input schema / properties / customFields / additionalPropertiesPrevious value: -trueNew value: +{} - changed
Input schema / properties / customFields / descriptionPrevious value: -"Additional Jira fields, e.g. { \"customfield_10071\": value }. Use this to set required custom fields."New value: +"Additional Jira field mappings, e.g. { \"customfield_12345\": value }. Use for required custom fields." - changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "object" - } -]New value: +[ + { + "type": "string" + } +] - changed
Input schema / properties / description / descriptionPrevious value: -"Detailed issue description (optional). Accepts plain text (auto-formatted to ADF) or an ADF document."New value: +"Issue description. Accepts plain text or ADF object." - added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Description format: \"markdown\" (converts Markdown to ADF), \"adf\" (use as-is ADF object), \"plain\" (converts plain text to ADF with basic formatting). Default: \"markdown\"", + "enum": [ + "markdown", + "adf", + "plain" + ], + "type": "string" +} - changed
Input schema / properties / issueType / descriptionPrevious value: -"Issue type name (e.g., Bug, Story, Task, Epic)"New value: +"Issue type (e.g., Bug, Story, Task)" - removed
Input schema / properties / labels / defaultRemoved value: -[] - changed
Input schema / properties / labels / descriptionPrevious value: -"Issue labels (optional)"New value: +"Issue labels" - changed
Input schema / properties / priority / descriptionPrevious value: -"Issue priority name (e.g., High, Medium, Low) - optional"New value: +"Issue priority" - removed
Input schema / properties / returnIssue / defaultRemoved value: -true - changed
Input schema / properties / returnIssue / descriptionPrevious value: -"If false, returns only the issue key without fetching full details"New value: +"When false, skip fetching full issue after creation"
- Added
jira_create_issue_link - Changed
jira_create_subtask13 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / assignee / descriptionPrevious value: -"Assignee account ID (optional)"New value: +"Assignee account ID" - removed
Input schema / properties / components / defaultRemoved value: -[] - changed
Input schema / properties / components / descriptionPrevious value: -"Component names (optional)"New value: +"Component names" - added
Input schema / properties / description / anyOfAdded value: +[ + { + "type": "string" + } +] - changed
Input schema / properties / description / descriptionPrevious value: -"Detailed subtask description (optional)"New value: +"Subtask description. Accepts plain text or ADF object." - removed
Input schema / properties / description / typeRemoved value: -"string" - added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Description format: \"markdown\" (converts Markdown to ADF), \"adf\" (use as-is ADF object), \"plain\" (converts plain text to ADF with basic formatting). Default: \"markdown\"", + "enum": [ + "markdown", + "adf", + "plain" + ], + "type": "string" +} - removed
Input schema / properties / labels / defaultRemoved value: -[] - changed
Input schema / properties / labels / descriptionPrevious value: -"Subtask labels (optional)"New value: +"Subtask labels" - changed
Input schema / properties / parentIssueKey / descriptionPrevious value: -"Parent issue key (e.g., PROJECT-123)"New value: +"Parent issue key" - changed
Input schema / properties / priority / descriptionPrevious value: -"Subtask priority name (e.g., High, Medium, Low) - optional"New value: +"Subtask priority"
- Added
jira_delete_attachment - Added
jira_get_attachments - Added
jira_get_comments - Added
jira_get_create_meta - Added
jira_get_custom_fields - Changed
jira_get_issue6 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / expand / defaultRemoved value: -[] - changed
Input schema / properties / expand / descriptionPrevious value: -"Additional issue details to include (e.g., [\"comments\", \"attachments\", \"changelog\"])"New value: +"Additional issue details to include" - changed
Input schema / properties / fields / descriptionPrevious value: -"Specific fields to retrieve (e.g., [\"summary\", \"status\", \"assignee\"])"New value: +"Specific fields to retrieve" - added
Input schema / properties / issueKey / minLengthAdded value: +1
- Added
jira_get_issue_graph - Changed
jira_get_issue_types4 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / projectKey / descriptionPrevious value: -"Project key to get issue types for specific project (optional - if not provided, returns global issue types)"New value: +"Project key to get issue types for specific project" - removed
Input schema / requiredRemoved value: -[]
- Changed
jira_get_my_issues9 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / expand / defaultRemoved value: -[] - changed
Input schema / properties / expand / descriptionPrevious value: -"Additional details to include for each issue"New value: +"Additional details to include" - changed
Input schema / properties / fields / descriptionPrevious value: -"Specific fields to retrieve for each issue"New value: +"Specific fields to retrieve" - changed
Input schema / properties / maxResults / descriptionPrevious value: -"Maximum number of results to return"New value: +"Maximum number of results to return per page" - added
Input schema / properties / nextPageTokenAdded value: +{ + "description": "Token for pagination. Omit for first page, use value from previous response for next page.", + "type": "string" +} - removed
Input schema / properties / startAtRemoved value: -{ - "default": 0, - "description": "Index of first result to return (for pagination)", - "minimum": 0, - "type": "number" -} - removed
Input schema / requiredRemoved value: -[]
- Changed
jira_get_priorities3 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / requiredRemoved value: -[]
- Changed
jira_get_project_info4 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / expand / defaultRemoved value: -[] - changed
Input schema / properties / expand / descriptionPrevious value: -"Additional project details to include (e.g., [\"description\", \"lead\", \"issueTypes\", \"versions\"])"New value: +"Additional project details to include"
- Changed
jira_get_statuses5 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / issueTypeId / descriptionPrevious value: -"Issue type ID to get statuses for specific issue type (requires projectKey)"New value: +"Issue type ID to get statuses for specific issue type" - changed
Input schema / properties / projectKey / descriptionPrevious value: -"Project key to get statuses for specific project (optional)"New value: +"Project key to get statuses for specific project" - removed
Input schema / requiredRemoved value: -[]
- Added
jira_get_transitions - Changed
jira_get_users5 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / query / descriptionPrevious value: -"Search query for user name or email (partial matches supported)"New value: +"Search query for user name or email" - changed
Input schema / properties / startAt / descriptionPrevious value: -"Index of first result to return (for pagination)"New value: +"Index of first result to return" - removed
Input schema / requiredRemoved value: -[]
- Changed
jira_get_visible_projects8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / expand / defaultRemoved value: -[] - changed
Input schema / properties / expand / descriptionPrevious value: -"Additional project details to include (e.g., [\"description\", \"lead\", \"issueTypes\"])"New value: +"Additional project details to include" - changed
Input schema / properties / recent / descriptionPrevious value: -"Limit results to recently accessed projects (max number)"New value: +"Limit to recently accessed projects" - removed
Input schema / properties / recent / maximumRemoved value: -100 - removed
Input schema / properties / recent / minimumRemoved value: -1 - removed
Input schema / requiredRemoved value: -[]
- Changed
jira_search_issues10 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / expand / defaultRemoved value: -[] - changed
Input schema / properties / expand / descriptionPrevious value: -"Additional details to include for each issue"New value: +"Additional details to include" - changed
Input schema / properties / fields / descriptionPrevious value: -"Specific fields to retrieve for each issue"New value: +"Specific fields to retrieve" - changed
Input schema / properties / jql / descriptionPrevious value: -"JQL query string (e.g., \"project = PROJECT AND status = Open\")"New value: +"JQL query string" - added
Input schema / properties / jql / minLengthAdded value: +1 - changed
Input schema / properties / maxResults / descriptionPrevious value: -"Maximum number of results to return"New value: +"Maximum number of results to return per page" - added
Input schema / properties / nextPageTokenAdded value: +{ + "description": "Token for pagination. Omit for first page, use value from previous response for next page.", + "type": "string" +} - removed
Input schema / properties / startAtRemoved value: -{ - "default": 0, - "description": "Index of first result to return (for pagination)", - "minimum": 0, - "type": "number" -}
- Added
jira_transition_issue - Changed
jira_update_issue14 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / assignee / descriptionPrevious value: -"New assignee account ID (optional, use null string to unassign)"New value: +"New assignee account ID" - changed
Input schema / properties / components / descriptionPrevious value: -"New components array (replaces existing components) - optional"New value: +"New components (replaces existing)" - changed
Input schema / properties / description / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "object" - } -]New value: +[ + { + "type": "string" + } +] - changed
Input schema / properties / description / descriptionPrevious value: -"New issue description (optional). Accepts plain text (auto-formatted to ADF) or an ADF document."New value: +"New description. Accepts plain text or ADF object." - added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Description format: \"markdown\" (converts Markdown to ADF), \"adf\" (use as-is ADF object), \"plain\" (converts plain text to ADF with basic formatting). Default: \"markdown\"", + "enum": [ + "markdown", + "adf", + "plain" + ], + "type": "string" +} - changed
Input schema / properties / issueKey / descriptionPrevious value: -"Issue key to update (e.g., PROJECT-123)"New value: +"Issue key to update" - changed
Input schema / properties / labels / descriptionPrevious value: -"New labels array (replaces existing labels) - optional"New value: +"New labels (replaces existing)" - added
Input schema / properties / parentAdded value: +{ + "description": "New parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent.", + "type": "string" +} - changed
Input schema / properties / priority / descriptionPrevious value: -"New priority name (e.g., High, Medium, Low) - optional"New value: +"New priority" - removed
Input schema / properties / returnIssue / defaultRemoved value: -true - changed
Input schema / properties / returnIssue / descriptionPrevious value: -"If false, returns a success message without fetching the updated issue"New value: +"When false, skip fetching full issue after update" - changed
Input schema / properties / summary / descriptionPrevious value: -"New issue summary/title (optional)"New value: +"New summary"
13 tool updates
- First observed
jira_add_comment - First observed
jira_create_issue - First observed
jira_create_subtask - First observed
jira_get_issue - First observed
jira_get_issue_types - First observed
jira_get_my_issues - First observed
jira_get_priorities - First observed
jira_get_project_info - First observed
jira_get_statuses - First observed
jira_get_users - First observed
jira_get_visible_projects - First observed
jira_search_issues - First observed
jira_update_issue
TDQS
Each tool has a clearly distinct purpose, targeting different resources (projects, issues, comments, attachments, etc.) with specific actions (get, create, update, delete, search). There is no overlap; even similar tools like jira_get_visible_projects and jira_get_project_info serve different levels of detail.
All tools follow a consistent jira_verb_noun pattern in snake_case (e.g., jira_get_issue, jira_create_issue, jira_transition_issue). The verb is always a clear action, and the noun is the resource. No mixing of conventions.
With 23 tools, the count is slightly above the typical well-scoped range (3-15), but it is justified given the breadth of Jira operations covered. The tools are necessary for comprehensive Jira API interaction, and each adds unique functionality.
The toolset covers major CRUD operations (create, update, read, delete attachments) and workflow transitions. However, there is no tool to delete an issue or comment, which are notable gaps. Overall, it provides a solid foundation for Jira management.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for Linear project management and issue tracking
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides capabilities for searching Jira issues using JQL and retrieving detailed issue information.264028MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables interaction with JIRA APIs through Claude Desktop, allowing users to search, create, update, and manage JIRA issues using natural language commands.1-
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables interaction with Jira's REST API using natural language commands, allowing users to manage Jira projects, issues, comments, and workflows through Claude Desktop and other MCP clients.107MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that wraps the jira-cli command-line tool to enable AI assistants to interact with Jira.299MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/freema/mcp-jira-stdio'
If you have feedback or need assistance with the MCP directory API, please join our Discord server