Skip to main content
Glama
differentstuff

Session Think MCP

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_dominance for easy reference

  • Session 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/sdk for optimal performance

  • Minimal Dependencies: Only the MCP SDK and Zod for validation

Quick Start

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-mcp

Then 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

SESSION_DIR

Storage location for session files

./.session-think-sessions

SESSION_MAX_RETURN

Maximum thoughts returned by default

50

SESSION_NAME_PATTERN

Regex pattern for session name validation

^[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){2,}$

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 position

  • topic:research:quantum_computing - Research topic on quantum computing

  • project:website:redesign - Project notes for website redesign

  • analysis: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 text

  • sessionName (optional): Session name in format category:name:subcategory

  • mode (optional): Thinking mode - linear, creative, critical, strategic, empathetic

  • tags (optional): Array of tags for categorization

  • relates_to (optional): ID of related thought

  • relationship_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_DIR environment variable

  • Format: 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_dominance

Continuing 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 verify

Testing

Test the server locally:

# Run with stdio transport
node index.js

# Test with MCP Inspector
npx @modelcontextprotocol/inspector session-think-mcp

Performance

  • 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.


Note: This tool requires Node.js 18+ and is optimized for use with Claude Desktop and the Model Context Protocol ecosystem.

Available Tools

10 tools
cleanup_sessionsCleanup Old SessionsC

Manually clean up old thinking sessions based on age.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxAgeDaysNoMaximum age in days before sessions are deleted

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNameYesSession name to delete (format: category:name:subcategory)

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesSearch query to find related thoughts
sessionNameYesSession name to search in (format: category:name:subcategory)
exclude_thought_idNoExclude a specific thought ID from results
relationship_typesNoFilter by specific relationship types

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNameYesSession name (format: category:name:subcategory)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sessions to return
offsetNoPagination offset

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
newSessionNameYesNew session name (format: category:name:subcategory)
oldSessionNameYesCurrent session name (format: category:name:subcategory)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of sessions to return
queryYesSearch query (searches content, tags, and modes across all sessions)
offsetNoPagination offset

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesSearch query (searches content, tags, and modes)
offsetNoPagination offset
sessionNameYesSession name to search in (format: category:name:subcategory)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOptional thinking mode to structure your reasoning
tagsNoOptional tags for categorizing thoughts
reasoningYesYour thinking, reasoning, or analysis text
relates_toNoID of thought this relates to
sessionNameNoSession name in format: category:name:subcategory (e.g., thesis:NVDA:ai_dominance). IMPORTANT: Always provide this for persistent sessions.
relationship_typeNoType of relationship to the referenced thought

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of thoughts to return (default: SESSION_MAX_RETURN env or 50)
offsetNoPagination offset
sessionNameYesSession name to view (format: category:name:subcategory)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 10 tool updatesv1.3.1
    • First observedcleanup_sessions
    • First observeddelete_session
    • First observedfind_thought_relationships
    • First observedget_session_info
    • First observedlist_sessions
    • First observedrename_session
    • First observedsearch_all_sessions
    • First observedsearch_in_session
    • First observedthink
    • First observedview_session

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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 npm
    28
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides 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.
    6
    336 PyPI
    2
    BSD 3-Clause