Skip to content

v0.8.1

Latest

Choose a tag to compare

@hald hald released this 05 Jun 23:25

v0.8.1 - 2026-06-05

Features

  • Add Area Creation: New add_area tool creates Areas in Things 3. Since the Things URL scheme has no add-area command, this uses AppleScript (make new area with properties {name:...}) and returns the new Area's UUID. Title strings are escaped to prevent AppleScript injection. (#45)
  • Update Area: New update_area tool renames an Area and/or sets its tags, also via AppleScript. Only provided fields are changed. There is intentionally no delete_area tool: deleting an Area in Things also deletes every project it contains.
  • Response Pagination: The list and search read tools now accept optional limit and offset parameters, so large Things lists can be inspected in chunks instead of returning everything at once. Default behaviour is unchanged when no pagination is passed; otherwise a Showing X-Y of Z items header is added, and an out-of-range offset is reported distinctly from an empty result. (#41)
  • Structured Responses: The 16 list/search read tools now return both the human-readable text (unchanged) and machine-readable structured_content — the raw item dicts plus count/total/offset/limit metadata — so MCP clients can consume either form. Built on FastMCP 3.x's native ToolResult/structured-output support (inspired by but supersedes the approach in #40). The structured items are the same data the text renders (full item dicts, including nested checklist / sub-items), coerced to JSON-safe values (e.g. dates → ISO strings). Use limit to bound large lists — it shrinks both the text and structured channels together.

Maintenance

  • FastMCP 3.x: Migrated to FastMCP 3.x. The dependency pin was an open-ended fastmcp>=2.0.0, so fresh installs were already resolving FastMCP 3.x untested; the pin is now bounded to fastmcp>=3.0.0,<4. Runtime behaviour is unchanged — in 3.x the @mcp.tool decorator returns the original function, so the test suite was updated to call tool functions directly instead of via the removed .fn accessor. All 155 tests pass under FastMCP 3.4.0.

Credits

This release was shaped by several community contributions — thank you all 🙏

  • @Jscoats — Area creation via AppleScript (#45). The new add_area tool is based on this work, and update_area extends the same AppleScript approach.
  • @ariiscoding — Response pagination (#41). The limit/offset design — including distinguishing an out-of-range page from an empty result — comes from this PR; it was reimplemented on the current codebase.
  • @NickChristensen — Structured MCP responses (#40). The dual text + structured-content design originated here; 0.8.1 realizes it natively on FastMCP 3.x.