JIRA MCP Server
Provides read-only access to JIRA REST API, enabling querying and retrieval of issues, projects, users, and field metadata from JIRA Server/Data Center instances.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JIRA MCP Serversearch for high priority issues in project ABC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JIRA MCP Server
A Model Context Protocol (MCP) server that provides read-only access to JIRA REST API, enabling LLMs to query and retrieve information from JIRA instances.
Features
Issue Operations
Search Issues - Execute JQL queries to find issues
Get Issue Details - Retrieve comprehensive information about specific issues
Get Issue Comments - Fetch comments for issues
Get Issue Transitions - View available workflow transitions
Project Operations
List Projects - Get all accessible projects
Get Project Details - Retrieve detailed project information
Search Projects - Find projects by various criteria
User Operations
Get Current User - Retrieve authenticated user information
Get User - Get details about specific users
Search Users - Find users by query
Field Discovery Operations
Get Issue Types - Get all issue types for a project
Get Issue Type Fields - Get all fields available for a specific issue type
Get Issue Field Names - Get all field IDs and names for a specific issue
Search Issue Fields - Search for fields by name in a specific issue with partial matching
Related MCP server: Jira MCP Integration
Architecture
This MCP server follows a modular architecture designed for maintainability and extensibility:
Project Structure
JIRA-API-MCP/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── server.ts # Server initialization and tool registration
│ ├── client/
│ │ ├── JiraClient.ts # JIRA API client wrapper with axios
│ │ └── types.ts # TypeScript interfaces for JIRA data models
│ ├── tools/
│ │ ├── issues.ts # Issue-related MCP tool implementations
│ │ ├── projects.ts # Project-related MCP tool implementations
│ │ ├── users.ts # User-related MCP tool implementations
│ │ └── fields.ts # Field discovery MCP tool implementations
│ └── __tests__/
│ ├── tools-direct.test.ts # Integration tests for tool handlers
│ ├── jira.test.ts # Direct JIRA API tests
│ └── generate-mcp-docs.ts # Documentation generation utility
├── dist/ # Compiled JavaScript output
├── __tool_response_logs__/ # Test response captures
└── docs/
├── CLAUDE.md # Instructions for AI assistants
├── INSPECTOR_GUIDE.md # MCP Inspector usage guide
├── MCP_TOOL_DOCUMENTATION.md # Detailed tool specifications
└── TEST_SUMMARY.md # Testing documentationKey Components
MCP Server Layer (
server.ts)Implements Model Context Protocol specification
Registers all available tools with the MCP SDK
Handles tool dispatch and response formatting
JIRA Client (
client/JiraClient.ts)Axios-based HTTP client for JIRA REST API v2
Handles authentication via Bearer tokens
Implements retry logic and error handling
Manages request/response transformations
Tool Modules (
tools/*.ts)Each module exports tool definitions with:
Zod schemas for input validation
Handler functions that call the JIRA client
Consistent error handling and response formatting
Tools return standardized
{success, data/error}structure
Type System (
client/types.ts)Comprehensive TypeScript interfaces for JIRA entities
Ensures type safety across the application
Documents expected data structures
Data Flow
Request Flow:
MCP Client → MCP Server → Tool Handler → JIRA Client → JIRA APIResponse Flow:
JIRA API → JIRA Client → Tool Handler → MCP Server → MCP Client
Design Principles
Modularity: Each tool is self-contained with its own validation and logic
Type Safety: Full TypeScript coverage with strict typing
Error Resilience: Graceful error handling at each layer
Testability: Comprehensive test suite with response capture
Documentation: Auto-generated docs from actual API responses
Installation
From NPM
npm install @mcp/jira-serverFrom Source
git clone https://github.com/jl-0/JIRA-API-MCP.git
cd JIRA-API-MCP
npm install
npm run buildConfiguration
The server requires JIRA authentication credentials. You can provide these via environment variables or a .env file:
# Required
# For Server/Data Center: https://your-server.com/jira
# For Cloud: https://your-domain.atlassian.net (not currently supported)
JIRA_BASE_URL=https://your-server.com/jira
# For Server/Data Center: Personal Access Token (PAT)
JIRA_API_TOKEN=your-personal-access-token
# Optional
JIRA_MAX_RESULTS=50 # Default max results per request
JIRA_TIMEOUT=30000 # Request timeout in millisecondsJIRA Server/Data Center Support
This MCP server is designed for JIRA Server and Data Center installations using:
REST API v2 endpoints
Personal Access Token (PAT) authentication with Bearer tokens
Compatible with JIRA Server 8.14+ and JIRA Service Management 4.15+
Getting a Personal Access Token (PAT)
For JIRA Server/Data Center:
Log in to your JIRA instance
Navigate to your Profile → Personal Access Tokens
Click "Create token"
Give it a descriptive name and set expiration
Copy the token immediately (it won't be shown again)
Use this token as
JIRA_API_TOKENin your configuration
The server uses Bearer token authentication: Authorization: Bearer <token>
Note: JIRA Cloud uses a different authentication mechanism (API tokens with Basic auth) which is not currently supported by this server.
Usage
With Claude Desktop
Add the server to your Claude Desktop configuration:
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["@jl-0/jira-server"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}As a Standalone Server
# Using environment variables
export JIRA_BASE_URL=https://your-domain.atlassian.net
export JIRA_API_TOKEN=your-api-token
npm start
# Or using a .env file
npm startTesting & Development
Interactive Testing with MCP Inspector
The MCP Inspector provides an interactive web interface for testing all server capabilities:
# Launch inspector with TypeScript source (development)
npm run inspect
# Build and inspect with compiled JavaScript
npm run inspect:builtThe inspector will open at http://localhost:6274 and allow you to:
Test all available tools with custom parameters
View real-time server responses
Debug authentication and connectivity issues
Monitor server logs and notifications
See INSPECTOR_GUIDE.md for detailed usage instructions.
Automated Testing
Run the comprehensive test suite:
# Run all tests
npm test
# Run direct tool integration tests
npm run test:direct
# Generate documentation from test responses
npm run test:generate-docsTest outputs are saved to __tool_response_logs__/ for analysis.
See TEST_SUMMARY.md for test documentation.
Available Tools
jira_search_issues
Search for issues using JQL (JIRA Query Language).
Parameters:
jql(required): JQL query stringmaxResults: Maximum results to return (default: 50)fields: Array of fields to includeexpand: Array of data to expandstartAt: Starting index for pagination
Example:
{
"jql": "project = PROJ AND status = 'In Progress'",
"maxResults": 10
}jira_get_issue
Get detailed information about a specific issue.
Parameters:
issueIdOrKey(required): Issue ID or key (e.g., PROJ-123)fields: Array of fields to includeexpand: Array of data to expand
jira_get_issue_comments
Get comments for a specific issue.
Parameters:
issueIdOrKey(required): Issue ID or keymaxResults: Maximum results (default: 50)startAt: Starting index for pagination
jira_get_issue_transitions
Get available transitions for an issue.
Parameters:
issueIdOrKey(required): Issue ID or keyincludeUnavailable: Include unavailable transitions (default: false)
jira_list_projects
List all accessible projects.
Parameters:
expand: Array of additional data to expandrecent: Return only most recent projects
jira_get_project
Get detailed project information.
Parameters:
projectIdOrKey(required): Project ID or keyexpand: Array of additional data to expand
jira_search_projects
Search for projects.
Parameters:
query: Search query stringmaxResults: Maximum results (default: 50)startAt: Starting indexorderBy: Sort order fieldtypeKey: Project type keycategoryId: Project category IDaction: Filter by permission (view/browse/edit)
jira_get_current_user
Get information about the authenticated user.
Parameters:
expand: Additional data to expand
jira_search_users
Search for users.
Parameters:
query: Search query matching display name and emailaccountId: Find user by account IDmaxResults: Maximum results (default: 50)startAt: Starting index
jira_get_issue_types
Get all issue types available for a specific project.
Parameters:
projectIdOrKey(required): Project ID or keymaxResults: Maximum results (default: 50)startAt: Starting index
jira_get_issue_type_fields
Get all fields available for a specific issue type in a project.
Parameters:
projectIdOrKey(required): Project ID or keyissueTypeId(required): Issue type IDmaxResults: Maximum results (default: 50)startAt: Starting index
jira_get_issue_field_names
Get all field IDs and names for a specific JIRA issue.
Parameters:
issueIdOrKey(required): Issue ID or key
Example:
{
"issueIdOrKey": "IDS-10314"
}jira_search_issue_fields
Search for specific fields by name in a JIRA issue.
Parameters:
issueIdOrKey(required): Issue ID or keysearchTerms(required): Array of search terms to match against field names
Example:
{
"issueIdOrKey": "IDS-10314",
"searchTerms": ["test", "procedure", "story points"]
}JQL Examples
Common JQL queries you can use with jira_search_issues:
-- Find all open issues assigned to me
assignee = currentUser() AND resolution = Unresolved
-- Find high priority bugs
priority = High AND issuetype = Bug
-- Issues updated in the last week
updated >= -1w
-- Issues in specific projects
project in (PROJ1, PROJ2) AND status = "To Do"
-- Issues with specific labels
labels in ("backend", "api")
-- Issues created this month
created >= startOfMonth()
-- Find issues by reporter
reporter = "john.doe@example.com"
-- Complex query
project = PROJ AND (
(priority = High AND status = "In Progress") OR
(priority = Critical AND status != Done)
) ORDER BY created DESCDevelopment
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run dev
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run formatPublishing to npm
First-time Setup
Ensure you have an npm account at npmjs.com
Login to npm from your terminal:
npm login
Publishing Process
Update the version in
package.jsonfollowing semantic versioning:npm version patch # for bug fixes (0.1.0 -> 0.1.1) npm version minor # for new features (0.1.0 -> 0.2.0) npm version major # for breaking changes (0.1.0 -> 1.0.0)Build the project:
npm run clean npm run buildTest locally (optional but recommended):
npm link # In another project: npm link @mcp/jira-serverPublish to npm:
npm publish --access publicCreate a git tag and push:
git push origin main git push origin --tags
Package Information
Package Name: @mcp/jira-server
Author: Jeff Leach
Repository: https://github.com/jl-0/JIRA-API-MCP
License: MIT
Error Handling
The server provides detailed error messages for common issues:
Authentication failures - Check your API token and email
Permission errors - Ensure your account has access to the requested resources
Rate limiting - The server implements retry logic for rate limits
Network issues - Check your internet connection and JIRA instance URL
Security
API tokens are never logged or exposed
All communication with JIRA uses HTTPS
Uses Bearer token authentication for secure API access
Credentials should be stored securely using environment variables
The server provides read-only access by default
Limitations
This is a read-only implementation (no issue creation/updates)
Rate limits are determined by your JIRA instance
Some JIRA Cloud features may not be available on JIRA Server/Data Center
Field discovery tools use the editmeta endpoint which returns fields available for editing
Future Enhancements
Planned features for future releases:
Issue creation and updates
Attachment handling
Webhook support
Advanced filtering and field customization
Bulk operations
Sprint and board operations (JIRA Software)
Service desk operations (JIRA Service Management)
Documentation
This project maintains comprehensive documentation:
CLAUDE.md - Instructions for AI assistants working with this codebase
INSPECTOR_GUIDE.md - Detailed guide for using MCP Inspector
MCP_TOOL_DOCUMENTATION.md - Complete tool specifications and examples
TEST_SUMMARY.md - Testing approach and coverage
SCRIPTS_REFERENCE.md - NPM scripts quick reference
Documentation Maintenance
When making changes to the codebase:
Update README.md when adding features or changing configuration
Run tests to capture new response formats:
npm run test:directGenerate documentation from test outputs:
npm run test:generate-docsUpdate tool documentation if parameters or responses change
Follow guidelines in CLAUDE.md for consistent documentation
Contributing
Contributions are welcome! Please:
Read CLAUDE.md for development guidelines
Update documentation when making changes
Add tests for new functionality
Ensure all tests pass:
npm testRun linting:
npm run lintSubmit a Pull Request with clear description
License
MIT
Support
For issues and questions, please use the GitHub Issues page.
Available Tools
14 toolsjira_get_current_userA
Get information about the currently authenticated JIRA user
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional data to expand (groups, applicationRoles) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It is accurate but minimal, not disclosing additional behavioral traits such as authentication requirements, response format, or side effects. However, for a simple read operation, it is not misleading and gives a basic understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently communicates the core purpose without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no output schema), the description is reasonably complete. It clearly identifies the target entity but could be enhanced by specifying the type of information returned. However, the simplicity of the tool makes this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameters with a clear description for 'expand'. The tool description adds no extra information about parameters beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get') and resource ('currently authenticated JIRA user'). It distinguishes itself from siblings like jira_get_user by specifying the user is the currently authenticated one, which is a unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use this tool: to retrieve information about the currently authenticated user. While it doesn't explicitly mention alternatives or exclusions, the phrasing implies that this is for the current user, contrasting with sibling tools that target specific users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issueA
Get detailed information about a specific JIRA issue by its key (e.g., "IDS-10194"). Returns comprehensive issue details including summary, description, status, assignee, and custom fields. CRITICAL: Always use the fields parameter to request only specific fields needed - requesting all fields or omitting this parameter returns excessive data and may fail. For custom fields, use field discovery workflow first: (1) Get issue type with fields: ["issuetype", "project"], (2) Use jira_get_issue_type_fields to find field names/IDs, (3) Request only needed fields by name or customfield_XXXX ID. Example: fields: ["summary", "customfield_10001", "status"].
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Optional array of additional data to expand. Example: ["changelog", "transitions", "renderedFields"]. Warning: Some expand options may significantly increase response size | |
| fields | No | Optional array of specific fields to return. Example: ["summary", "status", "description", "assignee", "reporter", "priority"]. If omitted, returns common fields: summary, status, priority, assignee, reporter, created, updated, description, issuetype, project, resolution, resolutiondate, duedate, labels, components, fixVersions, versions | |
| properties | No | Optional array of issue properties to include. Example: ["prop1", "prop2"]. Use "*all" to include all properties | |
| issueIdOrKey | Yes | The JIRA issue ID or key to retrieve. Example: "IDS-10194" or "PROJ-123" | |
| updateHistory | No | Whether to update the issue's history of views |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that omitting the fields parameter returns excessive data and may fail, and lists the return categories (summary, status, assignee, custom fields). It could add failure behavior for invalid issue keys, but the warning and return detail are meaningful and help set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and example, followed by a critical warning and a numbered workflow. It is dense but every sentence carries operational value; there is no filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with 100% schema coverage and no output schema, the description sufficiently covers the main usage pattern, critical performance guidance, and custom-field handling. It does not explain expand/properties/updateHistory behavior, but those are already described in the schema, so the description is complete enough for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the input schema already covers all 5 parameters with examples (100% coverage), the description adds critical semantics beyond the schema: always use fields to limit payload, omitting it can cause failure, and custom fields require a structured discovery workflow. This is substantial added value for parameter use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('specific JIRA issue by its key'), with an example key format. It clearly distinguishes this tool from siblings like jira_search_issues (searching) and jira_get_issue_comments (comments) by focusing on retrieving detailed single-issue data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit, actionable guidance: always pass only needed fields, warns that omitting fields returns excessive data and may fail, and prescribes a step-by-step custom-field discovery workflow using jira_get_issue_type_fields. This gives clear when-to-use and how-to-use context beyond the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_commentsA
Get all comments for a specific JIRA issue by its key (e.g., "IDS-10194"). Returns a paginated list of comments with author and timestamp information.
| Name | Required | Description | Default |
|---|---|---|---|
| startAt | No | Starting index for pagination as a number (default: 0). Must be a number, not a string. | |
| maxResults | No | Maximum number of comments to return as a number (default: 50). Must be a number, not a string. | |
| issueIdOrKey | Yes | The JIRA issue ID or key to get comments for. Example: "IDS-10194" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of conveying behavior. It effectively signals a read-only operation through the verb 'Get,' and adds useful detail about the return format (paginated list, author, timestamp). It does not explicitly state that no modifications occur, but the word 'Get' strongly implies a safe read, and the pagination caveat is a meaningful behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sentence front-loads the core purpose, and the second provides essential return information. There is no filler or redundant repetition of schema details, making it an efficiently structured, appropriately sized description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple 3-parameter tool and full schema coverage, the description is nearly complete. It includes the return format and the key example, though it could optionally elaborate on how pagination behaves (e.g., how to retrieve all pages using startAt/maxResults). In the absence of an output schema, the description suffices for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameters with clear descriptions, so the description adds little beyond what the schema already provides. The description's mention of 'by its key' mirrors the schema's example, and the pagination implications are already described in startAt/maxResults. Thus, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get'), a specific resource ('comments for a specific JIRA issue'), and the required identifier (issue key, with an example). This unambiguously distinguishes it from sibling tools like jira_get_issue or jira_get_issue_transitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool (when you need all comments for a given issue) without explicitly naming alternatives or exclusions. The context is unambiguous, but it stops short of explicitly stating 'use this instead of jira_get_issue for comments' or noting cases where it might be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_field_namesA
Get all field IDs and their corresponding names for a specific JIRA issue. This tool retrieves the editmeta for an issue and returns a simplified list of field IDs (like "customfield_25931") mapped to their human-readable names (like "Target start"). Use this when you need to discover what fields are available for a specific issue.
| Name | Required | Description | Default |
|---|---|---|---|
| issueIdOrKey | Yes | The JIRA issue ID or key to get field names for. Example: "IDS-10194" or "PROJ-123" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds context about retrieving editmeta and returning a simplified mapping, but does not state whether the operation is read-only, any permission requirements, or error behavior. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and followed by usage guidance. Every word earns its place, no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool without output schema, the description covers what it returns (simplified field ID/name mapping), how it works (via editmeta), and when to use it. Minor gaps around error behavior, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the parameter with an example, and the description adds no extra semantics beyond referencing field IDs and names. With 100% schema coverage, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all field IDs and their corresponding names for a specific JIRA issue', specifying the exact resource and scope. It distinguishes itself from sibling field-related tools by emphasizing the issue-specific context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage scenario ('Use this when you need to discover what fields are available for a specific issue'), but does not explicitly mention alternatives or when not to use it. This is close to explicit but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_transitionsA
Get available workflow transitions for a JIRA issue by its key (e.g., "IDS-10194"). Shows what status changes are possible for the issue (e.g., Open -> In Progress, In Progress -> Resolved).
| Name | Required | Description | Default |
|---|---|---|---|
| issueIdOrKey | Yes | The JIRA issue ID or key to get transitions for. Example: "IDS-10194" | |
| includeUnavailable | No | Whether to include transitions that are not available to the current user (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It uses 'Get' implying a read-only operation and describes the output format with examples, but it does not mention permissions, error behavior, or default filtering beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the action and resource, and contains no filler. Every word contributes to understanding the tool's purpose and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and example output, the description is complete enough for an agent to know what the tool does and when to call it. It could be more explicit about usage versus siblings, but that is not essential for this straightforward getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have good descriptions in the schema (100% coverage), so the description adds no additional meaning. The example key 'IDS-10194' is already present in the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' with a clear resource 'workflow transitions for a JIRA issue' and provides examples of output (Open -> In Progress). It is clearly distinguishable from sibling tools such as jira_get_issue or jira_get_issue_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing to see possible status changes for an issue, with example transitions provided. However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_issue_type_fieldsA
Get all fields available for a specific issue type in a project. Returns detailed field metadata including which fields are required, their types, allowed values, and default values. Use this to understand what fields can be queried or set for a specific issue type.
| Name | Required | Description | Default |
|---|---|---|---|
| startAt | No | Starting index for pagination as a number (default: 0). Must be a number, not a string. | |
| maxResults | No | Maximum number of results to return as a number (default: 50). Must be a number, not a string. | |
| issueTypeId | Yes | The issue type ID to get fields for. Example: "10001" | |
| projectIdOrKey | Yes | The JIRA project ID or key. Example: "IDS" or "10000" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully explains the return content (required fields, types, allowed values, defaults), but it omits the pagination behavior implied by startAt/maxResults parameters and does not explicitly state that this is a read-only operation. The phrase 'all fields' slightly conflicts with pagination semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences), front-loaded with the action and resource, and every sentence adds value. There is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description helpfully outlines the return value details. It covers the core purpose, but a more complete description would mention pagination limitations and perhaps the relationship to other field-related tools. Overall, it provides sufficient context for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema, only indirectly referencing the project/issue type parameters. It does not provide additional context like how the pagination parameters interact or default behaviors.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('all fields available for a specific issue type in a project'), clearly distinguishing it from sibling tools like jira_get_issue_field_names and jira_search_issue_fields. It also states what metadata is returned, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: 'Use this to understand what fields can be queried or set for a specific issue type.' While it doesn't explicitly mention alternatives or when not to use the tool, the intended scenario is well conveyed.
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
Get all issue types available for a specific project. Returns issue type metadata including IDs and names. Use this to discover what issue types exist in a project before querying for their specific fields.
| Name | Required | Description | Default |
|---|---|---|---|
| startAt | No | Starting index for pagination as a number (default: 0). Must be a number, not a string. | |
| maxResults | No | Maximum number of results to return as a number (default: 50). Must be a number, not a string. | |
| projectIdOrKey | Yes | The JIRA project ID or key to get issue types for. Example: "IDS" or "10000" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It states that it 'Returns issue type metadata including IDs and names', which gives some insight into output. However, it does not mention pagination behavior, errors, or read-only safety, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with two sentences that front-load the core purpose and then add a usage note. Every word earns its place, and there is no redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and presence of a detailed schema, the description is mostly complete. It explains the return value (metadata with IDs and names) and the discovery use case. The lack of an output schema is compensated by this brief description, though it could mention pagination defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptions for all 3 parameters, so the baseline is 3. The description does not add additional meaning to the parameters beyond indicating that projectIdOrKey is the scope for 'a specific project'. It relies on the schema for parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' applied to 'all issue types available for a specific project'. It also distinguishes itself from the sibling tool 'jira_get_issue_type_fields' by explicitly mentioning 'before querying for their specific fields', clarifying this is a discovery action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use: 'Use this to discover what issue types exist in a project before querying for their specific fields.' It gives a clear context but does not mention when not to use or name alternatives beyond the implicit reference to fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_projectB
Get detailed information about a specific JIRA project
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Optional array of additional data to expand. Example: ["description", "lead", "issueTypes", "components", "versions"] | |
| projectIdOrKey | Yes | The JIRA project ID or key to retrieve. Example: "IDS" or "10000" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the read operation ('Get') and gives no information about permissions, response format, error handling, or expand behavior. The description adds no meaningful behavioral context beyond the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant information. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the schema covers all parameters, but the description lacks detail on what 'detailed information' includes and how the expand parameter affects the response. With no output schema and no annotations, the description leaves some gaps, but the core purpose is clear enough for a basic GET operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; both parameters have detailed descriptions in the schema, including examples for projectIdOrKey and expand. The description itself adds no parameter-specific information, so it earns the baseline score of 3 for not detracting from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get detailed information about a specific JIRA project' clearly states the verb (get), resource (JIRA project), and scope (specific), effectively distinguishing it from siblings like jira_list_projects and jira_get_issue. However, it does not explicitly mention alternatives, so it stops short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus jira_list_projects, jira_search_projects, or other siblings. It neither states the intended use case nor mentions any exclusions, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_get_userB
Get information about a specific JIRA user by account ID
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Additional data to expand | |
| accountId | Yes | The account ID of the user |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that information is retrieved, with no mention of error handling, permissions, expand behavior, or return details. This leaves significant gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys the core purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity, the description is under-specified: it lacks usage guidance, behavioral details, and does not explain the expand parameter's effect. The absence of annotations and output schema further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% description coverage for both parameters. The description adds no additional parameter context beyond what the schema states, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get information'), the resource ('specific JIRA user'), and the identifier ('by account ID'), distinguishing it from sibling tools like jira_search_users and jira_get_current_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as jira_search_users or jira_get_current_user. The description lacks context on prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_list_projectsA
List all JIRA projects accessible to the authenticated user
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | Optional array of additional data to expand. Example: ["description", "lead", "url", "projectKeys"]. Commonly used values: description, lead, url, projectKeys | |
| recent | No | Optional number to return only the N most recent projects. Must be a number, not a string. Example: 10 to get the 10 most recent projects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It adds context about authentication ('accessible to the authenticated user'), which is useful. However, it does not mention pagination, output format, or potential large response sizes, which are relevant for a 'list all' operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds meaning, and it communicates the core purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description states the action and scope but lacks return-value details and pagination behavior. The parameter schema is complete, but the 'all' semantics might require clarification. Overall, it is adequate but with room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions for both parameters ('expand' and 'recent'), including examples and type clarifications. The description adds no extra parameter information, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), identifies the resource ('JIRA projects'), and scopes the action ('accessible to the authenticated user'). This clearly distinguishes it from sibling tools like jira_get_project (single project) and jira_search_projects (search/filter).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving all accessible projects, which is a clear context. It does not explicitly mention alternatives or when not to use it, but the scope ('all') contrasts with sibling tool names. No exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_search_issue_fieldsA
Search for specific fields by name in a JIRA issue. Provide an issue key and one or more search terms, and this tool will return matching field IDs and names. Supports partial/fuzzy matching - for example, searching for "test" will match "Task Test Procedure". Use this when you need to find the field ID for a specific field name.
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerms | Yes | Array of search terms to match against field names. Example: ["test", "story points"]. Partial matches are supported. | |
| issueIdOrKey | Yes | The JIRA issue ID or key to search fields for. Example: "IDS-10194" or "PROJ-123" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the partial/fuzzy matching behavior with an example, which is valuable information beyond the schema. It also indicates that the tool returns both IDs and names, and its non-destructive search/return nature is implicit. No annotations are provided, so this behavioral disclosure partially fills that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, with the purpose stated upfront and a helpful example woven in. Every sentence contributes to understanding the tool's function and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the description covers its core purpose, parameters, and expected output (field IDs and names). The presence of both parameters in the schema and the absence of complex return structures make this description sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions already cover both parameters fully, including the partial-match behavior and example values. The description reiterates the same information without adding new semantics, so it adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for specific fields by name in a JIRA issue and returns matching field IDs and names. It provides a concrete example of partial/fuzzy matching, making the purpose unmistakable. While it doesn't explicitly contrast with sibling tools like jira_get_issue_field_names, the search-specific scope and mention of returning IDs and names differentiate it effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs users to use the tool when they need to find the field ID for a specific field name, which provides clear context for its intended use. It does not mention alternatives or when-not-to-use cases, but the guidance is sufficient for a targeted search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_search_issuesA
Search for JIRA issues using JQL (JIRA Query Language). Use this to find issues based on various criteria like project, status, assignee, text content, etc. Returns a summary of matching issues.
| Name | Required | Description | Default |
|---|---|---|---|
| jql | Yes | JQL query string to search for issues. Examples: "project = IDS", "assignee = currentUser() AND status = Open", "key = IDS-10314". IMPORTANT: Use "key = ISSUE-123" to query a specific issue, NOT "text ~ ISSUE-123" which performs unnecessary full-text search. | |
| expand | No | Optional array of entities to expand. Example: ["changelog", "transitions"]. Common values: changelog, renderedFields, transitions | |
| fields | No | Optional array of field names to include. Example: ["summary", "status", "assignee"]. Strongly recommended to specify only needed fields to reduce data transfer. If omitted, returns common fields: summary, status, priority, assignee, reporter, created, updated, issuetype, project, labels, components | |
| startAt | No | Starting index for pagination as a number (default: 0). Use for fetching additional pages of results. Must be a number, not a string. | |
| maxResults | No | Maximum number of results to return as a number (default: 50, max: 100). Must be a number, not a string. | |
| properties | No | Optional array of issue properties to include. Example: ["prop1", "prop2"]. Use "*all" to include all properties |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states that it 'Returns a summary of matching issues', which clarifies the output nature. However, it does not elaborate on read-only safety, pagination, or other side effects, though the schema covers some parameter behaviors. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences that immediately state the search action, usage context, and return type. Every sentence earns its place with no redundancy or fluff, making it ideal for quick agent comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters with a rich schema, no output schema, and no annotations. The description gives a general sense of return ('summary of matching issues') but doesn't specify pagination or result format details, though the schema covers parameters. It is complete enough for a search tool but could be more explicit about pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions, examples, and important notes for each parameter (e.g., jql examples, pagination defaults, field recommendations). The description adds no additional parameter meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for JIRA issues using JQL, naming the action (search), resource (JIRA issues), and query method (JQL). It distinguishes from siblings like jira_get_issue (single issue retrieval) and jira_search_projects (project search) by focusing on issue search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to find issues based on various criteria like project, status, assignee, text content, etc.', providing clear context for when to use the tool. It does not explicitly mention alternatives or exclusions, but the purpose is specific enough to differentiate from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_search_projectsC
Search for JIRA projects based on various criteria
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query string | |
| action | No | Filter by permission | browse |
| orderBy | No | Order results by field | key |
| startAt | No | Starting index for pagination as a number (default: 0). Must be a number, not a string. | |
| typeKey | No | Project type key | |
| categoryId | No | Project category ID as a number. Must be a number, not a string. | |
| maxResults | No | Maximum number of results as a number (default: 50). Must be a number, not a string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It merely says 'Search' without stating whether the operation is read-only, what permissions are needed, how pagination behaves, or what the return value looks like. Empty disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, and it front-loads the action. However, it is so minimal that it borders on under-specification, which slightly reduces the score below a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 optional parameters, no output schema, and no annotations. The description does not explain what the search results look like, how the 'query' parameter interacts with project fields, or what pagination defaults mean. This is insufficient for an agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The tool description adds no additional meaning to the parameters; it only says 'various criteria' without specifying any. Baseline of 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb ('Search') and resource ('JIRA projects'), and adds 'based on various criteria' to indicate filtering. However, it does not differentiate from sibling tools like jira_list_projects, which likely also returns projects, so it lacks explicit distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Sibling tools like jira_list_projects and jira_search_issues exist, but no when-to-use or when-not-to-use information is given. The description is entirely silent on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jira_search_usersB
Search for JIRA users by query string
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query matching display name and email | |
| startAt | No | Starting index for pagination as a number (default: 0). Must be a number, not a string. | |
| accountId | No | Find user by account ID | |
| maxResults | No | Maximum number of results as a number (default: 50). Must be a number, not a string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior, but it only states 'Search for JIRA users by query string.' It does not mention pagination, result limits, matching behavior, or any side effects. The schema fills in some parameter details, but the description itself adds little beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and immediately communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 optional parameters, no output schema, and no annotations. The description is minimal and does not cover pagination behavior, alternate lookup modes, or what the response contains. While the schema covers parameter semantics, the description lacks the contextual guidance needed to use the tool effectively in more complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal meaning by tying the 'query' parameter to a query string, but it does not elaborate on startAt, maxResults, or accountId beyond what the schema already provides. The schema's parameter descriptions are adequate, so a middle score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('JIRA users') with a clear method ('by query string'). It distinguishes from sibling tools like jira_get_user (which fetches a single user), so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives (e.g., jira_get_user for a specific account ID). It does not mention that accountId can be used instead of query, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a clear resource and action, but the three field-discovery tools (jira_get_issue_type_fields, jira_get_issue_field_names, jira_search_issue_fields) have overlapping purposes for discovering field IDs, which could cause confusion. However, their descriptions differentiate them sufficiently by scope (issue type vs issue vs search).
All tools follow a consistent jira_<verb>_<noun> pattern with verbs limited to get, list, and search. Naming is uniform, predictable, and easy to navigate.
At 14 tools, the count is appropriate for a JIRA server covering projects, issues, comments, transitions, users, and field metadata. Each tool has a clear role, though the set is somewhat read-heavy.
The server lacks any create, update, or transition operations, so agents cannot modify issues, add comments, or change statuses. It provides broad read capabilities but is severely incomplete for a JIRA MCP server that would normally support issue lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Read-only Reddit search API for AI agents: posts, comments, comment trees, subreddit rules.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides integration with Jira's REST API, allowing AI assistants to manage Jira issues programmatically.6411MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Jira Cloud through the REST API, supporting project management, issue operations (create, read, update, delete), JQL search, task assignments, and status transitions.
- FlicenseNot gradedqualityNot gradedmaintenanceEnables LLMs to interact with Atlassian Jira Data Center through natural language queries for semantic search and automated workflow execution. It provides secure tools to discover, inspect, and execute Jira API operations using production-ready authentication methods.33
- AlicenseNot gradedqualityCmaintenanceEnables AI models to search Jira issues using JQL and retrieve issue details through the Jira 9.12.14 API.26MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jl-0/JIRA-API-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server