journal.list_shelves (read, deterministic) — List the inbox and every shelf, with a count and the latest entry. Use when: You need to see which interests exist before filing or writing. Input: . journal.list_entries (read, deterministic) — List entries in the inbox, on one shelf, or newest first across the journal. Use when: You need the entries themselves, not just the shelf names. Input: {}. journal.search (read, deterministic) — Full-text search of page titles and bodies. Use when: The user names a topic and you need the pages that already cover it. Input: query. journal.read_page (read, deterministic) — Read one page, including its Markdoc body and version. Use when: You are about to edit a page, or the user asked what it says. Input: id. journal.create_page (write, deterministic) — Create an empty draft entry, in the inbox or on a shelf. Use when: The user wants a new entry. Leave tags empty for the inbox. Pass a shelf name to file it as you create it. Input: title, tags?, body?. Example input: {"title":"Untitled","tags":["Cars"]}. journal.set_tags (write, deterministic) — Replace the shelves an entry sits on. An empty list moves it to the inbox. Use when: The user wants an entry filed under an interest, or taken off one. A new shelf is just a tag that no entry has carried yet. Input: id, version, tags. journal.update_page (write, deterministic) — Replace a page's title or body. Send the version you read. Use when: You already have the full new body. For a model-written page, use journal.write_page instead. Input: id, version, title?, body?, format?. journal.write_page (costly, generative) — Draft an entry from a short brief. Replaces the body. Use when: The user wants a new entry written, or the current one rewritten from notes. Create the page first if it does not exist yet. Input: id, version, brief. journal.rewrite_section (costly, generative) — Change one part of an entry and keep the rest. Use when: The user wants a passage rewritten and the rest of the entry left as it is. Input: id, version, instruction, section?. journal.reformat_page (costly, generative) — Tidy an entry’s markdown without adding facts. Use when: The user wants the page cleaned up: headings and lists where the text already has them, and the wording kept. Input: id, version. journal.rename (write, deterministic) — Rename a page or folder. Send the version you read. Use when: The user wants a new title and the body stays as it is. Input: id, version, title. journal.set_format (write, deterministic) — Set a page's width, contents list, or numbered headings. Token choices only. Use when: The user wants the page wider, a contents list, or numbered headings. Input: id, version, format. journal.delete (destructive, deterministic) — Move a page or folder to Trash. It can be restored. Use when: The user explicitly asked to delete it. Input: id, version. journal.restore (write, deterministic) — Restore a page from Trash. Use when: The user wants a deleted page back. Input: id. recipes.import_video (costly, generative) — Read a YouTube cooking video and save it as a draft in the Cookbook. Use when: The user gives a YouTube link, or asks for a recipe from a cooking video. Do not write a journal page for that video. Input: url. Example input: {"url":"https://www.youtube.com/watch?v=abcdefghijk"}. recipes.search (read, deterministic) — Search cookbook recipes by dish, tag or ingredient. Use when: The user names a dish, a tag or an ingredient and you need the recipes that match. Input: query. Example input: {"query":"stew"}. recipes.read (read, deterministic) — Read one cookbook recipe as a single line, with the version to send back. Use when: You need a recipe’s version before changing its tags or deleting it, or the user asked what it is. Input: id. Example input: {"id":"rcp_0123456789abcdef0123456789abcdef"}. recipes.delete (destructive, deterministic) — Delete a recipe. It is gone, and the same video can be imported again. Use when: The user explicitly asked to delete it. Input: id, version. Example input: {"id":"rcp_0123456789abcdef0123456789abcdef","version":1}. recipes.set_tags (write, deterministic) — Replace a recipe’s tags. An empty list clears them. Use when: The user wants a recipe filed under a tag, or the tags cleared. Send the version you read. Input: id, version, tags. Example input: {"id":"rcp_0123456789abcdef0123456789abcdef","version":1,"tags":["weeknight"]}.