Skip to main content
Glama

update_todo

Modify existing to-do items in the Things 3 app by updating titles, notes, deadlines, tags, checklist items, or completion status using the item ID.

Instructions

更新现有的待办事项。需要提供待办事项ID和授权令牌。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes待办事项的ID(必需)
authTokenNo授权令牌(如未提供,将使用环境变量THINGS_AUTH_TOKEN)
titleNo新标题
notesNo新备注(替换现有)
prependNotesNo在现有备注前添加
appendNotesNo在现有备注后添加
whenNo时间安排
deadlineNo截止日期
tagsNo标签(替换所有)
addTagsNo添加标签
checklistItemsNo清单项(替换所有)
appendChecklistItemsNo追加清单项
prependChecklistItemsNo前置清单项
completedNo完成状态
canceledNo取消状态
revealNo是否显示

Implementation Reference

  • The main handler function that executes the logic for the 'update_todo' tool. It validates the auth token, builds the Things update URL, opens it, and returns a success message.
    async handleUpdateTodo(args) {
      const authToken = args.authToken || DEFAULT_AUTH_TOKEN;
      if (!authToken) {
        throw new Error('需要授权令牌。请设置环境变量THINGS_AUTH_TOKEN或在参数中提供authToken');
      }
    
      const params = { ...args, authToken };
      const url = buildThingsUrl('update', params);
      await this.openThingsUrl(url);
    
      return {
        content: [
          {
            type: 'text',
            text: `✅ 待办事项更新命令已发送 (ID: ${args.id})`,
          },
        ],
      };
    }
  • Input schema defining the parameters and validation rules for the 'update_todo' tool, including required 'id' and optional fields like title, notes, tags, etc.
    inputSchema: {
      type: 'object',
      properties: {
        id: {
          type: 'string',
          description: '待办事项的ID(必需)',
        },
        authToken: {
          type: 'string',
          description: '授权令牌(如未提供,将使用环境变量THINGS_AUTH_TOKEN)',
        },
        title: {
          type: 'string',
          description: '新标题',
        },
        notes: {
          type: 'string',
          description: '新备注(替换现有)',
        },
        prependNotes: {
          type: 'string',
          description: '在现有备注前添加',
        },
        appendNotes: {
          type: 'string',
          description: '在现有备注后添加',
        },
        when: {
          type: 'string',
          description: '时间安排',
        },
        deadline: {
          type: 'string',
          description: '截止日期',
        },
        tags: {
          type: 'string',
          description: '标签(替换所有)',
        },
        addTags: {
          type: 'string',
          description: '添加标签',
        },
        checklistItems: {
          type: 'array',
          items: { type: 'string' },
          description: '清单项(替换所有)',
        },
        appendChecklistItems: {
          type: 'array',
          items: { type: 'string' },
          description: '追加清单项',
        },
        prependChecklistItems: {
          type: 'array',
          items: { type: 'string' },
          description: '前置清单项',
        },
        completed: {
          type: 'boolean',
          description: '完成状态',
        },
        canceled: {
          type: 'boolean',
          description: '取消状态',
        },
        reveal: {
          type: 'boolean',
          description: '是否显示',
        },
      },
      required: ['id'],
    },
  • src/index.js:171-247 (registration)
    Registration of the 'update_todo' tool in the ListToolsRequestSchema response, including name, description, and schema.
    {
      name: 'update_todo',
      description: '更新现有的待办事项。需要提供待办事项ID和授权令牌。',
      inputSchema: {
        type: 'object',
        properties: {
          id: {
            type: 'string',
            description: '待办事项的ID(必需)',
          },
          authToken: {
            type: 'string',
            description: '授权令牌(如未提供,将使用环境变量THINGS_AUTH_TOKEN)',
          },
          title: {
            type: 'string',
            description: '新标题',
          },
          notes: {
            type: 'string',
            description: '新备注(替换现有)',
          },
          prependNotes: {
            type: 'string',
            description: '在现有备注前添加',
          },
          appendNotes: {
            type: 'string',
            description: '在现有备注后添加',
          },
          when: {
            type: 'string',
            description: '时间安排',
          },
          deadline: {
            type: 'string',
            description: '截止日期',
          },
          tags: {
            type: 'string',
            description: '标签(替换所有)',
          },
          addTags: {
            type: 'string',
            description: '添加标签',
          },
          checklistItems: {
            type: 'array',
            items: { type: 'string' },
            description: '清单项(替换所有)',
          },
          appendChecklistItems: {
            type: 'array',
            items: { type: 'string' },
            description: '追加清单项',
          },
          prependChecklistItems: {
            type: 'array',
            items: { type: 'string' },
            description: '前置清单项',
          },
          completed: {
            type: 'boolean',
            description: '完成状态',
          },
          canceled: {
            type: 'boolean',
            description: '取消状态',
          },
          reveal: {
            type: 'boolean',
            description: '是否显示',
          },
        },
        required: ['id'],
      },
    },
  • src/index.js:431-432 (registration)
    Dispatch case in the CallToolRequestSchema handler that routes 'update_todo' calls to the handleUpdateTodo function.
    case 'update_todo':
      return await this.handleUpdateTodo(args);
  • Helper function used by the handler to construct the Things URL scheme for the 'update' command with provided parameters.
    export function buildThingsUrl(command, params = {}) {
      const baseUrl = `things:///${command}`;
      const queryString = buildQueryString(params);
    
      if (!queryString) {
        return baseUrl;
      }
    
      return `${baseUrl}?${queryString}`;
    }

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/Mieluoxxx/things_mcp'

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