Read, write, search, transform — plus PDFs, spreadsheets, zips, and deliverables.
list_files
List files and folders in a directory
read_file
Read the contents of a file. Large files are returned in line-numbered chunks — pass offset to continue where the previous read stopped.
create_folder
Create a directory (and parent directories if needed)
create_file
Create a new file with optional content
write_file
Write content to a file (creates or overwrites)
update_file
Update an existing file with new content
edit_file
Make a PRECISE, surgical edit to an existing file by replacing an exact snippet. STRONGLY PREFER this over write_file when changing a file that already exists — it edits in place instead of rewriting the whole file, which is faster and avoids losing or breaking other code. Read the file first, then pass old_string copied EXACTLY (including indentation/whitespace). old_string must be unique in the file unless replace_all is true.
search_files
Search a directory tree for a string or regex and return matching file:line results. Use this to find where code lives before editing it.
draft_social_post
Draft a social-media post for the user's BRAND/BUSINESS account and add it to their approval queue. Use when they ask you to write/schedule a post, run their socials, or plan content. It does NOT publish — everything waits for the user's one-click approval in Settings → Business (nothing goes out autonomously). Only for real, disclosed brand accounts via official channels — NEVER fake personas, bought engagement, or manipulation.
list_business_drafts
List the social posts currently in the approval queue (pending or approved). Use to review what you have drafted for the user before they approve.
business_status
Report which of the user's business accounts are connected (X, Meta, LinkedIn, Stripe, Resend, Shopify) and how many drafts await approval. Use before business tasks so you know what's actually wired up.
read_any
Open ANY file and understand it — the smart, universal reader. Hand it a path and it auto-detects the type and does the right thing: code in any language (reads the text), images (SEES them with vision), PDFs and Word/PowerPoint/Excel (extracts the text), CSVs (previews + points you at query_csv), zips/archives (lists what's inside), audio/video (metadata), a folder (lists it), or raw binary (identifies it). This is your DEFAULT when the user gives you a file or you don't know the type. For a specific known type you can still use read_file / read_pdf / read_image / query_csv directly.
read_image
LOOK at an image file with your own eyes — the actual picture is attached to the conversation so you can see layouts, photos, charts, UI, colors, anything visual. Use for 'what's in this image', design reviews, checking a screenshot you took (take_screenshot returns a path — read_image it to verify your own work). For pulling text out of an image, ocr_image is cheaper.
download_file
Download a file from a URL to disk. Defaults to the Downloads folder if no path is given.
append_to_file
Append text to the end of a file (creating it if needed). Use for logs, notes, or adding to an existing file without rewriting it.
get_file_info
Get a file or folder's size, type, and modified/created times, without reading its contents.
unzip_file
Extract a .zip archive to a folder.
rollback_file
Undo Mori's last change to a file — restores it to the state right before the most recent write/edit/delete. Mori auto-checkpoints every file before changing it, so this is a real undo. The current state is itself checkpointed first (so a rollback can be undone).
list_checkpoints
List the saved checkpoints (auto-backups) for a file, newest first — so you know what rollback_file would restore.
search_history
Search ALL of your past conversations with this user for something discussed before — a decision, a fact, a project detail, 'what did we say about X last week'. Returns matching snippets with the chat title + date. Use this to recall context beyond your live memory. Zero cost to your context window.
read_pdf
Extract the TEXT from a PDF file so you can read, summarize, or answer questions about it. Use for any .pdf the user mentions — reports, papers, invoices, contracts. If the PDF is scanned images (no text layer), it says so — use ocr_image on a page screenshot instead.
ocr_image
Read the TEXT inside an image (png/jpg/screenshot) using the OS's built-in OCR — for screenshots, photos of documents, scanned pages, error dialogs. Give it a file path; get the recognized text back.
query_csv
Run a real SQL SELECT over a CSV file — filter, aggregate, group, sort actual data instead of eyeballing it. The table is '?', e.g. "SELECT city, COUNT(*) AS n FROM ? GROUP BY city ORDER BY n DESC LIMIT 10". Numeric columns are auto-typed so SUM/AVG work. Use for any data question about a .csv.
create_document
Generate a polished, ready-to-send DOCUMENT (Word .docx or .pdf) — reports, letters, briefs, proposals, memos. Write the FULL body yourself as rich Markdown (use # / ## headings, **bold**, bullet/numbered lists, > quotes, and | tables |). Saves a real file the user can open. Prefer this over write_file when the user wants an actual document/report/deliverable.
create_spreadsheet
Generate a real SPREADSHEET (Excel .xlsx or .csv) — tables, budgets, trackers, data exports. Saves a file the user can open in Excel/Numbers/Sheets.
create_slides
Generate a PowerPoint DECK (.pptx) — pitch decks, presentations, reports as slides. Saves a file the user can open in PowerPoint/Keynote.
remember
Save a durable fact or preference about the user/project to long-term memory so you recall it in FUTURE sessions (their name, stack, preferences, key project details). Use for lasting facts — not transient task steps.
skill_view
Open one of your skills (how-to procedures) in full. Your turn context lists the skills you have — call this when a listed skill looks relevant but its body wasn't injected.
skill_manage
Create, update, or delete one of your skills — durable how-to procedures you follow in future sessions. AUTHOR A SKILL when you complete something non-trivial that took 5+ tool calls, recover from a dead end, or the user corrects your approach: capture the WINNING procedure, not the story. Writes may go to a pending queue for the user's approval.
search_sessions
Search your summaries of PAST conversations with this user ('what did we do last week', 'that site we built'). Complements memory: memory = facts, sessions = what happened when.
forget
Remove saved memories matching the given text (stale or wrong facts).
save_playbook
Record HOW you solved a non-trivial, multi-step task — a reusable recipe. Different from remember (which is for facts): this saves the working APPROACH so you handle similar requests faster and more consistently next time. Call it after you finish something involved (a build, a multi-step automation, a tricky workflow).
schedule_task
Schedule a RECURRING or future task that you'll run on your own and report back — e.g. 'every morning at 8am brief me on my calendar', 'every Monday summarize my unread email', 'in 2 hours remind me to stretch'. These run UNATTENDED, so use them for prep/reporting (briefs, summaries, drafts, reminders) — they will NOT send messages, make purchases, or do irreversible actions without you present. Give a clear prompt of what to do each run.
cancel_schedule
Cancel a scheduled task by its label or id.
list_schedules
List the tasks you have scheduled to run on their own.
create_goal
Create a DURABLE GOAL — a long-lived objective that spans many tasks and sessions (e.g. 'finish the product launch', 'keep the docs accurate'). Goals persist across restarts and devices. Use for multi-session objectives, NOT for one-off tasks.
update_goal
Update a goal after meaningful work: progress %, status (active|paused|complete|blocked|failed), blocker, next action, or completion evidence. Always record evidence when marking complete.
list_goals
List all durable goals with status, progress, blockers and next actions.
create_task
Add a task card to Mori's task board (the durable Kanban — survives restarts, visible on every device). Use when work should be tracked/queued rather than done immediately, or to break a goal into pieces.
update_task
Move/update a board task: change lane, record the latest action, set a blocker or result. Use lane=completed with a result when done; lane=waiting_user when you need the user.
list_tasks
List Mori's task board (optionally one lane) with ids, lanes, priorities, blockers.
list_dev_servers
List the dev servers you currently have running (pid, command, uptime).
list_memories
List everything you currently remember about the user/project.
move_file
Move or rename a file
copy_file
Copy a file to a new location
delete_file
Delete a file or directory (use with caution)
create_zip
Zip a folder or file into a .zip archive — use this to PACKAGE a site/app/project you built before emailing or uploading it. Pass the folder or file as source: a full path, a name, or 'the site/app you just made'. Returns the .zip path, and the zip is remembered — so right after, you can send_email it (attachmentPath: 'the zip you just made') or upload it. Typical flow: build the site (files) → create_zip the folder → send_email the zip.