Skip to main content
Glama

get_stalled_items_in_decide

Identify stalled tasks and projects in the Decide realm to maintain workflow momentum within the ADD framework.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • src/index.ts:603-607 (registration)
    Tool registration in ListToolsRequestSchema handler, including name, description, and input schema (no parameters).
    { name: 'get_stalled_items_in_decide', description: 'Find stalled items (tasks + projects) in Decide realm.', inputSchema: { type: 'object', properties: {} } },
  • src/index.ts:763-764 (registration)
    Tool dispatch in CallToolRequestSchema switch statement.
    return await this.getStalledItemsInDecide(); case 'get_undecided_items_in_decide':
  • Primary handler function implementing the tool logic. Uses withCloudKitOrMock to provide production CloudKit implementation (calls getTasksInDecideStalled and filters projects) or mock data. Formats response listing stalled tasks and projects with overdue days.
    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 }] }; } ); }
  • Helper method in CloudKitService that performs the core CloudKit query for stalled tasks: Tasks in Decide realm (realmId=2) with past endDate, sorted by endDate ascending (most overdue first). Called by production handler.
    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 }); }
  • Helper method to fetch all projects in a given realm, used in production handler to get Decide projects then filter stalled ones client-side.
    async getProjectsByRealm(realmId: number): Promise<ZenTaskticProject[]> { return this.queryRecords<ZenTaskticProject>('Projects', { filterBy: [{ fieldName: 'realmId', fieldValue: realmId, comparator: 'EQUALS' }], sortBy: [{ fieldName: 'lastModified', ascending: false }] }); }

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