API Reference
Complete reference documentation for the Darbot Deepmind MCP Server tool and its parameters.
Tool: darbot_deepmind
The primary tool for sophisticated, step-by-step reasoning through Darbot's deepmind thinking framework.
Description
This tool facilitates complex problem-solving and analysis through a structured thinking process. It supports dynamic thought revision, multi-path reasoning with branching logic, and adaptive planning that adjusts based on problem complexity.
Parameters
Required Parameters
| Parameter | Type | Description |
|---|---|---|
thought |
string | The current thinking step. Can include analytical steps, revisions, questions, realizations, approach changes, hypothesis generation, or verification. |
nextThoughtNeeded |
boolean | Indicates whether another thought step is needed. Set to false only when truly done with a satisfactory answer. |
thoughtNumber |
integer | Current thought number in the sequence (starting from 1). Can exceed initial totalThoughts if more analysis is needed. |
totalThoughts |
integer | Current estimate of total thoughts needed. Can be adjusted up or down as problem complexity becomes clearer. |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
isRevision |
boolean | Set to true if this thought revises or reconsiders previous thinking. Requires revisesThought parameter. |
revisesThought |
integer | Specifies which thought number is being reconsidered. Must be less than current thoughtNumber. Required when isRevision is true. |
branchFromThought |
integer | The thought number where this branch diverges from the main reasoning path. Used for exploring alternative solution approaches. |
branchId |
string | Unique identifier for this reasoning branch (e.g., "serverless-approach", "database-optimization"). Helps track multiple solution paths. |
needsMoreThoughts |
boolean | Explicitly signals that more thoughts are needed beyond the current estimate. Useful when reaching the end but realizing more analysis is required. |
Response Format
The tool returns a structured JSON response with the following fields:
{
"thoughtNumber": 5,
"totalThoughts": 10,
"nextThoughtNeeded": true,
"branches": ["serverless-approach", "microservices-approach"],
"thoughtHistoryLength": 5,
"isRevision": false,
"branchId": "serverless-approach",
"branchFromThought": 3
}
| Field | Type | Description |
|---|---|---|
thoughtNumber |
integer | Echo of the current thought number |
totalThoughts |
integer | Current estimate of total thoughts (adjusted if needed) |
nextThoughtNeeded |
boolean | Whether more reasoning steps are needed |
branches |
string[] | Array of all branch IDs encountered in this reasoning session |
thoughtHistoryLength |
integer | Total number of thoughts processed so far |
isRevision |
boolean? | Present if this was a revision thought |
revisesThought |
integer? | Present if this was a revision, indicates which thought was revised |
branchId |
string? | Present if this thought is part of a branch |
branchFromThought |
integer? | Present if this thought is part of a branch, indicates the branching point |
needsMoreThoughts |
boolean? | Present if explicitly signaled |
Usage Examples
Example 1: Basic Sequential Reasoning
// First thought
{
"thought": "Analyzing requirements for e-commerce platform",
"nextThoughtNeeded": true,
"thoughtNumber": 1,
"totalThoughts": 8
}
// Second thought
{
"thought": "Identifying key scalability challenges",
"nextThoughtNeeded": true,
"thoughtNumber": 2,
"totalThoughts": 8
}
Example 2: Revising Previous Thinking
{
"thought": "Revising database choice - NoSQL better for this use case",
"nextThoughtNeeded": true,
"thoughtNumber": 6,
"totalThoughts": 10,
"isRevision": true,
"revisesThought": 3
}
Example 3: Branching to Explore Alternatives
{
"thought": "Exploring serverless architecture as alternative",
"nextThoughtNeeded": true,
"thoughtNumber": 7,
"totalThoughts": 12,
"branchFromThought": 4,
"branchId": "serverless-alternative"
}
Example 4: Adjusting Scope
{
"thought": "Realizing this requires more detailed security analysis",
"nextThoughtNeeded": true,
"thoughtNumber": 8,
"totalThoughts": 15,
"needsMoreThoughts": true
}
Example 5: Final Thought
{
"thought": "Conclusion: Microservices with event-driven architecture",
"nextThoughtNeeded": false,
"thoughtNumber": 12,
"totalThoughts": 12
}
Validation Rules
Schema Validation
thoughtmust be a non-empty stringthoughtNumbermust be a positive integertotalThoughtsmust be a positive integerrevisesThought(if present) must be a positive integerbranchFromThought(if present) must be a positive integer
Business Logic Validation
- If
isRevisionis true,revisesThoughtmust be provided revisesThoughtmust be less thanthoughtNumber- If
branchIdis provided,branchFromThoughtshould be provided thoughtNumbercannot be greater thantotalThoughts(server auto-adjusts if needed)
Error Responses
When validation fails, the tool returns an error response:
{
"error": "Validation error: revisesThought must be less than thoughtNumber",
"status": "failed"
}
Reasoning Guidelines
When to Use Revisions
- New information invalidates previous assumptions
- Discovered a flaw in earlier reasoning
- Need to reconsider a decision with additional context
- Realized a better approach after further analysis
When to Use Branches
- Exploring fundamentally different solution approaches
- Comparing trade-offs between alternatives
- Investigating multiple hypotheses in parallel
- Examining what-if scenarios
When to Adjust Total Thoughts
- Problem is more complex than initially estimated
- Found solution faster than expected
- Scope of analysis has changed
- New requirements emerged during reasoning
Thought Content Best Practices
Good Thought Examples
✓ "Analyzing database options: PostgreSQL vs MongoDB"
✓ "Security concern: Need to address authentication flow"
✓ "Trade-off: Consistency vs availability in distributed system"
✓ "Hypothesis: Caching layer will reduce latency by 50%"
Avoid
✗ "Thinking..."
✗ "Next step"
✗ "Continuing analysis"
✗ "" (empty thoughts)
Thought Content Guidelines
- Be specific about what you're analyzing or deciding
- Include key insights, not just process statements
- Reference concrete details when relevant
- State hypotheses clearly when generating them
- Note important trade-offs or constraints
Integration Examples
JavaScript/TypeScript
const response = await callTool("darbot_deepmind", {
thought: "Analyzing system architecture requirements",
nextThoughtNeeded: true,
thoughtNumber: 1,
totalThoughts: 10
});
console.log(response.thoughtHistoryLength); // 1
console.log(response.branches); // []
Python (Pseudo-code)
response = mcp_client.call_tool(
"darbot_deepmind",
{
"thought": "Analyzing system architecture requirements",
"nextThoughtNeeded": True,
"thoughtNumber": 1,
"totalThoughts": 10
}
)
print(response["thoughtHistoryLength"]) # 1
print(response["branches"]) # []
Performance Notes
Memory Usage
- Each thought stored in memory (~1KB average)
- 100 thoughts ≈ 100KB memory
- Branch tracking adds minimal overhead
- Consider session breaks for very long chains (1000+ thoughts)
Response Time
- Typical response time: <5ms
- Validation: O(1) complexity
- Logging adds ~2-3ms when enabled
- Network latency dominates total time
Troubleshooting
Common Errors
Validation Error: thought must be non-empty
Cause: Empty or missing thought parameter
Solution: Provide a meaningful description of the current thinking step
Validation Error: revisesThought must be less than thoughtNumber
Cause: Attempting to revise a future or current thought
Solution: Only revise past thoughts (revisesThought < thoughtNumber)
Validation Error: revisesThought required when isRevision is true
Cause: Set isRevision to true without specifying which thought to revise
Solution: Include the revisesThought parameter