Skip to main content
Glama

prioritize_memory

Identify and rank key memories, tasks, and decisions to focus on what matters most. Automatically triggered for prioritization needs.

Instructions

IMPORTANT: This tool should be automatically called when users say "중요한 거", "우선순위", "prioritize", "important ones", "what matters", "priority" or similar keywords. Prioritize memories by importance

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
blockersNoCurrent blockers or issues
codeChangesNoImportant code changes
criticalDecisionsNoList of critical decisions made
currentTaskYesCurrent task description
nextStepsNoPlanned next steps

Implementation Reference

  • Main execution logic for prioritize_memory tool: calculates priority scores for memories based on keywords, task relevance, decisions, changes, blockers; sorts and returns top 20 with reasons; updates priorities in MemoryManager.
    export async function prioritizeMemory(args: { currentTask: string; criticalDecisions?: string[]; codeChanges?: string[]; blockers?: string[]; nextSteps?: string[] }): Promise<ToolResult> { const { currentTask, criticalDecisions = [], codeChanges = [], blockers = [], nextSteps = [] } = args; try { const mm = MemoryManager.getInstance(); const allMemories = mm.list(); const prioritizedMemories: Array<{ memory: MemoryItem; priority: number; reason: string }> = []; for (const memory of allMemories) { let priority = 0; let reason = ''; // Analyze importance based on content if (memory.value.includes('error') || memory.value.includes('Error')) { priority = 0.9; reason = 'error info'; } else if (memory.value.includes('decision') || memory.value.includes('Decision')) { priority = 0.8; reason = 'decision'; } else if (memory.value.includes('code') || memory.value.includes('function')) { priority = 0.7; reason = 'code-related'; } else if (memory.category === 'context') { priority = 0.6; reason = 'context'; } else if (memory.category === 'project') { priority = 0.7; reason = 'project'; } else { priority = 0.5; reason = 'general'; } // Boost priority for memories related to current task if (memory.value.toLowerCase().includes(currentTask.toLowerCase())) { priority += 0.2; reason += ' +task'; } // Boost priority for critical decisions for (const decision of criticalDecisions) { if (memory.value.toLowerCase().includes(decision.toLowerCase())) { priority += 0.15; reason += ' +critical'; break; } } // Boost priority for code changes for (const change of codeChanges) { if (memory.value.toLowerCase().includes(change.toLowerCase())) { priority += 0.1; reason += ' +change'; break; } } // Boost priority for blockers for (const blocker of blockers) { if (memory.value.toLowerCase().includes(blocker.toLowerCase())) { priority += 0.25; reason += ' +blocker'; break; } } // Cap priority at 1.0 priority = Math.min(1.0, priority); if (priority >= 0.6) { prioritizedMemories.push({ memory, priority, reason }); // Update priority in database mm.setPriority(memory.key, Math.floor(priority * 100)); } } const sortedMemories = prioritizedMemories .sort((a, b) => b.priority - a.priority) .slice(0, 20); const resultList = sortedMemories.map(pm => `• [${(pm.priority * 100).toFixed(0)}%] ${pm.memory.key} (${pm.reason}): ${pm.memory.value.substring(0, 60)}${pm.memory.value.length > 60 ? '...' : ''}` ).join('\n'); return { content: [{ type: 'text', text: `✓ Prioritized ${sortedMemories.length} memories for "${currentTask}":\n${resultList || 'None'}` }] }; } catch (error) { return { content: [{ type: 'text', text: `✗ Error: ${error instanceof Error ? error.message : 'Unknown error'}` }] }; } }
  • ToolDefinition object defining the 'prioritize_memory' tool, including name, description, input schema (requiring currentTask, optional arrays for decisions/changes/blockers/nextSteps), and annotations.
    export const prioritizeMemoryDefinition: ToolDefinition = { name: 'prioritize_memory', description: '중요한 거|우선순위|prioritize|important|what matters|priority - Prioritize memories by importance', inputSchema: { type: 'object', properties: { currentTask: { type: 'string', description: 'Current task description' }, criticalDecisions: { type: 'array', items: { type: 'string' }, description: 'List of critical decisions made' }, codeChanges: { type: 'array', items: { type: 'string' }, description: 'Important code changes' }, blockers: { type: 'array', items: { type: 'string' }, description: 'Current blockers or issues' }, nextSteps: { type: 'array', items: { type: 'string' }, description: 'Planned next steps' } }, required: ['currentTask'] }, annotations: { title: 'Prioritize Memory', audience: ['user', 'assistant'] } };
  • src/index.ts:81-81 (registration)
    Inclusion of prioritizeMemoryDefinition in the tools array returned by ListToolsRequest handler.
    prioritizeMemoryDefinition,
  • src/index.ts:177-178 (registration)
    Switch case in CallToolRequest handler dispatching to prioritizeMemory function.
    case 'prioritize_memory': return await prioritizeMemory(args as any) as CallToolResult;
  • src/index.ts:35-35 (registration)
    Import statement bringing in the tool definition and handler from the implementation file.
    import { prioritizeMemoryDefinition, prioritizeMemory } from './tools/memory/prioritizeMemory.js';

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/su-record/hi-ai'

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