Skip to main content
Glama

analyze_problem

Read-onlyIdempotent

Break down complex problems into structured steps to identify how to approach and analyze them effectively.

Instructions

문제 분석|어떻게 접근|분석해줘|analyze this|how to approach|break this down - Break down complex problem into structured steps

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
problemYesProblem to analyze
domainNoProblem domain

Implementation Reference

  • The main handler function that implements the core logic of the 'analyze_problem' tool. It takes a problem description and optional domain, then returns a structured analysis with breakdown, considerations, and next steps.
    export async function analyzeProblem(args: { problem: string; domain?: string }): Promise<ToolResult> {
      const { problem, domain = 'general' } = args;
      
      const problemAnalysis = {
        action: 'analyze_problem',
        problem,
        domain,
        analysis: {
          breakdown: [
            'Define the problem clearly',
            'Identify key constraints and requirements',
            'Break down into smaller sub-problems',
            'Determine solution approach',
            'Plan implementation steps'
          ],
          considerations: [
            'What are the inputs and expected outputs?',
            'Are there any edge cases to consider?',
            'What are the performance requirements?',
            'How will this integrate with existing systems?'
          ],
          nextSteps: [
            'Research existing solutions',
            'Create detailed implementation plan',
            'Identify potential risks and mitigation strategies',
            'Define success criteria'
          ]
        },
        status: 'success'
      };
      
      return {
        content: [{ type: 'text', text: `Problem: ${problem}\nDomain: ${domain}\n\nBreakdown:\n${problemAnalysis.analysis.breakdown.map((b, i) => `${i+1}. ${b}`).join('\n')}\n\nConsiderations:\n${problemAnalysis.analysis.considerations.map(c => `- ${c}`).join('\n')}\n\nNext Steps:\n${problemAnalysis.analysis.nextSteps.map(n => `- ${n}`).join('\n')}` }]
      };
    }
  • The ToolDefinition schema defining the input schema, description, and annotations for the 'analyze_problem' tool.
    export const analyzeProblemDefinition: ToolDefinition = {
      name: 'analyze_problem',
      description: '문제 분석|어떻게 접근|분석해줘|analyze this|how to approach|break this down - Break down complex problem into structured steps',
      inputSchema: {
        type: 'object',
        properties: {
          problem: { type: 'string', description: 'Problem to analyze' },
          domain: { type: 'string', description: 'Problem domain' }
        },
        required: ['problem']
      },
      annotations: {
        title: 'Analyze Problem',
        audience: ['user', 'assistant'],
        readOnlyHint: true,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: false
      }
    };
  • src/index.ts:192-192 (registration)
    Registration of the analyzeProblem handler function in the toolHandlers object, which is used for dynamic tool dispatch during execution.
    'analyze_problem': analyzeProblem,
  • src/index.ts:127-127 (registration)
    Registration of the analyzeProblemDefinition in the tools array, which is returned in ListToolsRequestSchema responses.
    analyzeProblemDefinition,
  • src/index.ts:37-37 (registration)
    Import statement bringing in the tool definition and handler from the implementation file.
    import { analyzeProblemDefinition, analyzeProblem } from './tools/thinking/analyzeProblem.js';
Behavior3/5

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

Annotations provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds minimal behavioral context beyond this—it implies a step-by-step breakdown but doesn't specify output format, limitations, or side effects. No contradiction with annotations exists, but the description doesn't enrich behavioral understanding significantly.

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

Conciseness2/5

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

The description is poorly structured and not front-loaded. It starts with a confusing keyword-like phrase ('문제 분석|어떻게 접근|분석해줘|analyze this|how to approach|break this down') before the core function. This wastes space and reduces clarity. The core message is concise, but the overall structure is inefficient.

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

Completeness2/5

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

Given no output schema and annotations covering basic safety, the description lacks completeness. It doesn't explain what the structured steps output looks like, any limitations (e.g., problem size), or how it differs from similar tools. For a tool with 2 parameters and many siblings, this leaves significant gaps for an agent to infer usage.

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%, with clear parameter descriptions ('Problem to analyze', 'Problem domain'). The description adds no parameter-specific details beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline is 3, as the description doesn't compensate but doesn't detract either.

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

Purpose3/5

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

The description states the tool breaks down complex problems into structured steps, which is a clear purpose. However, it's somewhat vague ('complex problem' is broad) and doesn't differentiate from siblings like 'step_by_step_analysis' or 'analyze_complexity' that might have overlapping functionality. The initial phrase '문제 분석|어떻게 접근|분석해줘|analyze this|how to approach|break this down' appears to be keyword-like and doesn't add clarity.

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 many sibling tools (e.g., 'step_by_step_analysis', 'analyze_complexity', 'analyze_requirements'), there's no indication of context, prerequisites, or exclusions. The agent must infer usage from the tool name alone, which is insufficient.

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