Skip to main content
Glama
api.md25 kB
# ThoughtMCP API Reference ## Overview This document provides comprehensive API documentation for all public interfaces in the ThoughtMCP cognitive architecture. The system is organized into modular components, each with well-defined interfaces and responsibilities. > **For MCP Tool Documentation**: See [MCP Tools Reference](mcp-tools.md) for complete documentation of all MCP tools including schemas, examples, and error codes. > **For Integration Guides**: See [Integration Guide](integration.md) for platform-specific integration instructions (Kiro IDE, Claude Desktop, Cursor, custom clients). ## Table of Contents - [MCP Tools](#mcp-tools) - [Memory System](#memory-system) - [Embedding System](#embedding-system) - [Graph System](#graph-system) - [Temporal Decay](#temporal-decay) - [Search System](#search-system) - [Reasoning System](#reasoning-system) - [Framework Selection](#framework-selection) - [Confidence System](#confidence-system) - [Bias Detection](#bias-detection) - [Emotion Detection](#emotion-detection) - [Metacognitive System](#metacognitive-system) - [Database Layer](#database-layer) - [Utilities](#utilities) --- ## MCP Tools ThoughtMCP exposes cognitive capabilities through MCP (Model Context Protocol) tools. These tools enable LLM clients to interact with the system. ### Available Tools | Category | Tool | Description | | ----------------- | ------------------------ | ---------------------------------------- | | **Memory** | `remember` | Store new memory with embeddings | | **Memory** | `recall` | Retrieve memories with composite scoring | | **Memory** | `update_memory` | Update existing memory | | **Memory** | `forget` | Delete memory (soft/hard) | | **Memory** | `search` | Full-text and vector search | | **Reasoning** | `think` | Single or parallel reasoning | | **Reasoning** | `analyze` | Framework-based analysis | | **Reasoning** | `ponder` | Parallel stream reasoning | | **Reasoning** | `breakdown` | Problem decomposition | | **Metacognitive** | `assess_confidence` | Confidence assessment | | **Metacognitive** | `detect_bias` | Bias detection | | **Metacognitive** | `detect_emotion` | Emotion analysis | | **Metacognitive** | `evaluate` | Reasoning quality analysis | For complete tool documentation including schemas and examples, see **[MCP Tools Reference](mcp-tools.md)**. --- ## Memory System ### MemoryRepository The central interface for all memory operations including creation, retrieval, updates, and deletion. **Location**: `src/memory/memory-repository.ts` #### Methods ##### `create(content: MemoryContent, metadata?: MemoryMetadata): Promise<Memory>` Creates a new memory with automatic embedding generation and waypoint connections. **Parameters:** - `content` (MemoryContent): Memory content and user information - `content` (string): The actual memory content - `userId` (string): User identifier - `sessionId` (string, optional): Session identifier - `primarySector` (MemorySector): Primary memory sector - `metadata` (MemoryMetadata, optional): Additional metadata - `keywords` (string[]): Keywords for search - `tags` (string[]): Tags for categorization - `category` (string): Category classification - `importance` (number): Importance score (0-1) **Returns**: Promise<Memory> - The created memory with generated ID and embeddings **Throws**: - `ValidationError`: If content is invalid - `DatabaseError`: If database operation fails **Example**: ```typescript const memory = await memoryRepository.create( { content: "Met with Sarah to discuss Q4 roadmap", userId: "user-123", primarySector: "episodic", }, { keywords: ["meeting", "roadmap", "Q4"], tags: ["work", "planning"], importance: 0.8, } ); ``` ##### `retrieve(memoryId: string): Promise<Memory | null>` Retrieves a specific memory by ID and automatically applies reinforcement. **Parameters:** - `memoryId` (string): Unique memory identifier **Returns**: Promise<Memory | null> - The memory if found, null otherwise **Example**: ```typescript const memory = await memoryRepository.retrieve("mem-abc123"); if (memory) { console.log(memory.content); } ``` ##### `search(query: SearchQuery): Promise<SearchResult>` Performs comprehensive search across memories using multiple strategies. **Parameters:** - `query` (SearchQuery): Search parameters - `text` (string, optional): Full-text search query - `embedding` (number[], optional): Vector for similarity search - `sectors` (MemorySector[], optional): Sectors to search - `metadata` (MetadataFilters, optional): Metadata filters - `minStrength` (number, optional): Minimum strength threshold - `limit` (number, optional): Maximum results (default: 10) **Returns**: Promise<SearchResult> - Search results with scores **Example**: ```typescript const results = await memoryRepository.search({ text: "project planning", sectors: ["semantic", "episodic"], metadata: { tags: ["work"] }, limit: 5, }); ``` ##### `update(memoryId: string, updates: Partial<Memory>): Promise<Memory>` Updates an existing memory. Regenerates embeddings if content changes. **Parameters:** - `memoryId` (string): Memory identifier - `updates` (Partial<Memory>): Fields to update **Returns**: Promise<Memory> - Updated memory **Example**: ```typescript const updated = awaitpository.update("mem-abc123", { content: "Updated content", importance: 0.9, }); ``` ##### `delete(memoryId: string, soft?: boolean): Promise<void>` Deletes a memory. Supports soft delete (strength = 0) or hard delete (remove from database). **Parameters:** - `memoryId` (string): Memory identifier - `soft` (boolean, optional): If true, performs soft delete (default: false) **Example**: ```typescript // Soft delete (can be recovered) await memoryRepository.delete("mem-abc123", true); // Hard delete (permanent) await memoryRepository.delete("mem-abc123", false); ``` --- ## Embedding System ### EmbeddingEngine Generates sector-specific embeddings for the HMD memory system. **Location**: `src/embeddings/embedding-engine.ts` #### Methods ##### `generateAllSectorEmbeddings(content: MemoryContent): Promise<SectorEmbeddings>` Generates embeddings for all five memory sectors. **Parameters:** - `content` (MemoryContent): Memory content to embed **Returns**: Promise<SectorEmbeddings> - Embeddings for all sectors - `episodic` (number[]): Temporal/contextual embedding - `semantic` (number[]): Factual/conceptual embedding - `procedural` (number[]): Process/action embedding - `emotional` (number[]): Affective embedding - `reflective` (number[]): Meta-cognitive embedding **Example**: ```typescript const embeddings = await embeddingEngine.generateAllSectorEmbeddings({ content: "Learned how to optimize database queries", userId: "user-123", primarySector: "procedural", }); ``` ##### `generate(text: string, sector: MemorySector): Promise<number[]>` Generates embedding for a specific sector. **Parameters:** - `text` (string): Text to embed - `sector` (MemorySector): Target sector **Returns**: Promise<number[]> - Embedding vector **Example**: ```typescript const embedding = await embeddingEngine.generate("Database optimization techniques", "semantic"); ``` ### EmbeddingStorage Manages storage and retrieval of embeddings in PostgreSQL. **Location**: `src/embeddings/embedding-storage.ts` #### Methods ##### `storeEmbeddings(memoryId: string, embeddings: SectorEmbeddings): Promise<void>` Stores embeddings for all sectors. **Parameters:** - `memoryId` (string): Memory identifier - `embeddings` (SectorEmbeddings): Embeddings to store **Example**: ```typescript await embeddingStorage.storeEmbeddings("mem-abc123", embeddings); ``` ##### `vectorSimilaritySearch(queryEmbedding: number[], sector: MemorySector, limit: number): Promise<SimilarityResult[]>` Performs vector similarity search using pgvector. **Parameters:** - `queryEmbedding` (number[]): Query vector - `sector` (MemorySector): Sector to search - `limit` (number): Maximum results **Returns**: Promise<SimilarityResult[]> - Similar memories with scores **Example**: ```typescript const similar = await embeddingStorage.vectorSimilaritySearch(queryEmbedding, "semantic", 10); ``` --- ## Graph System ### WaypointGraphBuilder Creates and maintains sparse waypoint graph connections between memories. **Location**: `src/graph/waypoint-builder.ts` #### Methods ##### `createWaypointLinks(newMemory: Memory, existingMemories: Memory[]): Promise<Link[]>` Creates 1-3 waypoint connections to most similar memories. **Parameters:** - `newMemory` (Memory): New memory to connect - `existingMemories` (Memory[]): Candidate memories for connections **Returns**: Promise<Link[]> - Created links **Example**: ```typescript const links = await waypointBuilder.createWaypointLinks(newMemory, candidateMemories); ``` ### GraphTraversal Traverses the waypoint graph to find connected memories. **Location**: `src/graph/graph-traversal.ts` #### Methods ##### `expandViaWaypoint(startMemoryId: string, hops: number): Promise<Memory[]>` Expands from a memory through waypoint connections. **Parameters:** - `startMemoryId` (string): Starting memory - `hops` (number): Number of hops to traverse **Returns**: Promise<Memory[]> - Connected memories **Example**: ```typescript const connected = await graphTraversal.expandViaWaypoint("mem-abc123", 2); ``` --- ## Temporal Decay ### TemporalDecayEngine Applies exponential decay to memory strength over time. **Location**: `src/temporal/decay-engine.ts` #### Methods ##### `applyDecay(memory: Memory): Promise<void>` Applies decay formula: strength = initial × exp(-λ × time) **Parameters:** - `memory` (Memory): Memory to decay **Example**: ```typescript await decayEngine.applyDecay(memory); ``` ##### `calculateDecayedStrength(memory: Memory, currentTime: Date): number` Calculates what the strength should be at a given time. **Parameters:** - `memory` (Memory): Memory to calculate for - `currentTime` (Date): Time to calculate strength at **Returns**: number - Calculated strength (0-1) **Example**: ```typescript const strength = decayEngine.calculateDecayedStrength(memory, new Date()); ``` ### BackgroundScheduler Schedules and executes background decay maintenance. **Location**: `src/temporal/background-scheduler.ts` #### Methods ##### `start(cronExpression: string): void` Starts the background scheduler with a cron expression. **Parameters:** - `cronExpression` (string): Cron schedule (default: "0 2 \* \* \*" - daily at 2 AM) **Example**: ```typescript backgroundScheduler.start("0 2 * * *"); // Daily at 2 AM ``` ##### `stop(): Promise<void>` Stops the background scheduler gracefully. **Example**: ```typescript await backgroundScheduler.stop(); ``` --- ## Search System ### MemorySearchEngine Orchestrates multi-strategy memory search. **Location**: `src/search/memory-search-engine.ts` #### Methods ##### `search(query: SearchQuery): Promise<SearchResult>` Performs comprehensive search using vector similarity, full-text, metadata, and graph traversal. **Parameters:** - `query` (SearchQuery): Search parameters **Returns**: Promise<SearchResult> - Ranked results with composite scores **Example**: ```typescript const results = await searchEngine.search({ text: "machine learning", sectors: ["semantic"], limit: 10, }); ``` ### FullTextSearchEngine PostgreSQL full-text search using ts_vector. **Location**: `src/search/full-text-search-engine.ts` #### Methods ##### `search(query: string, filters?: MetadataFilters): Promise<Memory[]>` Performs full-text search with optional metadata filtering. **Parameters:** - `query` (string): Search query (supports boolean operators) - `filters` (MetadataFilters, optional): Additional filters **Returns**: Promise<Memory[]> - Matching memories **Example**: ```typescript const results = await fullTextSearch.search("database AND optimization", { tags: ["technical"] }); ``` --- ## Reasoning System ### ParallelReasoningOrchestrator Coordinates four parallel reasoning streams. **Location**: `src/reasoning/orchestrator.ts` #### Methods ##### `processParallel(problem: Problem, timeout?: number): Promise<ParallelReasoningResult>` Executes all four reasoning streams in parallel with coordination. **Parameters:** - `problem` (Problem): Problem to reason about - `timeout` (number, optional): Total timeout in ms (default: 30000) **Returns**: Promise<ParallelReasoningResult> - Synthesized results from all streams **Example**: ```typescript const result = await reasoningOrchestrator.processParallel({ description: "How to improve system performance?", context: { currentLoad: "high", budget: "limited" }, }); ``` ### SynthesisEngine Synthesizes results from multiple reasoning streams. **Location**: `src/reasoning/synthesis-engine.ts` #### Methods ##### `synthesizeResults(results: StreamResult[]): SynthesizedResult` Combines insights from all streams into coherent synthesis. **Parameters:** - `results` (StreamResult[]): Results from reasoning streams **Returns**: SynthesizedResult - Integrated insights and recommendations **Example**: ```typescript const synthesis = synthesisEngine.synthesizeResults([ analyticalResult, creativeResult, criticalResult, syntheticResult, ]); ``` --- ## Framework Selection ### ProblemClassifier Classifies problems across multiple dimensions. **Location**: `src/framework/problem-classifier.ts` #### Methods ##### `classify(problem: Problem): ProblemClassification` Classifies problem complexity, uncertainty, stakes, and time pressure. **Parameters:** - `problem` (Problem): Problem to classify **Returns**: ProblemClassification - Multi-dimensional classification **Example**: ```typescript const classification = problemClassifier.classify({ description: "Design new feature with unclear requirements", }); // Returns: { complexity: "complex", uncertainty: "high", stakes: "important", timePressure: "moderate" } ``` ### FrameworkSelector Selects optimal thinking framework for a problem. **Location**: `src/framework/framework-selector.ts` #### Methods ##### `selectFramework(problem: Problem, context: Context): FrameworkSelection` Selects best framework based on problem characteristics. **Parameters:** - `problem` (Problem): Problem to solve - `context` (Context): Additional context **Returns**: FrameworkSelection - Selected framework with confidence **Example**: ```typescript const selection = frameworkSelector.selectFramework(problem, context); // Returns: { framework: "design-thinking", confidence: 0.85, alternatives: [...] } ``` --- ## Confidence System ### MultiDimensionalConfidenceAssessor Assesses confidence across multiple dimensions. **Location**: `src/confidence/multi-dimensional-assessor.ts` #### Methods ##### `assessConfidence(context: ReasoningContext): ConfidenceAssessment` Evaluates confidence based on evidence quality, reasoning coherence, completeness, and uncertainty. **Parameters:** - `context` (ReasoningContext): Reasoning context to assess **Returns**: ConfidenceAssessment - Multi-dimensional confidence scores **Example**: ```typescript const assessment = confidenceAssessor.assessConfidence({ problem, evidence, reasoning, }); ``` ### CalibrationLearningEngine Learns to calibrate confidence predictions with actual outcomes. **Location**: `src/confidence/calibration-learning-engine.ts` #### Methods ##### `trackPredictionOutcome(prediction: Prediction, outcome: Outcome): void` Records prediction-outcome pair for learning. **Parameters:** - `prediction` (Prediction): Predicted confidence - `outcome` (Outcome): Actual outcome **Example**: ```typescript calibrationEngine.trackPredictionOutcome( { confidence: 0.8, domain: "technical" }, { success: true, actualConfidence: 0.85 } ); ``` --- ## Bias Detection ### BiasPatternRecognizer Detects cognitive biases in reasoning. **Location**: `src/bias/bias-pattern-recognizer.ts` #### Methods ##### `detectBiases(reasoning: ReasoningChain): DetectedBias[]` Detects all bias types in reasoning chain. **Parameters:** - `reasoning` (ReasoningChain): Reasoning to analyze **Returns**: DetectedBias[] - Detected biases with severity **Example**: ```typescript const biases = biasRecognizer.detectBiases(reasoningChain); // Returns: [{ type: "confirmation", severity: 0.7, evidence: [...] }] ``` ### BiasCorrectionEngine Applies correction strategies to detected biases. **Location**: `src/bias/bias-correction-engine.ts` #### Methods ##### `correctBias(bias: DetectedBias, reasoning: ReasoningChain): CorrectedReasoning` Applies appropriate correction strategy. **Parameters:** - `bias` (DetectedBias): Bias to correct - `reasoning` (ReasoningChain): Original reasoning **Returns**: CorrectedReasoning - Corrected reasoning with explanations **Example**: ```typescript const corrected = biasCorrectionEngine.correctBias(bias, reasoning); ``` --- ## Emotion Detection ### CircumplexEmotionAnalyzer Analyzes emotions using the Circumplex model. **Location**: `src/emotion/circumplex-analyzer.ts` #### Methods ##### `analyzeCircumplex(text: string): CircumplexState` Detects valence, arousal, and dominance dimensions. **Parameters:** - `text` (string): Text to analyze **Returns**: CircumplexState - Three-dimensional emotion state **Example**: ```typescript const emotion = circumplexAnalyzer.analyzeCircumplex("I'm excited about this new opportunity!"); // Returns: { valence: 0.8, arousal: 0.7, dominance: 0.6, confidence: 0.85 } ``` ### DiscreteEmotionClassifier Classifies discrete emotions (joy, sadness, anger, etc.). **Location**: `src/emotion/discrete-emotion-classifier.ts` #### Methods ##### `classifyEmotions(text: string): EmotionClassification[]` Classifies all 11 discrete emotion types. **Parameters:** - `text` (string): Text to classify **Returns**: EmotionClassification[] - Detected emotions with scores **Example**: ```typescript const emotions = emotionClassifier.classifyEmotions(text); // Returns: [{ emotion: "joy", score: 0.8 }, { emotion: "gratitude", score: 0.6 }] ``` --- ## Metacognitive System ### PerformanceMonitoringSystem Tracks system performance metrics. **Location**: `src/metacognitive/performance-monitoring-system.ts` #### Methods ##### `trackReasoningQuality(result: ReasoningResult): void` Records reasoning quality metrics. **Parameters:** - `result` (ReasoningResult): Reasoning result to track **Example**: ```typescript performanceMonitor.trackReasoningQuality(result); ``` ##### `generatePerformanceReport(period: TimePeriod): PerformanceReport` Generates performance report for a time period. **Parameters:** - `period` (TimePeriod): Time period to report on **Returns**: PerformanceReport - Comprehensive performance metrics **Example**: ```typescript const report = performanceMonitor.generatePerformanceReport({ start: new Date("2025-01-01"), end: new Date("2025-01-31"), }); ``` ### SelfImprovementSystem Implements continuous self-improvement mechanisms. **Location**: `src/metacognitive/self-improvement-system.ts` #### Methods ##### `integrateFeedback(feedback: UserFeedback): void` Integrates user feedback into learning systems. **Parameters:** - `feedback` (UserFeedback): User feedback to integrate **Example**: ```typescript selfImprovementSystem.integrateFeedback({ taskId: "task-123", rating: 4, comments: "Good analysis but missed edge case", }); ``` --- ## Database Layer ### DatabaseConnectionManager Manages PostgreSQL connections with pooling. **Location**: `src/database/connection-manager.ts` #### Methods ##### `connect(): Promise<void>` Establishes database connection pool. **Example**: ```typescript await dbManager.connect(); ``` ##### `query<T>(sql: string, params?: any[]): Promise<QueryResult<T>>` Executes parameterized query. **Parameters:** - `sql` (string): SQL query - `params` (any[], optional): Query parameters **Returns**: Promise<QueryResult<T>> - Query results **Example**: ```typescript const result = await dbManager.query("SELECT * FROM memories WHERE user_id = $1", ["user-123"]); ``` ##### `transaction<T>(callback: (client: PoolClient) => Promise<T>): Promise<T>` Executes operations in a transaction. **Parameters:** - `callback` (function): Transaction operations **Returns**: Promise<T> - Transaction result **Example**: ```typescript await dbManager.transaction(async (client) => { await client.query("INSERT INTO memories ..."); await client.query("INSERT INTO memory_embeddings ..."); }); ``` --- ## Utilities ### Logger Structured logging utility. **Location**: `src/utils/logger.ts` #### Methods ##### `debug(message: string, meta?: object): void` Logs debug message. **Example**: ```typescript logger.debug("Processing memory", { memoryId, userId }); ``` ##### `info(message: string, meta?: object): void` Logs info message. **Example**: ```typescript logger.info("Memory created", { memoryId }); ``` ##### `warn(message: string, meta?: object): void` Logs warning message. **Example**: ```typescript logger.warn("High memory usage", { usage: "85%" }); ``` ##### `error(message: string, meta?: object): void` Logs error message. **Example**: ```typescript logger.error("Database error", { error, query }); ``` --- ## Error Handling All methods may throw the following error types: ### ValidationError Thrown when input validation fails. **Properties:** - `message` (string): Error description - `field` (string): Field that failed validation - `value` (any): Invalid value ### DatabaseError Thrown when database operations fail. **Properties:** - `message` (string): Error description - `query` (string, optional): Failed query - `params` (any[], optional): Query parameters ### EmbeddingError Thrown when embedding generation fails. **Properties:** - `message` (string): Error description - `model` (string): Embedding model - `inputLength` (number): Input text length ### ReasoningError Thrown when reasoning operations fail. **Properties:** - `message` (string): Error description - `framework` (string, optional): Framework being used - `step` (string, optional): Failed step --- ## Type Definitions ### Core Types ```typescript // Memory types type MemorySector = "episodic" | "semantic" | "procedural" | "emotional" | "reflective"; interface Memory { id: string; content: string; userId: string; primarySector: MemorySector; strength: number; // 0-1 salience: number; // 0-1 importance: number; // 0-1 createdAt: Date; lastAccessed: Date; embeddings?: SectorEmbeddings; } interface SectorEmbeddings { episodic: number[]; semantic: number[]; procedural: number[]; emotional: number[]; reflective: number[]; } // Search types interface SearchQuery { text?: string; embedding?: number[]; sectors?: MemorySector[]; metadata?: MetadataFilters; minStrength?: number; limit?: number; } interface SearchResult { memories: Memory[]; scores: number[]; totalCount: number; } // Reasoning types interface Problem { description: string; context?: Record<string, any>; constraints?: string[]; } interface ReasoningResult { conclusion: string; reasoning: ReasoningChain; confidence: ConfidenceAssessment; biases: DetectedBias[]; recommendations: Recommendation[]; } ``` --- ## Performance Characteristics ### Latency Targets - **Memory Retrieval**: p50 <100ms, p95 <200ms, p99 <500ms - **Embedding Generation**: <500ms for all five sectors - **Parallel Reasoning**: <30s total, <10s per stream - **Confidence Assessment**: <100ms - **Bias Detection**: <15% overhead - **Emotion Detection**: <200ms ### Scalability - **Memory Capacity**: 100k memories per user (target) - **Concurrent Operations**: 20 connections (default pool size) - **Search Performance**: Sub-200ms at 100k memories - **Cost**: <$10/month per 100k memories (local embeddings) --- ## See Also - **[MCP Tools Reference](mcp-tools.md)** - Complete MCP tool documentation - **[Integration Guide](integration.md)** - Platform integration guides - **[Architecture Guide](architecture.md)** - System architecture and design - **[Examples](examples.md)** - Usage examples for each feature - **[Development Guide](development.md)** - Development workflow - **[Testing Guide](testing.md)** - Testing strategies --- **Last Updated**: December 2025 **Version**: 0.5.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/keyurgolani/ThoughtMcp'

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