Skip to main content
Glama

MCP Jira Server

TypeScript Node License: MIT npm version MCP Server

CI codecov GitHub issues

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-token

Replace 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-stdio

Development 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 build

3. Jira API Setup

  1. Go to your Jira instance settings

  2. 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)

  3. 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 env

Example .env contents:

JIRA_BASE_URL=https://your-instance.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token

Note: 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:projects

6. 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-token

For Claude Desktop

Add to your Claude Desktop config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.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 check

MCP 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:dev

Notes:

  • 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, and JIRA_API_TOKEN.

  • Connection testing runs only in development/test (NODE_ENV=development or test). 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 inspector to 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 check

If 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

JIRA_BASE_URL

Yes

Jira instance URL

https://company.atlassian.net

JIRA_EMAIL

Yes

Your Jira email

user@example.com

JIRA_API_TOKEN

Yes

Jira API token

ATxxx...

NODE_ENV

No

Environment mode

development or production

🤝 Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Run tests and linting (task check)

  4. Commit your changes (git commit -m 'Add some amazing feature')

  5. Push to the branch (git push origin feature/amazing-feature)

  6. 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:mcp

The script will:

  • Build the project if needed and detect your Node path

  • Prompt for JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN

  • Save a jira entry into your Claude Desktop config or print the JSON

  • Optionally generate a local .env for development

Available Tools

23 tools
jira_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!

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoBase64-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.
fileUrlNoURL to download file from (efficient for remote files, ~60 tokens). Upload large files to Dropbox/S3/imgur first, then use URL.
filenameYesName of the file to attach
isBase64NoWhether content is base64-encoded (default: true). Set to false for plain text files.
issueKeyYesIssue key to add attachment to (e.g., PROJECT-123)

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesComment body text
formatNoComment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"markdown
issueKeyYesIssue key to add comment to
visibilityNoComment visibility restrictions

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDescription format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"markdown
labelsNoIssue labels
summaryYesIssue summary/title
assigneeNoAssignee account ID
priorityNoIssue priority
issueTypeYesIssue type (e.g., Bug, Story, Task)
componentsNoComponent names
projectKeyYesProject key where the issue will be created
descriptionNoIssue description. Accepts plain text or ADF object.
returnIssueNoWhen false, skip fetching full issue after creation
customFieldsNoAdditional Jira field mappings, e.g. { "customfield_12345": value }. Use for required custom fields.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDescription format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"markdown
labelsNoSubtask labels
summaryYesSubtask summary/title
assigneeNoAssignee account ID
priorityNoSubtask priority
componentsNoComponent names
descriptionNoSubtask description. Accepts plain text or ADF object.
parentIssueKeyYesParent issue key

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_attachmentA
Destructive

Deletes an attachment from Jira by its attachment ID. Use jira_get_attachments to find attachment IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachmentIdYesID of the attachment to delete

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_attachmentsA
Read-only

Lists all attachments on a Jira issue. Returns attachment metadata including filename, size, MIME type, author, and download URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesIssue key to get attachments for (e.g., PROJECT-123)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_commentsA
Read-only

Retrieves all comments for a Jira issue. Returns comment author, content, timestamps, and visibility settings. Supports pagination for issues with many comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderByNoSort order for comments: "created" (oldest first), "-created" (newest first)
startAtNoIndex of first comment to return (for pagination)
issueKeyYesIssue key to get comments for (e.g., PROJECT-123)
maxResultsNoMaximum number of comments to return (default: 50)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_metaA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyYesProject key to get create metadata for
issueTypeNameNoSpecific issue type name to get metadata for (optional)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_fieldsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyNoProject key to filter custom fields (optional)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_issueA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoAdditional issue details to include
fieldsNoSpecific fields to retrieve
issueKeyYesIssue key or full Jira URL (e.g., PROJECT-123 or https://your.atlassian.net/browse/PROJECT-123)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_graphA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesSeed issue key to start graph traversal from (e.g., PROJECT-123)
maxDepthNoMaximum BFS traversal depth from seed issue (default: 2, max: 5)
maxNodesNoMaximum number of nodes to include in the graph (default: 50, max: 200)
directionNoWhich link directions to follow: "all", "inward", or "outward" (default: "all")all
linkTypesNoFilter to specific link types (e.g., ["Blocks", "Relates"]). If omitted, includes all link types.
includeHierarchyNoInclude parent/child/subtask edges (default: true)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_typesA
Read-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.).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyNoProject key to get issue types for specific project

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_issuesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoAdditional details to include
fieldsNoSpecific fields to retrieve
maxResultsNoMaximum number of results to return per page
nextPageTokenNoToken for pagination. Omit for first page, use value from previous response for next page.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_prioritiesA
Read-only

Retrieves available priorities (e.g., Highest, High, Medium, Low, Lowest). Returns IDs, names, and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_infoA
Read-only

Retrieves detailed information about a project (components, versions, issue types, roles, insights). More comprehensive than the basic project list.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoAdditional project details to include
projectKeyYesProject key to get detailed information for

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_statusesA
Read-only

Retrieves available statuses (global or project-specific, e.g., To Do, In Progress, Done). Returns status categories and workflow information.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectKeyNoProject key to get statuses for specific project
issueTypeIdNoIssue type ID to get statuses for specific issue type

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_transitionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
issueKeyYesIssue key to get available transitions for (e.g., PROJECT-123)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_usersA
Read-only

Search for users by name, email, username, or account ID. Returns display name, email, account status, and account type. Supports pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query for user name or email
startAtNoIndex of first result to return
usernameNoSpecific username to search for
accountIdNoSpecific account ID to search for
maxResultsNoMaximum number of results to return

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_projectsB
Read-only

Retrieves all projects accessible to the authenticated user. Returns project keys, names, descriptions, and basic metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNoAdditional project details to include
recentNoLimit to recently accessed projects

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_issuesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
jqlYesJQL query string
expandNoAdditional details to include
fieldsNoSpecific fields to retrieve
maxResultsNoMaximum number of results to return per page
nextPageTokenNoToken for pagination. Omit for first page, use value from previous response for next page.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoComment format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"markdown
commentNoOptional comment to add when transitioning the issue
issueKeyYesIssue key to transition (e.g., PROJECT-123)
resolutionNoResolution name when transitioning to a resolved/done status (e.g., "Done", "Fixed")
transitionIdNoID of the transition to perform. Use jira_get_transitions to find available transition IDs.
transitionNameNoName of the transition to perform (e.g., "In Progress", "Done"). Case-insensitive. Alternative to transitionId.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDescription format: "markdown" (converts Markdown to ADF), "adf" (use as-is ADF object), "plain" (converts plain text to ADF with basic formatting). Default: "markdown"markdown
labelsNoNew labels (replaces existing)
parentNoNew parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent.
summaryNoNew summary
assigneeNoNew assignee account ID
issueKeyYesIssue key to update
priorityNoNew priority
componentsNoNew components (replaces existing)
descriptionNoNew description. Accepts plain text or ADF object.
returnIssueNoWhen false, skip fetching full issue after update

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 23 tool updatesv1.11.0
    • Changedjira_add_attachment7 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / content
        Added 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"
        +}
      • addedInput schema / properties / fileUrl
        Added 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"
        +}
      • addedInput schema / properties / filename
        Added value: +{
        +  "description": "Name of the file to attach",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / isBase64
        Added value: +{
        +  "default": true,
        +  "description": "Whether content is base64-encoded (default: true). Set to false for plain text files.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "Issue key to add attachment to (e.g., PROJECT-123)",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "issueKey",
        +  "filename"
        +]
    • Changedjira_add_comment2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / visibility / additionalProperties
        Removed value: -false
    • Changedjira_create_issue3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / customFields / propertyNames
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / description / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {}
        +]
    • Changedjira_create_issue_link1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_create_subtask2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / description / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {}
        +]
    • Changedjira_delete_attachment1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_attachments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_comments1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_create_meta1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_custom_fields1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_issue1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_issue_graph1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_issue_types1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_my_issues1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_priorities1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_project_info1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_statuses1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_transitions1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_users1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_get_visible_projects1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_search_issues1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedjira_transition_issue8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / comment
        Added value: +{
        +  "description": "Optional comment to add when transitioning the issue",
        +  "type": "string"
        +}
      • addedInput schema / properties / format
        Added 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"
        +}
      • addedInput schema / properties / issueKey
        Added value: +{
        +  "description": "Issue key to transition (e.g., PROJECT-123)",
        +  "type": "string"
        +}
      • addedInput schema / properties / resolution
        Added value: +{
        +  "description": "Resolution name when transitioning to a resolved/done status (e.g., \"Done\", \"Fixed\")",
        +  "type": "string"
        +}
      • addedInput schema / properties / transitionId
        Added value: +{
        +  "description": "ID of the transition to perform. Use jira_get_transitions to find available transition IDs.",
        +  "type": "string"
        +}
      • addedInput schema / properties / transitionName
        Added value: +{
        +  "description": "Name of the transition to perform (e.g., \"In Progress\", \"Done\"). Case-insensitive. Alternative to transitionId.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "issueKey"
        +]
    • Changedjira_update_issue2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / description / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {}
        +]
  2. 23 tool updatesv1.10.2
    • Addedjira_add_attachment
    • Changedjira_add_comment8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / format
        Added 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"
        +}
      • changedInput schema / properties / issueKey / description
        Previous value: -"Issue key to add comment to (e.g., PROJECT-123)"New value: +"Issue key to add comment to"
      • addedInput schema / properties / visibility / additionalProperties
        Added value: +false
      • changedInput schema / properties / visibility / description
        Previous value: -"Comment visibility restrictions (optional)"New value: +"Comment visibility restrictions"
      • changedInput schema / properties / visibility / properties / type / description
        Previous value: -"Visibility type - either \"group\" or \"role\""New value: +"Visibility type"
      • changedInput schema / properties / visibility / properties / value / description
        Previous value: -"Group name or role name for visibility restriction"New value: +"Group name or role name"
    • Changedjira_create_issue16 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / assignee / description
        Previous value: -"Assignee account ID (optional)"New value: +"Assignee account ID"
      • removedInput schema / properties / components / default
        Removed value: -[]
      • changedInput schema / properties / components / description
        Previous value: -"Component names (optional)"New value: +"Component names"
      • changedInput schema / properties / customFields / additionalProperties
        Previous value: -trueNew value: +{}
      • changedInput schema / properties / customFields / description
        Previous 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."
      • changedInput schema / properties / description / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / description / description
        Previous 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."
      • addedInput schema / properties / format
        Added 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"
        +}
      • changedInput schema / properties / issueType / description
        Previous value: -"Issue type name (e.g., Bug, Story, Task, Epic)"New value: +"Issue type (e.g., Bug, Story, Task)"
      • removedInput schema / properties / labels / default
        Removed value: -[]
      • changedInput schema / properties / labels / description
        Previous value: -"Issue labels (optional)"New value: +"Issue labels"
      • changedInput schema / properties / priority / description
        Previous value: -"Issue priority name (e.g., High, Medium, Low) - optional"New value: +"Issue priority"
      • removedInput schema / properties / returnIssue / default
        Removed value: -true
      • changedInput schema / properties / returnIssue / description
        Previous value: -"If false, returns only the issue key without fetching full details"New value: +"When false, skip fetching full issue after creation"
    • Addedjira_create_issue_link
    • Changedjira_create_subtask13 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / assignee / description
        Previous value: -"Assignee account ID (optional)"New value: +"Assignee account ID"
      • removedInput schema / properties / components / default
        Removed value: -[]
      • changedInput schema / properties / components / description
        Previous value: -"Component names (optional)"New value: +"Component names"
      • addedInput schema / properties / description / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / description / description
        Previous value: -"Detailed subtask description (optional)"New value: +"Subtask description. Accepts plain text or ADF object."
      • removedInput schema / properties / description / type
        Removed value: -"string"
      • addedInput schema / properties / format
        Added 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"
        +}
      • removedInput schema / properties / labels / default
        Removed value: -[]
      • changedInput schema / properties / labels / description
        Previous value: -"Subtask labels (optional)"New value: +"Subtask labels"
      • changedInput schema / properties / parentIssueKey / description
        Previous value: -"Parent issue key (e.g., PROJECT-123)"New value: +"Parent issue key"
      • changedInput schema / properties / priority / description
        Previous value: -"Subtask priority name (e.g., High, Medium, Low) - optional"New value: +"Subtask priority"
    • Addedjira_delete_attachment
    • Addedjira_get_attachments
    • Addedjira_get_comments
    • Addedjira_get_create_meta
    • Addedjira_get_custom_fields
    • Changedjira_get_issue6 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / expand / default
        Removed value: -[]
      • changedInput schema / properties / expand / description
        Previous value: -"Additional issue details to include (e.g., [\"comments\", \"attachments\", \"changelog\"])"New value: +"Additional issue details to include"
      • changedInput schema / properties / fields / description
        Previous value: -"Specific fields to retrieve (e.g., [\"summary\", \"status\", \"assignee\"])"New value: +"Specific fields to retrieve"
      • addedInput schema / properties / issueKey / minLength
        Added value: +1
    • Addedjira_get_issue_graph
    • Changedjira_get_issue_types4 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / projectKey / description
        Previous 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"
      • removedInput schema / required
        Removed value: -[]
    • Changedjira_get_my_issues9 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / expand / default
        Removed value: -[]
      • changedInput schema / properties / expand / description
        Previous value: -"Additional details to include for each issue"New value: +"Additional details to include"
      • changedInput schema / properties / fields / description
        Previous value: -"Specific fields to retrieve for each issue"New value: +"Specific fields to retrieve"
      • changedInput schema / properties / maxResults / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return per page"
      • addedInput schema / properties / nextPageToken
        Added value: +{
        +  "description": "Token for pagination. Omit for first page, use value from previous response for next page.",
        +  "type": "string"
        +}
      • removedInput schema / properties / startAt
        Removed value: -{
        -  "default": 0,
        -  "description": "Index of first result to return (for pagination)",
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / required
        Removed value: -[]
    • Changedjira_get_priorities3 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / required
        Removed value: -[]
    • Changedjira_get_project_info4 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / expand / default
        Removed value: -[]
      • changedInput schema / properties / expand / description
        Previous value: -"Additional project details to include (e.g., [\"description\", \"lead\", \"issueTypes\", \"versions\"])"New value: +"Additional project details to include"
    • Changedjira_get_statuses5 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / issueTypeId / description
        Previous 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"
      • changedInput schema / properties / projectKey / description
        Previous value: -"Project key to get statuses for specific project (optional)"New value: +"Project key to get statuses for specific project"
      • removedInput schema / required
        Removed value: -[]
    • Addedjira_get_transitions
    • Changedjira_get_users5 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / query / description
        Previous value: -"Search query for user name or email (partial matches supported)"New value: +"Search query for user name or email"
      • changedInput schema / properties / startAt / description
        Previous value: -"Index of first result to return (for pagination)"New value: +"Index of first result to return"
      • removedInput schema / required
        Removed value: -[]
    • Changedjira_get_visible_projects8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / expand / default
        Removed value: -[]
      • changedInput schema / properties / expand / description
        Previous value: -"Additional project details to include (e.g., [\"description\", \"lead\", \"issueTypes\"])"New value: +"Additional project details to include"
      • changedInput schema / properties / recent / description
        Previous value: -"Limit results to recently accessed projects (max number)"New value: +"Limit to recently accessed projects"
      • removedInput schema / properties / recent / maximum
        Removed value: -100
      • removedInput schema / properties / recent / minimum
        Removed value: -1
      • removedInput schema / required
        Removed value: -[]
    • Changedjira_search_issues10 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / expand / default
        Removed value: -[]
      • changedInput schema / properties / expand / description
        Previous value: -"Additional details to include for each issue"New value: +"Additional details to include"
      • changedInput schema / properties / fields / description
        Previous value: -"Specific fields to retrieve for each issue"New value: +"Specific fields to retrieve"
      • changedInput schema / properties / jql / description
        Previous value: -"JQL query string (e.g., \"project = PROJECT AND status = Open\")"New value: +"JQL query string"
      • addedInput schema / properties / jql / minLength
        Added value: +1
      • changedInput schema / properties / maxResults / description
        Previous value: -"Maximum number of results to return"New value: +"Maximum number of results to return per page"
      • addedInput schema / properties / nextPageToken
        Added value: +{
        +  "description": "Token for pagination. Omit for first page, use value from previous response for next page.",
        +  "type": "string"
        +}
      • removedInput schema / properties / startAt
        Removed value: -{
        -  "default": 0,
        -  "description": "Index of first result to return (for pagination)",
        -  "minimum": 0,
        -  "type": "number"
        -}
    • Addedjira_transition_issue
    • Changedjira_update_issue14 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / assignee / description
        Previous value: -"New assignee account ID (optional, use null string to unassign)"New value: +"New assignee account ID"
      • changedInput schema / properties / components / description
        Previous value: -"New components array (replaces existing components) - optional"New value: +"New components (replaces existing)"
      • changedInput schema / properties / description / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / description / description
        Previous 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."
      • addedInput schema / properties / format
        Added 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"
        +}
      • changedInput schema / properties / issueKey / description
        Previous value: -"Issue key to update (e.g., PROJECT-123)"New value: +"Issue key to update"
      • changedInput schema / properties / labels / description
        Previous value: -"New labels array (replaces existing labels) - optional"New value: +"New labels (replaces existing)"
      • addedInput schema / properties / parent
        Added value: +{
        +  "description": "New parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent.",
        +  "type": "string"
        +}
      • changedInput schema / properties / priority / description
        Previous value: -"New priority name (e.g., High, Medium, Low) - optional"New value: +"New priority"
      • removedInput schema / properties / returnIssue / default
        Removed value: -true
      • changedInput schema / properties / returnIssue / description
        Previous value: -"If false, returns a success message without fetching the updated issue"New value: +"When false, skip fetching full issue after update"
      • changedInput schema / properties / summary / description
        Previous value: -"New issue summary/title (optional)"New value: +"New summary"
  3. 13 tool updates
    • First observedjira_add_comment
    • First observedjira_create_issue
    • First observedjira_create_subtask
    • First observedjira_get_issue
    • First observedjira_get_issue_types
    • First observedjira_get_my_issues
    • First observedjira_get_priorities
    • First observedjira_get_project_info
    • First observedjira_get_statuses
    • First observedjira_get_users
    • First observedjira_get_visible_projects
    • First observedjira_search_issues
    • First observedjira_update_issue

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    10
    7
    MIT

Latest Blog Posts

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