Skip to content

Epic Management Tools

This document provides comprehensive documentation for all 7 epic management tools available in the Gira MCP server. These tools enable you to organize work into larger initiatives, track progress across multiple tickets, and manage strategic objectives.

🎯 Tool Overview

Tool Description Category
list_epics List epics with optional filtering Query
get_epic Get detailed information about a specific epic Query
create_epic Create a new epic Create
update_epic Update an existing epic Update
add_tickets_to_epic Add tickets to an epic Association
remove_tickets_from_epic Remove tickets from an epic Association
get_epic_tickets Get all tickets in an epic Query

📋 Query Tools

list_epics

List epics with optional filtering capabilities.

Parameters: - status (string, optional): Filter by status (draft, active, completed, archived) - owner (string, optional): Filter by epic owner email or name - label (string, optional): Filter by label - limit (integer, optional): Maximum epics to return (1-100)

Returns: Array of epic summaries containing: - id: Epic identifier (e.g., EPIC-001) - title: Epic title - status: Current status - owner: Epic owner - description: Brief description - labels: List of labels - ticket_count: Number of associated tickets - completed_tickets: Number of completed tickets - progress_percentage: Completion percentage (0-100) - start_date: Epic start date (if set) - target_date: Target completion date (if set) - created_at: Creation timestamp - updated_at: Last update timestamp

Examples:

// List all active epics
{"status": "active"}

// List epics owned by specific person
{"owner": "product@example.com"}

// List epics with specific label
{"label": "q4-initiative"}

// Get recent epics
{"limit": 10}

Security: Read-only operation, rate limited to 30 calls per minute.


get_epic

Get detailed information about a specific epic.

Parameters: - epic_id (string, required): Epic ID to retrieve

Returns: Detailed epic object containing: - id: Epic identifier - title: Epic title - description: Full description - status: Current status - owner: Epic owner - labels: List of labels - start_date: Epic start date - target_date: Target completion date - actual_completion_date: Actual completion date (if completed) - ticket_count: Total associated tickets - completed_tickets: Completed tickets count - in_progress_tickets: In-progress tickets count - todo_tickets: Todo tickets count - progress_percentage: Completion percentage - estimated_story_points: Total estimated story points - completed_story_points: Completed story points - custom_fields: Additional custom data - created_at: Creation timestamp - updated_at: Last update timestamp

Examples:

// Get epic details
{"epic_id": "EPIC-001"}

// ID normalization is automatic
{"epic_id": "1"}  // Becomes EPIC-001
{"epic_id": "epic-001"}  // Becomes EPIC-001

Error Handling: - Returns error if epic not found - Validates epic ID format

Security: Read-only operation, no rate limiting.


get_epic_tickets

Get all tickets associated with an epic.

Parameters: - epic_id (string, required): Epic ID to get tickets for - status (string, optional): Filter tickets by status - include_subtasks (boolean, optional): Include subtasks, default: true - limit (integer, optional): Maximum tickets to return

Returns: Object containing: - epic: Epic summary information - tickets: Array of associated tickets - total_count: Total number of tickets - status_breakdown: Count of tickets by status - progress_summary: Progress statistics

Examples:

// Get all tickets in epic
{"epic_id": "EPIC-001"}

// Get only in-progress tickets
{"epic_id": "EPIC-001", "status": "in_progress"}

// Get tickets without subtasks
{"epic_id": "EPIC-001", "include_subtasks": false}

Security: Read-only operation.


✨ Creation Tools

create_epic

Create a new epic for organizing work initiatives.

Parameters: - title (string, required): Epic title (1-200 characters) - description (string, optional): Detailed description - owner (string, optional): Epic owner email or name - status (string, optional): Initial status, default: "draft" - labels (array[string], optional): List of labels - start_date (string, optional): Epic start date (YYYY-MM-DD) - target_date (string, optional): Target completion date (YYYY-MM-DD) - custom_fields (object, optional): Custom field values

Returns: Created epic object with: - id: Newly assigned epic ID - success: True if created successfully - epic: Full epic details

Examples:

// Basic epic creation
{
  "title": "User Authentication System",
  "description": "Implement secure user authentication with OAuth2 support",
  "owner": "product@example.com"
}

// Epic with timeline and labels
{
  "title": "Mobile App MVP",
  "description": "Develop minimum viable product for mobile application",
  "owner": "mobile-team@example.com",
  "start_date": "2024-02-01",
  "target_date": "2024-05-01",
  "labels": ["mobile", "mvp", "q2-release"]
}

// Active epic ready for work
{
  "title": "Performance Optimization",
  "status": "active",
  "owner": "backend@example.com",
  "labels": ["performance", "infrastructure"]
}

Validation: - Title must be 1-200 characters - Status must be valid (draft, active, completed, archived) - Dates must be in YYYY-MM-DD format - Owner is validated if provided

Security: Requires confirmation if configured, audit logged.


🔄 Update Tools

update_epic

Update an existing epic's fields.

Parameters: - epic_id (string, required): Epic ID to update - title (string, optional): New title - description (string, optional): New description - owner (string, optional): New owner - status (string, optional): New status - labels (array[string], optional): Replace labels - start_date (string, optional): New start date - target_date (string, optional): New target date - custom_fields (object, optional): Update custom fields

Returns: - success: True if updated successfully - updated_fields: List of fields that were changed - epic: Updated epic details

Examples:

// Update status and owner
{
  "epic_id": "EPIC-001",
  "status": "active",
  "owner": "new-owner@example.com"
}

// Update timeline
{
  "epic_id": "EPIC-002",
  "start_date": "2024-03-01", 
  "target_date": "2024-06-30"
}

// Add labels and update description
{
  "epic_id": "EPIC-003",
  "description": "Updated scope to include additional security features",
  "labels": ["security", "compliance", "high-priority"]
}

// Mark epic as completed
{
  "epic_id": "EPIC-004",
  "status": "completed"
}

Security: Requires confirmation if configured, audit logged.


🔗 Association Tools

add_tickets_to_epic

Add tickets to an epic to organize them under a larger initiative.

Parameters: - epic_id (string, required): Epic ID to add tickets to - ticket_ids (array[string], required): List of ticket IDs to add - comment (string, optional): Comment about the association

Returns: - success: True if tickets were added successfully - added_count: Number of tickets successfully added - already_in_epic: Tickets that were already in the epic - not_found: Tickets that couldn't be found - added_tickets: List of successfully added ticket summaries

Examples:

// Add multiple tickets to epic
{
  "epic_id": "EPIC-001",
  "ticket_ids": ["GCM-123", "GCM-456", "GCM-789"],
  "comment": "Core features for authentication epic"
}

// Add single ticket
{
  "epic_id": "EPIC-002",
  "ticket_ids": ["GCM-999"]
}

Validation: - Epic must exist - Ticket IDs are normalized (GCM- prefix added if missing) - Validates that tickets exist

Security: Audit logged, validates epic and ticket permissions.


remove_tickets_from_epic

Remove tickets from an epic.

Parameters: - epic_id (string, required): Epic ID to remove tickets from - ticket_ids (array[string], required): List of ticket IDs to remove - comment (string, optional): Comment about the removal

Returns: - success: True if tickets were removed successfully - removed_count: Number of tickets successfully removed - not_in_epic: Tickets that weren't in the epic - not_found: Tickets that couldn't be found - removed_tickets: List of successfully removed ticket summaries

Examples:

// Remove tickets from epic
{
  "epic_id": "EPIC-001",
  "ticket_ids": ["GCM-123", "GCM-456"],
  "comment": "Moving to different epic"
}

// Remove all tickets from epic (for epic restructuring)
{
  "epic_id": "EPIC-002",
  "ticket_ids": ["GCM-100", "GCM-101", "GCM-102", "GCM-103"]
}

Security: Audit logged, validates epic and ticket permissions.


📊 Epic Lifecycle Management

Epic Status Progression

Epics typically follow this lifecycle: 1. draft - Initial planning phase 2. active - Work is in progress 3. completed - All work finished 4. archived - Historical reference

Progress Tracking

Epic progress is automatically calculated based on associated tickets: - Progress Percentage: (Completed Tickets / Total Tickets) × 100 - Story Points Progress: (Completed Story Points / Total Story Points) × 100 - Status Breakdown: Count of tickets in each status

Best Practices

Epic Creation: - Use descriptive, outcome-focused titles - Include clear success criteria in description - Set realistic timelines - Assign a clear owner

Ticket Association: - Group related tickets that contribute to the same outcome - Keep epics focused - avoid making them too broad - Consider breaking large epics into smaller ones

Progress Monitoring: - Regular check-ins on epic progress - Update epic status as work progresses - Use epic queries to track multiple initiatives

🔍 Advanced Epic Queries

Complex Epic Filtering

// Active epics with progress details
{
  "status": "active",
  "limit": 20
}

// Epics by team ownership
{
  "owner": "backend-team@example.com"
}

// Overdue epics (requires custom implementation)
{
  "status": "active",
  "target_date_before": "2024-01-01"
}

Epic Reporting Patterns

// Get epic with full ticket breakdown
{
  "epic_id": "EPIC-001",
  "include_subtasks": true
}

// Track epic velocity
{
  "epic_id": "EPIC-002",
  "status": "in_progress"
}

🔒 Security & Best Practices

Rate Limiting

  • list_epics: 30 calls/minute
  • get_epic: No limit (read-only)
  • get_epic_tickets: 20 calls/minute
  • create_epic: 10 calls/minute
  • update_epic: 20 calls/minute
  • add_tickets_to_epic: 15 calls/minute
  • remove_tickets_from_epic: 15 calls/minute

Confirmation Requirements

These operations require confirmation when require_confirmation=true: - create_epic - update_epic - add_tickets_to_epic (for bulk operations) - remove_tickets_from_epic (for bulk operations)

Audit Logging

All epic operations are logged with: - Timestamp - Operation name - Epic ID and affected tickets - Parameters (if verbose logging enabled) - Success/failure status

Input Validation

  • Epic IDs are normalized (EPIC- prefix added if missing)
  • String lengths are enforced
  • Date formats are validated (YYYY-MM-DD)
  • Enum values are checked

Error Handling

Common error scenarios: - NotFoundError: Epic or tickets don't exist - ValidationError: Invalid parameters or dates - MCPToolError: General operation failures - PermissionError: Security restrictions

📈 Epic Analytics

Progress Metrics

  • Completion Rate: Percentage of tickets completed
  • Velocity: Story points completed per time period
  • Burndown: Remaining work over time
  • Timeline Tracking: Actual vs. planned progress

Status Distribution

  • Active Work: Tickets in progress
  • Blocked Items: Tickets that can't proceed
  • Ready Items: Tickets ready to start
  • Completed Work: Finished tickets

For ticket management within epics, see Ticket Tools. For sprint planning with epics, see Sprint Tools. For epic visualization, see Board Tools.