v0.8.1 - 2026-06-05
Features
- Add Area Creation: New
add_areatool creates Areas in Things 3. Since the Things URL scheme has noadd-areacommand, 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_areatool renames an Area and/or sets its tags, also via AppleScript. Only provided fields are changed. There is intentionally nodelete_areatool: deleting an Area in Things also deletes every project it contains. - Response Pagination: The list and search read tools now accept optional
limitandoffsetparameters, 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 aShowing X-Y of Z itemsheader is added, and an out-of-rangeoffsetis 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 pluscount/total/offset/limitmetadata — so MCP clients can consume either form. Built on FastMCP 3.x's nativeToolResult/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). Uselimitto 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 tofastmcp>=3.0.0,<4. Runtime behaviour is unchanged — in 3.x the@mcp.tooldecorator returns the original function, so the test suite was updated to call tool functions directly instead of via the removed.fnaccessor. 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_areatool is based on this work, andupdate_areaextends the same AppleScript approach. - @ariiscoding — Response pagination (#41). The
limit/offsetdesign — 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.