Skip to main content
Glama

format_as_plan

Transform content into structured plans with prioritized steps, time estimates, and progress tracking checkboxes for clear task organization.

Instructions

계획으로|정리해줘|체크리스트|format as plan|make a plan|organize this|checklist - Format content into clear plans

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentYesContent to format as a plan
priorityNoDefault priority level
includeTimeEstimatesNoInclude time estimates for each step
includeCheckboxesNoInclude checkboxes for tracking progress

Implementation Reference

  • The core handler function for 'format_as_plan' tool. Parses input content into actionable steps, assigns priorities and time estimates, formats with checkboxes, computes totals, and returns structured ToolResult.
    export async function formatAsPlan(args: { content: string; priority?: string; includeTimeEstimates?: boolean; includeCheckboxes?: boolean }): Promise<ToolResult> {
      const { content: planContent, priority = 'medium', includeTimeEstimates = true, includeCheckboxes = true } = args;
      
      // Parse content into actionable steps
      const sentences = planContent.split(/[.!?]+/).filter(s => s.trim().length > 10);
      const planSteps = sentences.map((sentence, index) => {
        const stepNumber = index + 1;
        const cleanSentence = sentence.trim();
        
        // Estimate time based on content complexity
        let timeEstimate = '5min';
        if (cleanSentence.length > 100) timeEstimate = '15min';
        else if (cleanSentence.length > 50) timeEstimate = '10min';
        
        // Detect priority keywords
        let stepPriority = priority;
        if (cleanSentence.match(/urgent|critical|important|first|must/i)) stepPriority = 'high';
        else if (cleanSentence.match(/later|eventually|nice|optional/i)) stepPriority = 'low';
        
        // Format step
        let formattedStep = includeCheckboxes ? `${stepNumber}. □ ` : `${stepNumber}. `;
        formattedStep += cleanSentence;
        if (includeTimeEstimates) formattedStep += ` (${stepPriority.toUpperCase()}, ${timeEstimate})`;
        
        return {
          number: stepNumber,
          content: cleanSentence,
          priority: stepPriority,
          timeEstimate,
          formatted: formattedStep
        };
      });
      
      // Calculate total time
      const totalMinutes = planSteps.reduce((total: number, step: any) => {
        const minutes = parseInt(step.timeEstimate.replace('min', ''));
        return total + minutes;
      }, 0);
      
      const planResult = {
        action: 'format_as_plan',
        originalContent: planContent,
        formattedPlan: planSteps.map((s: any) => s.formatted).join('\n'),
        steps: planSteps.length,
        totalEstimatedTime: `${totalMinutes} minutes`,
        breakdown: {
          high: planSteps.filter((s: any) => s.priority === 'high').length,
          medium: planSteps.filter((s: any) => s.priority === 'medium').length,
          low: planSteps.filter((s: any) => s.priority === 'low').length
        },
        status: 'success'
      };
      
      return {
        content: [{ type: 'text', text: `${planResult.formattedPlan}\n\nTotal: ${planResult.totalEstimatedTime} | Priority: ${planResult.breakdown.high}H ${planResult.breakdown.medium}M ${planResult.breakdown.low}L` }]
      };
    }
  • ToolDefinition for 'format_as_plan' including name, description, inputSchema with properties for content, priority, time estimates, checkboxes, and annotations.
    export const formatAsPlanDefinition: ToolDefinition = {
      name: 'format_as_plan',
      description: '계획으로|정리해줘|체크리스트|format as plan|make a plan|organize this|checklist - Format content into clear plans',
      inputSchema: {
        type: 'object',
        properties: {
          content: { type: 'string', description: 'Content to format as a plan' },
          priority: { type: 'string', description: 'Default priority level', enum: ['high', 'medium', 'low'] },
          includeTimeEstimates: { type: 'boolean', description: 'Include time estimates for each step' },
          includeCheckboxes: { type: 'boolean', description: 'Include checkboxes for tracking progress' }
        },
        required: ['content']
      },
      annotations: {
        title: 'Format as Plan',
        audience: ['user', 'assistant'],
        readOnlyHint: true,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: false
      }
    };
  • src/index.ts:88-145 (registration)
    Registration of formatAsPlanDefinition in the tools array used for ListToolsRequest.
    const tools = [
      // Core Utilities (2)
      getCurrentTimeDefinition,
      previewUiAsciiDefinition,
    
      // Memory Management - Basic (6)
      saveMemoryDefinition,
      recallMemoryDefinition,
      updateMemoryDefinition,
      deleteMemoryDefinition,
      listMemoriesDefinition,
      prioritizeMemoryDefinition,
    
      // Memory Management - Graph (4) - v2.0 NEW
      linkMemoriesDefinition,
      getMemoryGraphDefinition,
      searchMemoriesAdvancedDefinition,
      createMemoryTimelineDefinition,
    
      // Memory Management - Session Context (1) - v2.1 NEW
      getSessionContextDefinition,
    
      // Code Analysis - Semantic (2)
      findSymbolDefinition,
      findReferencesDefinition,
    
      // Code Analysis - Advanced (1) - v2.0 NEW
      analyzeDependencyGraphDefinition,
    
      // Code Quality (6)
      getCodingGuideDefinition,
      applyQualityRulesDefinition,
      validateCodeQualityDefinition,
      analyzeComplexityDefinition,
      checkCouplingCohesionDefinition,
      suggestImprovementsDefinition,
    
      // Thinking & Planning (8)
      createThinkingChainDefinition,
      analyzeProblemDefinition,
      stepByStepAnalysisDefinition,
      formatAsPlanDefinition,
      generatePrdDefinition,
      createUserStoriesDefinition,
      analyzeRequirementsDefinition,
      featureRoadmapDefinition,
    
      // Prompt Engineering (3)
      enhancePromptDefinition,
      analyzePromptDefinition,
      enhancePromptGeminiDefinition,
    
      // Reasoning (1)
      applyReasoningFrameworkDefinition,
    
      // Analytics (1) - v2.0 NEW
      getUsageAnalyticsDefinition
    ];
  • src/index.ts:155-212 (registration)
    Registration of formatAsPlan handler in toolHandlers object for dynamic dispatch in CallToolRequest.
    const toolHandlers: Record<string, ToolHandler> = {
      // Time & UI
      'get_current_time': getCurrentTime,
      'preview_ui_ascii': previewUiAscii,
    
      // Memory - Basic
      'save_memory': saveMemory,
      'recall_memory': recallMemory,
      'update_memory': updateMemory,
      'delete_memory': deleteMemory,
      'list_memories': listMemories,
      'prioritize_memory': prioritizeMemory,
    
      // Memory - Graph (v2.0 NEW)
      'link_memories': linkMemories,
      'get_memory_graph': getMemoryGraph,
      'search_memories_advanced': searchMemoriesAdvanced,
      'create_memory_timeline': createMemoryTimeline,
    
      // Memory - Session Context (v2.1 NEW)
      'get_session_context': getSessionContext,
    
      // Code Analysis
      'find_symbol': findSymbol,
      'find_references': findReferences,
      'analyze_dependency_graph': analyzeDependencyGraph,
    
      // Code Quality
      'get_coding_guide': getCodingGuide,
      'apply_quality_rules': applyQualityRules,
      'validate_code_quality': validateCodeQuality,
      'analyze_complexity': analyzeComplexity,
      'check_coupling_cohesion': checkCouplingCohesion,
      'suggest_improvements': suggestImprovements,
    
      // Thinking
      'create_thinking_chain': createThinkingChain,
      'analyze_problem': analyzeProblem,
      'step_by_step_analysis': stepByStepAnalysis,
      'format_as_plan': formatAsPlan,
    
      // Planning
      'generate_prd': generatePrd,
      'create_user_stories': createUserStories,
      'analyze_requirements': analyzeRequirements,
      'feature_roadmap': featureRoadmap,
    
      // Prompt
      'enhance_prompt': enhancePrompt,
      'analyze_prompt': analyzePrompt,
      'enhance_prompt_gemini': enhancePromptGemini,
    
      // Reasoning
      'apply_reasoning_framework': applyReasoningFramework,
    
      // Analytics (v2.0 NEW)
      'get_usage_analytics': getUsageAnalytics
    };
  • src/index.ts:39-39 (registration)
    Import of formatAsPlanDefinition and formatAsPlan handler from the implementation file.
    import { formatAsPlanDefinition, formatAsPlan } from './tools/thinking/formatAsPlan.js';

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/su-record/hi-ai'

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