Skip to content

Add support for creating headings in Things #10

Description

@JoeDuncko

Add support for creating headings in Things

Description

#8 adds support for moving todos to existing headings via the heading and heading_id parameters in things:add_todo and things:update_todo, but there's no functionality to create new headings. This limits the ability to programmatically organize todos into new sections.

Current Functionality

  • ✅ Can move todos to existing headings using heading or heading_id parameters
  • ✅ Can see headings when they exist in todo responses
  • ❌ Cannot create new headings

Requested Feature

Add a new function to create headings in Things, similar to how things:add_todo and things:add_project work.

Proposed API

New Function: things:add_heading

{
  "name": "things:add_heading",
  "description": "Create a new heading in Things",
  "parameters": {
    "properties": {
      "title": {
        "title": "Title", 
        "type": "string",
        "description": "Title of the heading"
      },
      "list_id": {
        "title": "List Id", 
        "type": "string", 
        "default": null,
        "description": "ID of project/area to add heading to"
      },
      "list_title": {
        "title": "List Title", 
        "type": "string", 
        "default": null,
        "description": "Title of project/area to add heading to"
      },
      "when": {
        "title": "When", 
        "type": "string", 
        "default": null,
        "description": "When to schedule the heading (today, tomorrow, anytime, someday, or YYYY-MM-DD)"
      }
    },
    "required": ["title"]
  }
}

Use Cases

  1. Programmatic organization: Create headings to organize batches of related todos
  2. Project templates: Automatically create project structures with predefined headings
  3. Workflow automation: Create headings based on external triggers (calendar events, project phases, etc.)
  4. Better todo management: Organize todos into logical sections as they're created

Example Usage

// Create a new heading for organizing work tasks
await things.add_heading({
  title: "Sprint Planning",
  list_title: "Work Projects",
  when: "today"
});

// Then add todos under that heading
await things.add_todo({
  title: "Review user stories",
  heading: "Sprint Planning",
  list_title: "Work Projects"
});

Implementation Considerations

  1. Things URL scheme: Investigate if Things supports creating headings via URL schemes
  2. Database integration: If using direct database access, ensure headings are created with proper relationships
  3. Return value: Should return the created heading's ID for immediate use in subsequent todo creation
  4. Error handling: Handle cases where the target list doesn't exist or heading already exists
  5. Consistency: Maintain parameter naming consistency with existing add_todo and add_project functions

Related Functions That Should Be Updated

Consider also adding:

  • things:update_heading - for modifying existing headings
  • things:get_headings - for listing all headings (if not already available)

Priority

Medium-High - This would significantly improve the organizational capabilities of the MCP server and enable more sophisticated workflow automation.

Alternative Workarounds

Currently, users must:

  1. Manually create headings in the Things app
  2. Note the heading names/IDs for use in API calls
  3. Cannot dynamically create organizational structures

This limits the effectiveness of automated todo management workflows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    wontfixThis will not be worked on

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions