The toolbox could create and move but not delete or resize; write the journal but not read it; clear a whole bed but not pull one plant; report seed remaining but not record a purchase. Close those gaps with thin adapters over the SAME service methods the REST API uses, so they inherit the permission checks unchanged: read_journal → ListJournal (the write/read asymmetry, most visible) update_object → UpdateObject (resize / rotate / rename / plantable) delete_object → DeleteObject (counterpart to create_object) remove_planting → UpdatePlanting (soft-remove ONE plop, like clear does) list_seed_lots → ListSeedLots record_seed_lot → CreateSeedLot (record a purchase; "I bought 2 packets") To address a single plop the agent needs its id + version, so DescribePlanting now carries both — the same way DescribeObject.Version already lets it edit an object. remove_planting soft-removes (removed_at = today), mirroring clear_object, so the plant stays in planting history and the change is undoable. Deferred deliberately: an undo/revert tool needs a way to list recent change sets to get a changeSetId, which is a larger addition; noted on the issue for a follow-up. Tested through the tool layer (TestCorrectiveTools): resize, single-plop removal, journal read-back, seed-lot record+list, and delete. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01H3zbym8Doka2d7D48maSgZ