Skip to main content
Glama

apply_reasoning_framework

Read-onlyIdempotent

Analyze complex problems systematically using a 9-step reasoning framework to break down tasks, identify constraints, and develop logical solutions.

Instructions

추론 프레임워크|체계적 분석|논리적 사고|reasoning framework|systematic analysis|logical thinking - Apply 9-step reasoning framework to analyze complex problems systematically

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
problemYesThe problem or task to analyze using the reasoning framework
contextNoAdditional context about the problem (project constraints, tech stack, etc.)
focus_stepsNoSpecific framework steps to focus on (1-9). If not provided, all steps will be applied.

Implementation Reference

  • The main handler function that applies the 9-step reasoning framework. It defines all reasoning steps, filters based on focus_steps if provided, generates outputs using helper functions, formats the result, and returns it as ToolResult.
    export async function applyReasoningFramework(args: {
      problem: string;
      context?: string;
      focus_steps?: number[];
    }): Promise<ToolResult> {
      const { problem, context, focus_steps } = args;
    
      const allSteps: ReasoningStep[] = [
        {
          step: 1,
          title: '논리적 종속성 및 제약 조건',
          description: '정책, 작업 순서, 전제 조건, 사용자 제약을 중요도 순으로 분석',
          questions: [
            '어떤 정책이나 필수 규칙이 적용되는가?',
            '작업 순서를 재정렬해야 하는가? (선행 작업 확인)',
            '필요한 전제 조건이나 정보는?',
            '명시적 사용자 제약 조건이 있는가?'
          ],
          output: analyzeConstraints(problem, context)
        },
        {
          step: 2,
          title: '위험 평가',
          description: '행동의 결과와 향후 문제 가능성 평가',
          questions: [
            '이 행동이 미래에 문제를 일으킬 수 있는가?',
            '탐색 작업인가, 구현 작업인가? (위험 수준 결정)',
            '호환성, 보안, 성능 위험은?',
            '롤백이 가능한가?'
          ],
          output: assessRisks(problem, context)
        },
        {
          step: 3,
          title: '귀납적 추론 및 가설 탐색',
          description: '문제의 근본 원인에 대한 가설 생성 및 우선순위화',
          questions: [
            '즉각적 원인을 넘어선 근본 원인은?',
            '각 가설을 어떻게 검증할 것인가?',
            '가능성이 낮은 원인도 고려했는가?'
          ],
          output: generateHypotheses(problem, context)
        },
        {
          step: 4,
          title: '결과 평가 및 적응성',
          description: '관찰 결과에 따라 계획 조정',
          questions: [
            '이전 관찰이 계획 변경을 요구하는가?',
            '가설이 반증되었다면 새 가설을 생성했는가?',
            '막다른 길에 도달했다면 백트래킹이 필요한가?'
          ],
          output: evaluateAdaptability(problem, context)
        },
        {
          step: 5,
          title: '정보 가용성',
          description: '모든 정보 소스 식별 및 활용',
          questions: [
            '사용 가능한 도구는? (MCP, 파일 시스템, Git 등)',
            '참조해야 할 정책/규칙 문서는? (CLAUDE.md, constitution.md)',
            '이전 대화나 메모리에서 관련 정보를 찾았는가?',
            '사용자에게 물어야 할 정보는?'
          ],
          output: identifyInformationSources(problem, context)
        },
        {
          step: 6,
          title: '정밀성 및 근거',
          description: '주장에 대한 정확한 근거 제시',
          questions: [
            '정책 참조 시 정확히 인용했는가?',
            '코드 참조 시 파일명:라인을 명시했는가?',
            '숫자와 메트릭이 정확한가?'
          ],
          output: ensurePrecision(problem, context)
        },
        {
          step: 7,
          title: '완전성',
          description: '모든 요구사항, 옵션, 선호도 통합',
          questions: [
            '충돌하는 요구사항을 중요도 순으로 해결했는가?',
            '조기 결론을 내리지 않았는가? (여러 옵션 고려)',
            '모든 관련 정보 소스를 검토했는가?'
          ],
          output: ensureCompleteness(problem, context)
        },
        {
          step: 8,
          title: '끈기와 인내',
          description: '모든 추론을 소진할 때까지 포기하지 않기',
          questions: [
            '일시적 오류는 재시도했는가?',
            '명확한 한계(재시도 제한, 타임아웃)에 도달했는가?',
            '같은 실패를 반복하지 않고 전략을 변경했는가?'
          ],
          output: demonstratePersistence(problem, context)
        },
        {
          step: 9,
          title: '응답 억제',
          description: '추론 완료 후에만 행동',
          questions: [
            '위의 모든 추론이 완료되었는가?',
            '추론 과정을 문서화했는가?',
            '한 번에 하나의 주요 행동만 수행하는가?'
          ],
          output: planExecution(problem, context)
        }
      ];
    
      // Filter steps if focus_steps is provided
      const stepsToApply = focus_steps && focus_steps.length > 0
        ? allSteps.filter(s => focus_steps.includes(s.step))
        : allSteps;
    
      const result = {
        problem,
        context: context || 'No additional context provided',
        steps_applied: stepsToApply.length,
        framework_steps: stepsToApply,
        summary: generateSummary(problem, stepsToApply)
      };
    
      const output = formatOutput(result);
    
      return {
        content: [{ type: 'text', text: output }]
      };
    }
  • The ToolDefinition object defining the tool's name, description, input schema, and annotations.
    export const applyReasoningFrameworkDefinition: ToolDefinition = {
      name: 'apply_reasoning_framework',
      description: '추론 프레임워크|체계적 분석|논리적 사고|reasoning framework|systematic analysis|logical thinking - Apply 9-step reasoning framework to analyze complex problems systematically',
      inputSchema: {
        type: 'object',
        properties: {
          problem: {
            type: 'string',
            description: 'The problem or task to analyze using the reasoning framework'
          },
          context: {
            type: 'string',
            description: 'Additional context about the problem (project constraints, tech stack, etc.)'
          },
          focus_steps: {
            type: 'array',
            items: { type: 'number' },
            description: 'Specific framework steps to focus on (1-9). If not provided, all steps will be applied.'
          }
        },
        required: ['problem']
      },
      annotations: {
        title: 'Apply Reasoning Framework',
        audience: ['user', 'assistant'],
        readOnlyHint: true,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: false
      }
    };
  • src/index.ts:208-208 (registration)
    Registration of the tool handler in the toolHandlers object for dynamic dispatch during tool calls.
    'apply_reasoning_framework': applyReasoningFramework,
  • src/index.ts:141-141 (registration)
    Registration of the tool definition in the tools array provided to ListTools requests.
    applyReasoningFrameworkDefinition,
  • Supporting helper functions that generate the output for each of the 9 reasoning steps, including analysis, risk assessment, hypothesis generation, and output formatting.
    function analyzeConstraints(problem: string, context?: string): string {
      return `**제약 조건 분석**:
    - 정책/규칙: ${context ? '프로젝트 컨텍스트 확인 필요' : 'CLAUDE.md, constitution.md 확인 필요'}
    - 작업 순서: 선행 작업 식별 필요 (DB → Backend → Frontend 패턴 고려)
    - 전제 조건: ${problem}을(를) 위한 필수 정보/도구 확인
    - 사용자 제약: 명시적 요청사항 우선 적용`;
    }
    
    function assessRisks(problem: string, context?: string): string {
      const isExploration = problem.toLowerCase().includes('찾') ||
                            problem.toLowerCase().includes('분석') ||
                            problem.toLowerCase().includes('확인') ||
                            problem.toLowerCase().includes('find') ||
                            problem.toLowerCase().includes('analyze');
    
      return `**위험 평가**:
    - 작업 유형: ${isExploration ? '탐색 작업 (낮은 위험)' : '구현 작업 (높은 위험)'}
    - 롤백 가능성: ${isExploration ? '높음' : '확인 필요'}
    - 호환성 위험: 기존 코드와의 충돌 가능성 검토
    - 보안 위험: SQL Injection, XSS, 민감 정보 노출 검토
    - 성능 위험: N+1 쿼리, 메모리 누수, 불필요한 리렌더 검토`;
    }
    
    function generateHypotheses(problem: string, context?: string): string {
      return `**가설 생성**:
    1. **가설 1** (가능성: 높음)
       - 근거: ${problem}의 가장 직접적인 원인
       - 검증: [도구/파일]을 통해 확인
    2. **가설 2** (가능성: 중간)
       - 근거: 간접적 요인 또는 환경 차이
       - 검증: 추가 정보 수집 필요
    3. **가설 3** (가능성: 낮음)
       - 근거: 엣지 케이스 또는 드문 상황
       - 검증: 다른 가설 반증 시 검토
    
    **우선순위**: 가능성 높은 순으로 검증하되, 낮은 가능성도 완전히 배제하지 않음`;
    }
    
    function evaluateAdaptability(problem: string, context?: string): string {
      return `**적응성 평가**:
    - 관찰 결과 반영: 새로운 정보에 따라 계획 수정 필요 여부 확인
    - 가설 업데이트: 반증된 가설 폐기, 새 가설 생성
    - 백트래킹: 막다른 길 도달 시 이전 단계로 돌아가 다른 경로 탐색
    - 계획 재평가: 전체 접근법이 유효한지 주기적으로 검토`;
    }
    
    function identifyInformationSources(problem: string, context?: string): string {
      return `**정보 소스**:
    1. **도구**:
       - MCP 도구 (hi-ai 38개 도구)
       - 파일 시스템 (Read, Write, Edit, Glob, Grep)
       - Git, 패키지 관리자
    2. **정책/규칙**:
       - CLAUDE.md (기술 스택, 아키텍처)
       - .vibe/constitution.md (프로젝트 규칙)
       - skills/ 폴더 (품질 기준, 코딩 표준)
    3. **메모리**:
       - recall_memory (이전 세션 정보)
       - restore_session_context (컨텍스트 복원)
    4. **사용자 확인**:
       - 비즈니스 로직 세부사항
       - 디자인 선호도
       - 우선순위 결정`;
    }
    
    function ensurePrecision(problem: string, context?: string): string {
      return `**정밀성 확보**:
    - 정책 인용: "CLAUDE.md:12에 따르면..." 형식으로 명시
    - 코드 참조: "users.py:45의 User 모델" 형식으로 파일명:라인 포함
    - 숫자 정확성: 복잡도, 커버리지, 성능 지표를 정확한 수치로 표현
    - 근거 제시: 모든 주장에 대해 출처와 근거 명확히`;
    }
    
    function ensureCompleteness(problem: string, context?: string): string {
      return `**완전성 확보**:
    - 충돌 해결: 정책 → 작업 순서 → 전제 조건 → 사용자 선호도 순
    - 옵션 탐색: 단일 해결책에 조기 고정하지 않고 여러 대안 검토
    - 정보 검토: 모든 관련 정보 소스(#5) 철저히 검토
    - 사용자 확인: 불확실한 부분은 가정하지 말고 확인`;
    }
    
    function demonstratePersistence(problem: string, context?: string): string {
      return `**끈기 전략**:
    - 일시적 오류: 지수 백오프로 재시도 (예: 1초, 2초, 4초...)
    - 한계 인식: 명확한 재시도 제한, 타임아웃 도달 시 중단
    - 전략 변경: 같은 실패 반복 X → 다른 접근법 시도
    - 철저한 분석: 시간이 걸리더라도 모든 추론 단계 완료`;
    }
    
    function planExecution(problem: string, context?: string): string {
      return `**실행 계획**:
    1. **추론 문서화**: 복잡한 결정의 경우 추론 과정 간략히 설명
    2. **단계별 실행**: 한 번에 하나의 주요 행동만 수행
    3. **결과 확인**: 각 행동의 결과를 확인한 후 다음 단계로 진행
    4. **롤백 대비**: 문제 발생 시 이전 상태로 복구 가능하도록 준비`;
    }
    
    function generateSummary(problem: string, steps: ReasoningStep[]): string {
      return `9단계 추론 프레임워크를 "${problem}"에 적용했습니다.
    총 ${steps.length}개 단계를 체계적으로 분석하여 논리적 종속성, 위험, 가설, 정보 소스를 포괄적으로 검토했습니다.`;
    }
    
    function formatOutput(result: any): string {
      let output = `# 추론 프레임워크 분석\n\n`;
      output += `**문제**: ${result.problem}\n`;
      output += `**컨텍스트**: ${result.context}\n`;
      output += `**적용 단계**: ${result.steps_applied}/9\n\n`;
      output += `---\n\n`;
    
      for (const step of result.framework_steps) {
        output += `## ${step.step}. ${step.title}\n\n`;
        output += `${step.description}\n\n`;
        output += `**핵심 질문**:\n`;
        step.questions.forEach((q: string) => {
          output += `- ${q}\n`;
        });
        output += `\n${step.output}\n\n`;
        output += `---\n\n`;
      }
    
      output += `## 요약\n\n${result.summary}`;
    
      return output;
    }
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds that it's a 'systematic analysis' with a '9-step framework', which provides some behavioral context about the structured approach. However, it doesn't mention what the 9 steps actually are, what the output looks like, or any rate limits/performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise but has some redundancy with the repeated keywords ('추론 프레임워크|체계적 분석|논리적 사고|reasoning framework|systematic analysis|logical thinking'). The core functionality is stated clearly, but the keyword repetition doesn't add meaningful value and could be more streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, 100% schema coverage, and comprehensive annotations, the description provides adequate context about what the tool does. However, without an output schema and with multiple similar sibling tools, the description could better explain what distinguishes this framework and what kind of output to expect from the analysis.

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 all parameters are documented in the schema. The description doesn't add any additional parameter semantics beyond what's already in the schema descriptions. The baseline score of 3 is appropriate since the schema does the heavy lifting for parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies a 9-step reasoning framework to analyze complex problems systematically. It specifies the verb 'apply' and the resource 'reasoning framework', but doesn't explicitly differentiate from similar sibling tools like 'step_by_step_analysis' or 'analyze_problem' that might also perform systematic analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple analysis-focused sibling tools (analyze_complexity, analyze_problem, step_by_step_analysis, etc.), there's no indication of when this specific 9-step framework is preferred or what distinguishes it from other analysis approaches.

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

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