Permissions

There is one permission system, and everything outside the app uses it: the REST API, the MCP server an assistant speaks, and the calendar link. A token holds scopes; every endpoint and every tool names the one it needs; the two are compared on every call. There is no second model to keep in step and no grant that means different things at different doors.

Two habits shape the list. Reading and writing are separate grants — a token that reports your day cannot rewrite it. And each sentence is what the person consents to: the key is for developers, the sentence is for whoever owns the data, and the picker shows the sentence.

Grant the narrowest set that works. A token lives on a phone, in a config file, in somebody else's service — what it cannot read cannot leak.

One thing to know before granting a :write on its own: writing does not imply reading, and most changes name the thing they change by the id the matching read handed out. tasks:write alone can add a todo and cannot find the todo you asked it to finish. Where naming a thing is unambiguous the write tool takes a name instead — tick_habit accepts "stretching" — so habits:write on its own is a usable grant. Everywhere else, pair the two. The token form says so under the tick rather than leaving you to find out from an assistant that cannot do what you asked.

Scope What granting it allows MCP tools behind it
streams:write Send readings into your data streams, and create new streams log_data_point
streams:read Read everything your data streams have ever recorded data_streams
schedule:read Read everything on your calendar for the days ahead, today included upcoming, past, reminders, repeating_week, categories, activities
schedule:write Put blocks on your week — one-off and repeating — move and rename them, take them off a day, set reminders on them, and mark them done or skipped finish_block, add_block, change_block, cancel_block, remind_before_block, dismiss_reminder, add_repeating_block, change_repeating_block, remove_repeating_block, add_activity, change_activity
today:read See today's plan — the blocks and the tasks on it today
habits:read See your habits, which are due today, and whether you kept them habits, all_habits
habits:write Mark a habit kept, or unmark one tick_habit, add_habit, change_habit
plugin:declare Name and describe itself on your integrations page
webhooks:manage Send itself a message when something changes here — a task finished, a block done — to an address it chooses
shopping:read See everything on your shopping list shopping_list, shopping_categories
shopping:write Add to your shopping list, tick things bought, and take things off it add_to_shopping_list, tick_bought, untick_bought, snooze_item, unsnooze_item, remove_from_shopping_list, file_shopping_item, add_shopping_category, change_shopping_category, remove_shopping_category, record_price
calendar:read Show your plan in a calendar app. It can see the plan and change nothing
notes:read Read your diary and your notebooks diary, notebooks, daily_wins
notes:write Write in your diary and your notebooks write_entry, add_notebook, remove_notebook, share_notebook, record_win
ideas:read See your ideas ideas
ideas:write Add ideas, change them, and remove them add_idea, remove_idea, change_idea, apply_idea, favorite_idea
tasks:read Read your todo list and your goals todos, goals, goal_areas, weekly_review
tasks:write Add, finish and delete todos, move them on and off a day, and close a goal add_todo, finish_todo, drop_todo, reopen_todo, change_todo, schedule_todo, unschedule_todo, close_goal, link_to_goal, unlink_from_goal, reopen_goal, change_goal, add_goal, log_goal_progress, add_goal_area, write_review_lines
kitchen:read Read your recipes recipes
kitchen:write Add and change recipes add_recipe, change_recipe, cooked_recipe, archive_recipe
people:read See the people in your life, and whose birthday is coming people, upcoming_birthdays
people:write Add people, and change what is recorded about them add_person, change_person
search:read Search everything you have written, in one go.
Careful: One grant that reads across everything — diary, notebooks, ideas, goals, people, recipes and todos. Only for something you would show all of that.
search

The REST side of the same table — which endpoint asks for which scope — is generated into the API page.