Session Think MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Session Think MCPAdd a thought to the project:website:redesign session about color scheme"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Session Think MCP
A JavaScript native MCP server implementing a session-based "think" tool with structured session naming and search capabilities.
Based on Anthropic's research on enhancing Claude's complex problem-solving abilities through dedicated thinking workspaces.
npm: https://www.npmjs.com/package/session-think-mcp
git: https://github.com/differentstuff/session-think-mcp
Overview
This MCP server provides a persistent thinking workspace that preserves reasoning text without modification, creating dedicated space for structured thinking during complex tasks. The tool follows the zero-interference principle - it simply preserves and structures your reasoning without any cognitive overhead.
Related MCP server: Think Strategies
Features
Structured Session Naming: Semantic names like
thesis:NVDA:ai_dominancefor easy referenceSession Search: Search within sessions or across all sessions by keyword
Persistent Storage: Thoughts preserved across sessions in local files
Pagination: Efficient retrieval with configurable limits
Thinking Modes: Optional support for different thinking strategies
Relationship Tracking: Link thoughts with relationships (builds_on, supports, contradicts, etc.)
Native MCP Protocol: Built with
@modelcontextprotocol/sdkfor optimal performanceMinimal Dependencies: Only the MCP SDK and Zod for validation
Quick Start
Option 1: NPX (Recommended)
No installation required. Add to your Claude Desktop configuration:
{
"mcpServers": {
"session-think": {
"command": "npx",
"args": ["-y", "session-think-mcp@latest"]
}
}
}Option 2: Global Installation
npm install -g session-think-mcpThen configure Claude Desktop:
{
"mcpServers": {
"session-think": {
"command": "session-think-mcp"
}
}
}Configuration
Claude Desktop Configuration File
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Environment Variables
Configure behavior via environment variables:
{
"mcpServers": {
"session-think": {
"command": "npx",
"args": ["-y", "session-think-mcp@latest"],
"env": {
"SESSION_DIR": "/path/to/sessions",
"SESSION_MAX_RETURN": "50",
"SESSION_NAME_PATTERN": "^[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){2,}$"
}
}
}
}Variable | Description | Default |
| Storage location for session files |
|
| Maximum thoughts returned by default |
|
| Regex pattern for session name validation |
|
Session Naming Convention
Sessions use structured names for easy reference and organization:
Format: category:name:subcategory
Examples:
thesis:NVDA:ai_dominance- Investment thesis about NVIDIA's AI positiontopic:research:quantum_computing- Research topic on quantum computingproject:website:redesign- Project notes for website redesignanalysis:competitor:openai- Competitor analysis of OpenAI
Rules:
At least 3 parts separated by colons
Each part: alphanumeric, underscores, or hyphens
If no name provided, generates
TEMP:timestamp:random
Available Tools
think
Add a thought to a session.
{
"reasoning": "Your thinking text here...",
"sessionName": "thesis:NVDA:ai_dominance",
"mode": "critical",
"tags": ["analysis", "investment"]
}Parameters:
reasoning(required): Your thinking textsessionName(optional): Session name in formatcategory:name:subcategorymode(optional): Thinking mode -linear,creative,critical,strategic,empathetictags(optional): Array of tags for categorizationrelates_to(optional): ID of related thoughtrelationship_type(optional):builds_on,supports,contradicts,refines,synthesizes
list_sessions
List all available sessions with metadata.
{
"limit": 50,
"offset": 0
}view_session
View contents of a specific session.
{
"sessionName": "thesis:NVDA:ai_dominance",
"limit": 50,
"offset": 0
}search_in_session
Search for thoughts within a specific session.
{
"sessionName": "thesis:NVDA:ai_dominance",
"query": "market share",
"limit": 10,
"offset": 0
}search_all_sessions
Search across all sessions for matching content.
{
"query": "artificial intelligence",
"limit": 20,
"offset": 0
}get_session_info
Get metadata about a session without loading thoughts.
{
"sessionName": "thesis:NVDA:ai_dominance"
}rename_session
Rename an existing session.
{
"oldSessionName": "TEMP:1740387654321:abc123",
"newSessionName": "thesis:NVDA:ai_dominance"
}delete_session
Delete a session permanently.
{
"sessionName": "thesis:NVDA:ai_dominance"
}cleanup_sessions
Remove old sessions based on age.
{
"maxAgeDays": 90
}find_thought_relationships
Search for related thoughts within a session.
{
"sessionName": "thesis:NVDA:ai_dominance",
"query": "competition",
"relationship_types": ["builds_on", "contradicts"],
"limit": 10
}Session Storage
Sessions are stored locally as JSON files:
Default location:
./.session-think-sessions(current directory)Override: Set
SESSION_DIRenvironment variableFormat: One JSON file per session
Filename: Session name with colons replaced by
___(e.g.,thesis___NVDA___ai_dominance.json)
Usage Examples
Starting a New Session
Claude, please use the think tool to analyze NVIDIA's AI market position.
Use session name: thesis:NVDA:ai_dominanceContinuing a Session
Claude, continue my thinking in session thesis:NVDA:ai_dominance about competitive threats.Searching for Sessions
Claude, search all my sessions for anything related to "artificial intelligence".Viewing a Session
Claude, show me the last 20 thoughts from session thesis:NVDA:ai_dominance.Architecture
Server: Native JavaScript MCP server using official SDK
Storage: File-based persistent session storage (JSON)
Transport: StdioServerTransport for maximum compatibility
Validation: Zod schemas for input validation
Output: Structured JSON with preserved reasoning and session context
Development
# Clone repository
git clone https://github.com/differentstuff/session-think-mcp.git
cd session-think-mcp
# Install dependencies
npm install
# Start development server
npm start
# Run verification
npm run verifyTesting
Test the server locally:
# Run with stdio transport
node index.js
# Test with MCP Inspector
npx @modelcontextprotocol/inspector session-think-mcpPerformance
Startup time: < 100ms
Memory usage: < 20MB
Response time: < 10ms for typical operations
Zero processing overhead: Direct text preservation
Research Background
This implementation is based on Anthropic's engineering research demonstrating that a "think" tool creates dedicated space for structured thinking, resulting in:
54% improvement in customer service simulations
Better policy adherence in complex scenarios
Enhanced multi-step problem solving capabilities
More consistent decision making across tasks
License
MIT License - see LICENSE file for details.
Links
Note: This tool requires Node.js 18+ and is optimized for use with Claude Desktop and the Model Context Protocol ecosystem.
Available Tools
10 toolscleanup_sessionsCleanup Old SessionsC
Manually clean up old thinking sessions based on age.
| Name | Required | Description | Default |
|---|---|---|---|
| maxAgeDays | No | Maximum age in days before sessions are deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies destruction (the param text says sessions are 'deleted') but never states irreversibility, scope (all sessions vs. this user/workspace), or required permissions for a destructive bulk operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no waste, and the scope ('old ... based on age') is front-loaded. It is perhaps too terse given it is a destructive tool, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the only place an agent could learn about irreversibility, scope of deletion, or what the return looks like — and it covers none of these. For a destructive cleanup tool this is a substantial gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented there, including default 90 and minimum 1. The description's 'based on age' adds nothing the schema doesn't already say, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (clean up) and resource (old thinking sessions) qualified by an age criterion, so the agent knows roughly what the tool does. It does not explicitly distinguish itself from the sibling delete_session, which also removes sessions, so the boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Manually' hints that this is the on-demand counterpart to some automatic sweep, but the description never says when to prefer this over delete_session or what preconditions apply. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sessionDelete SessionB
Delete a thinking session permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionName | Yes | Session name to delete (format: category:name:subcategory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and 'permanently' does convey irreversibility, which is the key behavioral fact for a delete. However, it does not state permission requirements, whether the session must exist first, or the consequence for related thoughts, leaving notable gaps and forcing some inference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key constraint ('permanently') front-loaded. No wasted words, though brevity leaves little room for the routing detail an agent would need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations, no output schema, and a destructibility claim that should be fleshed out, this is too thin. It should say whether the operation is recoverable, what permissions or preconditions apply, and how it differs from cleanup_sessions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents sessionName and its category:name:subcategory format. The description adds nothing about the parameter, which is acceptable given the high coverage, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (a thinking session), and adds the scope 'permanently'. It doesn't name a sibling like cleanup_sessions, which also relates to session removal, so an agent cannot fully distinguish the two from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling cleanup_sessions or rename_session. The permanent nature hints at a caution condition but offers no explicit alternative or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_thought_relationshipsFind Thought RelationshipsC
Search for thoughts that could be related to current reasoning within a session.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Search query to find related thoughts | |
| sessionName | Yes | Session name to search in (format: category:name:subcategory) | |
| exclude_thought_id | No | Exclude a specific thought ID from results | |
| relationship_types | No | Filter by specific relationship types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It never states whether matching is semantic or keyword-based, how relationships are derived, or what the results contain. Only the implicit read-only nature of 'search' is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though arguably under-specified rather than maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and five parameters including an enum of relationship types, the description should explain the concept of a thought relationship and what a result looks like. It omits the return shape, ranking behavior, and the meaning of the relationship types, leaving the agent with only the schema to work from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (including relationship_types, exclude_thought_id, limit, and the category:name:subcategory session format) are already documented in the schema. The description adds no parameter meaning beyond that, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('search') and resource ('thoughts'), plus a scoping notion ('related to current reasoning within a session'). However, it does not distinguish this from siblings like search_in_session or search_all_sessions, so an agent cannot tell which search to pick from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite three other search/session tools in the sibling set. The agent must infer that this is the 'relationship-aware' search variant purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_infoGet Session InfoA
Get metadata about a specific session without loading all thoughts.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionName | Yes | Session name (format: category:name:subcategory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one genuine behavioral trait — that this is a lightweight lookup avoiding the cost of loading thoughts — but says nothing about permissions, failure behavior for a nonexistent session, or what 'metadata' actually contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the scope qualifier is placed where it does the most work.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool this is close to adequate, but with no output schema the description should hint at what metadata is returned, and it does not. An agent knows what it gets conceptually but not concretely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema (including the category:name:subcategory format), so the baseline is 3. The description adds no parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (session metadata) and adds a scoping qualifier ('without loading all thoughts') that implicitly distinguishes it from heavier siblings like view_session. It does not name an alternative explicitly, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without loading all thoughts' implies the use case (lightweight metadata lookup rather than full session inspection), which is a reasonable implied routing hint. However, it never names view_session or list_sessions as the alternatives, nor states prerequisites, so guidance is inferred rather than given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsList SessionsC
List all available thinking sessions with metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sessions to return | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state result ordering, whether the list is paginated (the schema's limit/offset imply it, but the description never mentions it), or what "metadata" concretely contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though the efficiency comes partly from omitting useful information rather than from tight editing of richer content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter list tool with a 100%-covered schema and no output schema, the description is minimally sufficient. Still, the content of "metadata" and the pagination/default behavior are left entirely to the schema, so the agent must infer the shape of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and offset are fully documented in the schema with defaults and bounds. The description adds nothing beyond that, which is acceptable but no better than the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("List") and resource ("thinking sessions") and notes that metadata is included, so an agent knows what it retrieves. However, it does nothing to distinguish itself from siblings like search_all_sessions or get_session_info, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus search_all_sessions, search_in_session, or get_session_info. The word "all" hints at an unfiltered enumeration, but no condition, exclusion, or alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_sessionRename SessionC
Rename an existing session to a new name.
| Name | Required | Description | Default |
|---|---|---|---|
| newSessionName | Yes | New session name (format: category:name:subcategory) | |
| oldSessionName | Yes | Current session name (format: category:name:subcategory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It states the mutation but omits whether the session must already exist, whether the old name becomes invalid, side effects on history/links, or error behavior. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste; exactly appropriate for this simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is too thin. It should mention preconditions, side effects, and whether the old name is released, none of which are covered elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema, including the category:name:subcategory format. The description adds nothing beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rename) and resource (session), so the core action is clear. It doesn't distinguish itself from siblings like delete_session or view_session, but the verb makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance or prerequisites are given. It doesn't say whether the session must exist, whether renaming affects references, or when to prefer this over delete/recreate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_all_sessionsSearch All SessionsA
Search for sessions containing thoughts matching a keyword. Returns session indicators, not full content.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of sessions to return | |
| query | Yes | Search query (searches content, tags, and modes across all sessions) | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful output characteristic — 'Returns session indicators, not full content' — which tells the agent to expect identifiers rather than payloads. However, it says nothing about read-only nature, permissions, or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the return-shape caveat placed immediately after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does address the return type ('session indicators'), which is the key missing piece otherwise. It could say more about result shape or ordering, but for a simple three-parameter search tool it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds 'matching a keyword' while the schema states the query searches content, tags, and modes across all sessions — a slight narrowing that the schema does not confirm, and pagination parameters go unmentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (sessions) with a scope qualifier — thoughts matching a keyword across all sessions. The sibling search_in_session is implicitly differentiated by the 'all sessions' framing, though it is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'all sessions' scope and the contrast with the per-session sibling, but there is no explicit when-to-use or when-not-to-use statement or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_sessionSearch in SessionB
Search for thoughts within a specific session by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Search query (searches content, tags, and modes) | |
| offset | No | Pagination offset | |
| sessionName | Yes | Session name to search in (format: category:name:subcategory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and it delivers almost nothing: no statement about read-only nature, behavior when the session doesn't exist, result ordering, or pagination. Only the keyword-matching nature of the search is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. It is efficient, though its brevity borders on under-specification for a 4-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should say more about what is returned and how it differs from search_all_sessions. The schema covers parameters and pagination, so basic invocation is possible, but routing and return expectations are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the 4 parameters documented (limit, query, offset, sessionName format), so the schema does the heavy lifting. The description adds only "by keyword," which is weaker than the schema's own note that the query searches content, tags, and modes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search), resource (thoughts), and scope (within a specific session), and the scope implicitly sets it apart from the sibling search_all_sessions. It never names that sibling explicitly, so the differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Within a specific session" implies you use this when you already know the session, which contrasts implicitly with search_all_sessions. However, there is no explicit when-to-use/when-not statement or named alternative, leaving usage to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thinkThink ToolB
A persistent thinking workspace that preserves reasoning across sessions.
IMPORTANT: Always provide a sessionName parameter with format: category:name:subcategory Examples:
thesis:NVDA:ai_dominance
topic:research:quantum_computing
project:website:redesign
If no sessionName is provided, a temporary session will be generated (TEMP:timestamp:random).
The sessionName is used to store and retrieve your thoughts. Use consistent naming to maintain context across conversations.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Optional thinking mode to structure your reasoning | |
| tags | No | Optional tags for categorizing thoughts | |
| reasoning | Yes | Your thinking, reasoning, or analysis text | |
| relates_to | No | ID of thought this relates to | |
| sessionName | No | Session name in format: category:name:subcategory (e.g., thesis:NVDA:ai_dominance). IMPORTANT: Always provide this for persistent sessions. | |
| relationship_type | No | Type of relationship to the referenced thought |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose real behavior: durable cross-session persistence and an auto-generated TEMP session when sessionName is absent. It does not explain what happens to reasoning afterward, how relationships (relates_to/relationship_type) are resolved, or any retention/visibility characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose leads, followed by a clearly flagged IMPORTANT block and concrete examples, so the most actionable content is front-loaded. There is minor redundancy between the body text and the schema's sessionName description, but no wasted padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no output schema, the description covers session handling well but leaves the reasoning-graph side (relates_to and relationship_type enums) and the return behavior unexplained. An agent can call it, but cannot fully predict how thoughts link or what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented in the schema, making 3 the baseline. The description reinforces sessionName format and persistence semantics, but adds nothing about mode, tags, relates_to, or relationship_type beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description frames the tool as 'a persistent thinking workspace that preserves reasoning across sessions,' which conveys the general intent but never states the concrete action (recording/storing a unit of reasoning). Sibling tools (list_sessions, view_session, search_in_session) make clear this is the write side of a session-based store, but the description doesn't explicitly position itself that way.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives strong guidance on the sessionName parameter (always supply it, use consistent naming for cross-conversation context) and states the fallback when it is omitted. However, it never says when to reach for think versus the sibling retrieval/search tools, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_sessionView SessionB
View the contents of a thinking session. Returns the last N thoughts by default.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of thoughts to return (default: SESSION_MAX_RETURN env or 50) | |
| offset | No | Pagination offset | |
| sessionName | Yes | Session name to view (format: category:name:subcategory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one genuinely useful behavior — that results are ordered/limited to the most recent N thoughts rather than the whole session — which the schema's 'limit' field does not state. It says nothing about permissions, pagination behavior across offsets, or what happens when the session does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and immediately followed by the default-return behavior. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry more weight, yet it does not describe the shape of a returned thought or session, nor error behavior for missing sessions. For a three-parameter read tool the coverage is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset and sessionName are all documented in the schema, including the category:name:subcategory format and the SESSION_MAX_RETURN default. The description adds only the 'last N' framing and no further parameter semantics; baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('View the contents of a thinking session') and adds a scope note about the default return window. It does not, however, distinguish itself from closely related siblings such as search_in_session or get_session_info, so an agent must infer which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description implies reading a whole session, but with search_in_session and get_session_info in the sibling set, the agent gets no signal on when this tool is preferable to those. The 'last N by default' note is a default, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.3.1- First observed
cleanup_sessions - First observed
delete_session - First observed
find_thought_relationships - First observed
get_session_info - First observed
list_sessions - First observed
rename_session - First observed
search_all_sessions - First observed
search_in_session - First observed
think - First observed
view_session
TDQS
Scored across 10 tools
Each tool has a distinct resource/action: session lifecycle (list/view/info/rename/delete/cleanup), thought capture (think), and search variants (in-session, cross-session, and relationship discovery). Overlaps are minimized by clear distinctions such as metadata vs. content retrieval and keyword search vs. related-thought discovery.
All names use consistent snake_case and most follow a verb_noun pattern (e.g., view_session, search_all_sessions, delete_session). The only notable exception is 'think', which is a bare verb rather than verb_noun, but it is still readable and predictable.
The 10 tools are well-scoped for a persistent session/thought workspace. Each tool earns its place, covering lifecycle, retrieval, search, and cleanup without obvious redundancy.
Core session lifecycle and search/read operations are well covered, including cleanup, metadata, and cross-session search. A minor gap exists around thought-level mutation (no update/delete for individual thoughts) and session export, though thought permanence may be intentional.
Maintenance
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables structured problem-solving through sequential thinking stages with persistent storage and analysis. Helps break down complex problems into manageable cognitive steps while tracking progress and generating summaries of the entire thought process.MIT
- AlicenseBqualityDmaintenanceProvides 10 structured reasoning strategies (Chain of Thought, ReAct, Tree of Thoughts, etc.) for complex problem-solving with session persistence, branching, and tool integration capabilities.37 npm28MIT
- AlicenseNot gradedqualityCmaintenanceEnables searching and retrieving Claude Code conversation history that would otherwise expire after 30 days. Supports full-text search, semantic search, and session management with automatic backup of all conversations.7 npm28MIT
- AlicenseAqualityBmaintenanceProvides comprehensive session management for Claude Code with automatic initialization/cleanup, quality checkpoints, and local conversation memory with semantic search for capturing learnings across coding sessions.6336 PyPI2BSD 3-Clause