MCP server for sequential thinking and problem solving
The server defines a single tool 'sequentialthinking' with an explicit schema and comprehensive description. However, the tool has significant structural issues: (1) the description is verbose (1200+ chars, well above the 1024 baseline) and reads like a user manual rather than a concise LLM-optimization guide; (2) parameter naming is inconsistent with camelCase (nextThoughtNeeded, thoughtNumber) which deviates from snake_case conventions common in MCP tools; (3) optional parameters lack clear descriptions of when/why to use them; (4) the tool is READ_ONLY but performs state mutation (maintaining internal history, tracking branches), creating a dangerous semantic mismatch; (5) no error handling guidance or recovery patterns are documented; (6) output schema is partially undocumented, the tool returns a JSON summary but the full response structure and fields are not formally defined for LLM consumption.
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 Key features: - You can adjust total_thoughts up or down as you progress - You can question or revise previous thoughts - You can add more thoughts even after reaching what seemed like the end - You can express uncertainty and explore alternative approaches - Not every thought needs to build linearly - you can branch or backtrack - Generates a solution hypothesis - Verifies the hypothesis based on the Chain of Thought steps - Repeats the process until satisfied - Provides a correct answer Parameters explained: - thought: Your current thinking step, which can include: * Regular analytical steps * Revisions of previous thoughts * Questions about previous decisions * Realizations about needing more analysis * Changes in approach * Hypothesis generation * Hypothesis verification - next_thought_needed: True if you need more thinking, even if at what seemed like the end - thought_number: Current number in sequence (can go beyond initial total if needed) - total_thoughts: Current estimate of thoughts needed (can be adjusted up/down) - is_revision: A boolean indicating if this thought revises previous thinking - revises_thought: If is_revision is true, which thought number is being reconsidered - branch_from_thought: If branching, which thought number is the branching point - branch_id: Identifier for the current branch (if any) - needs_more_thoughts: If reaching end but realizing more thoughts needed 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
Tool marked READ_ONLY but performs state mutation (appends to thoughtHistory, modifies branches dict). This is a critical semantic error, READ_ONLY signals to the agent that the tool is safe to retry and has no side effects, but the implementation maintains internal state. Either the tool is stateful (remove READ_ONLY) or it should not maintain history.
Tool description is 1200+ characters, exceeding the 1024-character baseline by ~17%. The description reads as a user manual (explaining 'when to use', 'key features', 'you should') rather than a concise LLM-instruction guide. Compress to 150-300 chars focusing on WHAT it does and WHEN to call it instead of similar tools.
Parameter naming uses camelCase (nextThoughtNeeded, thoughtNumber, totalThoughts, isRevision, revisesThought, branchFromThought, branchId, needsMoreThoughts) instead of snake_case. This deviates from MCP and LLM conventions where snake_case is standard for JSON field names. Rename to: next_thought_needed, thought_number, total_thoughts, is_revision, revises_thought, branch_from_thought, branch_id, needs_more_thoughts.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Optional parameters (isRevision, revisesThought, branchFromThought, branchId, needsMoreThoughts) lack clear descriptions. The schema marks them optional but does not explain when/why an LLM should use them or what happens if they're omitted. Add descriptions like: 'isRevision (optional): Set to true if this thought reconsiders or corrects a prior thought. If true, revisesThought must specify the thought number being reconsidered.'
Output schema is undocumented. The tool returns a JSON object with fields (thoughtNumber, totalThoughts, nextThoughtNeeded, branches, thoughtHistoryLength) but this structure is not formally described in the tool definition. LLMs need to know the exact output fields, their types, and meanings to chain tools and extract data. Document the response schema explicitly.
No error handling or recovery guidance. The processThought method catches errors and returns an error JSON, but the tool description does not explain what errors are possible (e.g., invalid thought_number, negative total_thoughts) or how the LLM should respond. Add a section: 'Possible errors: Invalid thoughtNumber (must be >= 1), Invalid totalThoughts (must be >= thoughtNumber). If validation fails, adjust and retry.'
Tool accepts unconstrained string for 'thought' parameter. No length limits, format constraints, or validation rules are documented. An LLM could pass a 100MB string, causing resource exhaustion or crashes. Add constraint: 'thought must be a non-empty string, max 4096 characters.'
No parameter relationships or dependencies documented. The schema shows optional fields like branchFromThought and branchId, but does not explain that if branchFromThought is set, branchId must also be set, and vice versa. Undocumented dependencies lead to invalid invocations.