Skip to main content
Glama

get_stalled_items_in_decide

Identify and retrieve stalled tasks and projects within the Decide realm to ensure efficient task management and progress tracking using the ADD framework.

Instructions

Find stalled items (tasks + projects) in Decide realm.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • src/index.ts:604-607 (registration)
    Tool registration entry in the ListToolsRequestSchema handler response array. Defines the tool name, description, and input schema (empty object since no parameters required).
    name: 'get_stalled_items_in_decide', description: 'Find stalled items (tasks + projects) in Decide realm.', inputSchema: { type: 'object', properties: {} } },
  • src/index.ts:762-763 (registration)
    Dispatch case in the CallToolRequestSchema handler switch statement that binds the tool name to the getStalledItemsInDecide() method.
    case 'get_stalled_items_in_decide': return await this.getStalledItemsInDecide();
  • Primary handler method that implements the tool logic. In production mode, fetches stalled tasks via CloudKitService.getTasksInDecideStalled() and stalled projects by filtering getProjectsByRealm(2), then combines and formats a text response showing overdue items with days overdue. Includes fallback mock implementation for development.
    private async getStalledItemsInDecide() { return this.withCloudKitOrMock( 'getStalledItemsInDecide', async () => { // CloudKit production implementation const [stalledTasks, stalledProjects] = await Promise.all([ this.cloudKitService.getTasksInDecideStalled(), this.cloudKitService.getProjectsByRealm(2).then((projects: any[]) => projects.filter((project: any) => { const endDate = project.fields?.endDate?.value; return endDate && new Date(endDate) < new Date(); }) ) ]); const allStalledItems = [...stalledTasks, ...stalledProjects]; const now = new Date(); let response = `Stalled items in Decide realm (past due dates):\n`; if (allStalledItems.length === 0) { response += 'No stalled items found. Great job staying on track! 🎉'; } else { response += allStalledItems.map(item => { const isTask = item.recordType === 'Task'; const name = isTask ? item.fields?.taskName?.value : item.fields?.projectName?.value; const endDate = item.fields?.endDate?.value; const daysOverdue = Math.ceil((now.getTime() - new Date(endDate).getTime()) / (24 * 60 * 60 * 1000)); const type = isTask ? 'Task' : 'Project'; return `- ${name} (${item.recordName}) - ${daysOverdue} day${daysOverdue > 1 ? 's' : ''} overdue [${type}]`; }).join('\n'); } return { content: [{ type: 'text', text: response }] }; }, async () => { // Mock implementation const now = new Date(); const yesterday = new Date(now.getTime() - 86400000).toISOString(); const weekAgo = new Date(now.getTime() - 7 * 86400000).toISOString(); const mockItems = [ { recordName: 'task_stalled_1', taskName: 'Review project requirements', endDate: yesterday, contextRecordName: 'context_work', realmId: 2, stalledReason: 'Past due date - needs rescheduling' }, { recordName: 'project_stalled_1', projectName: 'Client presentation prep', endDate: weekAgo, contextRecordName: 'context_work', realmId: 2, stalledReason: 'Week overdue - may need scope revision' } ]; let response = `Stalled items in Decide realm (past due dates):\n`; response += mockItems.map(item => { const type = item.recordName.startsWith('task_') ? 'Task' : 'Project'; const name = item.taskName || (item as any).projectName; const daysOverdue = Math.ceil((now.getTime() - new Date(item.endDate).getTime()) / (24 * 60 * 60 * 1000)); return `- ${name} (${item.recordName}) - ${daysOverdue} day${daysOverdue > 1 ? 's' : ''} overdue`; }).join('\n'); return { content: [{ type: 'text', text: response }] }; } ); }
  • Supporting CloudKit query helper that retrieves stalled tasks specifically: Tasks in Decide realm (realmId=2) with endDate < current time, sorted by endDate ascending (most overdue first). Called by the main handler in production mode.
    async getTasksInDecideStalled(): Promise<ZenTaskticTask[]> { const now = new Date().getTime(); return this.queryRecords<ZenTaskticTask>('Task', { filterBy: [ { fieldName: 'realmId', fieldValue: 2, comparator: 'EQUALS' }, { fieldName: 'endDate', fieldValue: now, comparator: 'LESS_THAN' } ], sortBy: [{ fieldName: 'endDate', ascending: true }] // Most overdue first }); }

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/dragosroua/addtaskmanager-mcp-server'

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