Skip to main content
Glama

get-milestone-list

Retrieve milestones for project tracking in Dooray. Organize tasks by release or sprint with essential milestone details including status, dates, and IDs for task management.

Instructions

Get list of milestones for a project.

Milestones are used to organize and track tasks by release or sprint. This tool retrieves all milestones in a project.

Note: Returns compact response with essential fields only.

URL Pattern Recognition: When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.

Examples:

  • Get all milestones: {"projectId": "123456"}

  • Get only open milestones: {"projectId": "123456", "status": "open"}

  • Get only closed milestones: {"projectId": "123456", "status": "closed"}

Returns an array of milestones with id, name, description, dates, and status. Use milestone IDs when creating or updating tasks.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdYesProject ID to get milestones from
statusNoFilter by milestone status (open or closed)

Implementation Reference

  • The main handler function for the 'get-milestone-list' tool. It fetches milestones for a given projectId (optionally filtered by status) using the projects API, applies a filter for compact response, and returns the JSON stringified list or an error message.
    export async function getMilestoneListHandler(args: GetMilestoneListInput) {
      try {
        const result = await projectsApi.getMilestones({
          projectId: args.projectId,
          status: args.status,
        });
    
        // Filter to compact response to reduce token usage (result is Milestone[], not paginated)
        const compactResult = result.map(filterMilestoneForList);
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(compactResult, null, 2),
            },
          ],
        };
      } catch (error) {
        return {
          content: [
            {
              type: 'text',
              text: `Error: ${formatError(error)}`,
            },
          ],
          isError: true,
        };
      }
    }
  • Zod schema for input validation of the get-milestone-list tool, defining projectId as required string and status as optional enum.
    export const getMilestoneListSchema = z.object({
      projectId: z.string().describe('Project ID'),
      status: z.enum(['open', 'closed']).optional().describe('Filter by milestone status'),
    });
  • Tool definition object exported for registration, including name, detailed description, and JSON schema for input (used in MCP tool listing).
    export const getMilestoneListTool = {
      name: 'get-milestone-list',
      description: `Get list of milestones for a project.
    
    Milestones are used to organize and track tasks by release or sprint. This tool retrieves all milestones in a project.
    
    **Note**: Returns compact response with essential fields only.
    
    **URL Pattern Recognition**:
    When given a Dooray URL like "https://nhnent.dooray.com/task/PROJECT_ID", extract the PROJECT_ID (the first numeric ID after "/task/") and use it as the projectId parameter.
    
    Examples:
    - Get all milestones: {"projectId": "123456"}
    - Get only open milestones: {"projectId": "123456", "status": "open"}
    - Get only closed milestones: {"projectId": "123456", "status": "closed"}
    
    Returns an array of milestones with id, name, description, dates, and status. Use milestone IDs when creating or updating tasks.`,
      inputSchema: {
        type: 'object',
        properties: {
          projectId: {
            type: 'string',
            description: 'Project ID to get milestones from',
          },
          status: {
            type: 'string',
            enum: ['open', 'closed'],
            description: 'Filter by milestone status (open or closed)',
          },
        },
        required: ['projectId'],
      },
    };
  • src/index.ts:57-57 (registration)
    Registration of the tool in the central toolRegistry map, mapping name to its handler and Zod schema for execution.
    'get-milestone-list': { handler: getMilestoneListHandler, schema: getMilestoneListSchema },
  • src/index.ts:80-80 (registration)
    Inclusion of the tool definition in the tools array used for listing available tools in MCP.
    getMilestoneListTool,
Behavior4/5

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 effectively describes key behaviors: returns a 'compact response with essential fields only', specifies the return format ('array of milestones with id, name, description, dates, and status'), and provides guidance on how to use the output ('Use milestone IDs when creating or updating tasks'). It doesn't mention rate limits, authentication needs, or pagination, but covers the essential operational behavior well.

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 well-structured with clear sections (purpose, note, URL guidance, examples, return format) and appropriately sized. Most sentences earn their place, though the 'URL Pattern Recognition' section could be slightly more concise. The information is front-loaded with the core purpose stated first.

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 list tool with no annotations and no output schema, the description provides good completeness: it explains the purpose, provides usage examples, describes the return format and fields, and gives context about how the output relates to other operations. The main gap is the lack of explicit information about authentication requirements or error conditions, but overall it's quite comprehensive for this type of 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 description coverage is 100%, so the schema already fully documents both parameters. The description adds minimal value beyond the schema by providing examples of parameter usage in different scenarios (all milestones, open only, closed only), but doesn't explain parameter semantics or constraints that aren't already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.

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's purpose with specific verb ('Get list of') and resource ('milestones for a project'), and distinguishes it from siblings by focusing on milestones rather than tasks, projects, or other entities. It explains what milestones are used for ('organize and track tasks by release or sprint'), which helps differentiate from task-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?

The description provides clear context about when to use this tool (to retrieve milestones for organizing/tracking tasks) and includes URL pattern recognition guidance for extracting projectId from Dooray URLs. However, it doesn't explicitly state when NOT to use this tool or mention specific alternatives among the sibling tools for different needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/jhl8041/dooray-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server