Skip to main content
Glama

sequentialthinking

Analyze complex problems through dynamic thinking steps that adapt and evolve, breaking down tasks into manageable parts while maintaining context for multi-step solutions.

Instructions

A detailed tool for dynamic and reflective problem-solving through thoughts. This tool helps analyze problems through a flexible thinking process that can adapt and evolve. Each thought can build on, question, or revise previous insights as understanding deepens.

When to use this tool:

  • Breaking down complex problems into steps

  • Planning and design with room for revision

  • Analysis that might need course correction

  • Problems where the full scope might not be clear initially

  • Problems that require a multi-step solution

  • Tasks that need to maintain context over multiple steps

  • Situations where irrelevant information needs to be filtered out

You should:

  1. Start with an initial estimate of needed thoughts, but be ready to adjust

  2. Feel free to question or revise previous thoughts

  3. Don't hesitate to add more thoughts if needed, even at the "end"

  4. Express uncertainty when present

  5. Mark thoughts that revise previous thinking or branch into new paths

  6. Ignore information that is irrelevant to the current step

  7. Generate a solution hypothesis when appropriate

  8. Verify the hypothesis based on the Chain of Thought steps

  9. Repeat the process until satisfied with the solution

  10. Provide a single, ideally correct answer as the final output

  11. Only set next_thought_needed to false when truly done and a satisfactory answer is reached

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
thoughtYes
thoughtNumberYes
totalThoughtsYes
nextThoughtNeededYes
isRevisionNo
revisesThoughtNo
branchFromThoughtNo
branchIdNo
needsMoreThoughtsNo

Implementation Reference

  • The 'processThought' method in 'SequentialThinkingServer' is the core handler that processes the 'sequentialthinking' tool request. It validates the input, stores it, formats it for logging, and returns the processed thought data.
      public processThought(input: unknown): ThoughtData {
        const validatedInput = this.validateThoughtData(input);
        
        // Store the thought for future reference
        this.storeThought(validatedInput);
        
        // Log formatted output to console
        const formattedOutput = this.formatThoughtOutput(validatedInput);
        console.error(formattedOutput);
        
        return validatedInput;
      }
    }
  • The 'validateThoughtData' method defines and validates the expected input structure for the 'sequentialthinking' tool.
    private validateThoughtData(input: unknown): ThoughtData {
      const data = input as Record<string, unknown>;
    
      if (!data.thought || typeof data.thought !== 'string') {
        throw new Error('Invalid thought: must be a string');
      }
      if (!data.thoughtNumber || typeof data.thoughtNumber !== 'number') {
        throw new Error('Invalid thoughtNumber: must be a number');
      }
      if (!data.totalThoughts || typeof data.totalThoughts !== 'number') {
        throw new Error('Invalid totalThoughts: must be a number');
      }
      if (typeof data.nextThoughtNeeded !== 'boolean') {
        throw new Error('Invalid nextThoughtNeeded: must be a boolean');
      }
    
      // Optional fields
      const isRevision = data.isRevision !== undefined ? !!data.isRevision : undefined;
      const revisesThought = data.revisesThought !== undefined && typeof data.revisesThought === 'number' 
        ? data.revisesThought as number 
        : undefined;
      const branchFromThought = data.branchFromThought !== undefined && typeof data.branchFromThought === 'number' 
        ? data.branchFromThought as number 
        : undefined;
      const branchId = data.branchId !== undefined && typeof data.branchId === 'string' 
        ? data.branchId as string 
        : undefined;
      const needsMoreThoughts = data.needsMoreThoughts !== undefined ? !!data.needsMoreThoughts : undefined;
    
      return {
        thought: data.thought as string,
        thoughtNumber: data.thoughtNumber as number,
        totalThoughts: data.totalThoughts as number,
        nextThoughtNeeded: data.nextThoughtNeeded as boolean,
        isRevision,
        revisesThought,
        branchFromThought,
        branchId,
        needsMoreThoughts
      };
    }
  • src/index.ts:1031-1045 (registration)
    The 'sequentialthinking' tool is handled within the server's 'CallToolRequestSchema' request handler, delegating the logic to 'thinkingServer.processThought'.
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
        switch (request.params.name) {
            case "sequentialthinking": {
                const result = thinkingServer.processThought(
                    request.params.arguments
                );
                return {
                    content: [
                        {
                            type: "text",
                            text: JSON.stringify(result, null, 2),
                        },
                    ],
                };
            }
Behavior3/5

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

With no annotations provided, the description must carry full behavioral disclosure. It explains the cognitive process (revisions, branching, accumulation of thoughts) implying statefulness, but fails to specify technical behaviors like side effects, persistence guarantees, rate limits, idempotency, or what constitutes the actual return value.

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 structured with clear sections (intro, when-to-use, procedural steps) but is excessively verbose. The 7 'when to use' bullets contain significant overlap (e.g., 'multi-step solution' vs 'multiple steps'), and the 11-item procedural list mixes high-level advice with parameter-specific instructions without clear hierarchy.

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?

Given the complexity (9 parameters, no output schema, no annotations), the description provides adequate procedural context but leaves critical gaps. It does not describe the output format, the storage/persistence model of thoughts, or explicit parameter mappings, making it minimally viable but incomplete for implementation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description inadequately compensates. While it discusses concepts like 'next_thought_needed' (point 11) and marking revisions (point 5), it uses snake_case descriptions that don't clearly map to the camelCase parameter names (e.g., isRevision, revisesThought, branchFromThought), leaving parameter semantics largely undocumented.

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 performs 'dynamic and reflective problem-solving through thoughts' and explains the adaptive, iterative mechanism. However, it does not explicitly differentiate this sequential approach from sibling tools like 'structuredargumentation' or 'scientificmethod', leaving some ambiguity in tool selection.

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?

Provides extensive 'When to use' criteria (7 specific scenarios) and detailed procedural steps (11 numbered items). This offers strong contextual guidance on when to select this tool over others, though it lacks explicit 'when NOT to use' exclusions or named alternative tools.

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/chirag127/Clear-Thought-MCP-server'

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