# Every AI Entry Point

> One table of every place AI appears in DocGraph — what it reads, whether it writes, and where it works.

Source: https://docs.docgraph.app/ai/reference/

DocGraph's AI shows up in ten different places. They share a model and a privacy posture but differ in what they read, whether they touch your files, and which formats they work on. This page is the map; each row links to where it's explained properly.

Everything here except [MCP](https://docs.docgraph.app/ai/mcp/) is **off until you enable AI** and requires a chat model ([set one up](https://docs.docgraph.app/ai/setup/)); the MCP server has its own toggle and runs against the connected agent's model, not one of yours. Nothing on this page contacts a network service unless you have deliberately set one up — a cloud provider, a remote Ollama, or web search.

## Where AI appears

| Entry point | Where | Reads | Writes | Formats |
|---|---|---|---|---|
| [Chat panel](https://docs.docgraph.app/ai/chat/) | Right sidebar | Vault or open file | Only via agent actions, confirmed | All |
| [Summarize](https://docs.docgraph.app/ai/in-your-documents/#summarize-the-open-file) | Toolbar ✦ AI menu | Open file | No | All readable |
| [Proofread](https://docs.docgraph.app/ai/in-your-documents/#check-spelling) | Toolbar ✦ AI menu | Open file | On **Fix** | HTML, Markdown |
| [Beautify](https://docs.docgraph.app/ai/in-your-documents/#restyle-a-page) | Toolbar ✦ AI menu (not in `<>Source`) | Open file | **Immediately** | HTML |
| [`/` AI commands](https://docs.docgraph.app/ai/in-your-documents/#write-with-ai) | Slash menu | Open file (Ask AI: your vault) | Yes — Ask AI and Write with AI as a draft you accept | **HTML only** |
| [Selection AI](https://docs.docgraph.app/ai/in-your-documents/#rewrite-a-selection) | Selection toolbar ✨ | The selection | Yes | HTML, Markdown |
| [Typing suggestions](https://docs.docgraph.app/ai/in-your-documents/#suggestions-while-you-type) | Inline, as you type | Current paragraph | On **Tab** | **HTML only** |
| [File right-click](#file-right-click-actions) | File tree | That file | Tags only | Text-extractable |
| [Folder right-click](https://docs.docgraph.app/ai/in-your-documents/#work-on-a-whole-folder) | File tree | Up to 12 notes in the folder | Only when you click **Create note from this** or **Create table** | Text-extractable |
| [MCP](https://docs.docgraph.app/ai/mcp/) | External agent | Whatever it asks for | Confirmed, or auto-approved | All |

## The two summarize buttons

There are two, and they are not the same thing:

- **✦ AI menu → Summarize this file** summarizes the file you have open, into a popover. Nothing is written.
- **`/` → Summarize** inserts that summary into the page as a blockquote.

Both reuse the same cached result, so the second is instant after the first. A cached summary is also what powers the **TL;DR** bar that can appear above a page in reading view — it never runs the model just because you opened a file, so no TL;DR means no summary has been made yet.

## File right-click actions

Right-clicking a file in the tree offers three AI items, on any file whose text can be extracted — including [PDFs, spreadsheets and Word documents](https://docs.docgraph.app/formats/overview/):

- **Summarize** — a modal with the summary. No write.
- **Suggest tags** — proposes tags as clickable chips; clicking one applies it. This writes to DocGraph's tag index, **not** into the document.
- **Ask AI about this** — opens the chat panel with that file as context.

## Which model runs what

Two models are configured in **Settings → AI → Chat & index**:

- The **chat model** answers in the chat panel.
- The **utility model** runs the background jobs: summaries, proofreading, tag suggestions, commit messages, and the quick rewrites chat makes of your question before searching — and the [typing suggestions](https://docs.docgraph.app/ai/in-your-documents/#suggestions-while-you-type) in HTML notes (grey text after the cursor, <kbd>Tab</kbd> to accept). With no utility model set, these use the chat model.

Splitting them lets you pair a large chat model with a fast utility one. The trade-off is real and worth knowing: **a small utility model makes Proofread nearly useless** — see the [warning on the editor AI page](https://docs.docgraph.app/ai/in-your-documents/#check-spelling).

None of these features need a model with tool-calling or thinking support. Those capabilities only matter for the chat panel's [agent actions](https://docs.docgraph.app/ai/chat/#let-it-take-actions).

## What ⌘Z can undo

| Action | Undoable |
|---|---|
| Proofread **Fix** | Yes |
| Accepting a typing suggestion | Yes |
| Rewrite / Shorten / Fix grammar | Yes |
| `/summarize`, `/continue` | Yes |
| `/write` Accept or Delete | **No** |
| **Beautify** | **No** — Revert bar only, and only until you navigate away |
| A chat agent change | Not with ⌘Z — use **↩ Undo last AI change** under the answer ([most changes](https://docs.docgraph.app/ai/chat/#let-it-take-actions)) |
| Anything an [MCP](https://docs.docgraph.app/ai/mcp/) agent writes | Not with ⌘Z — it goes on the same undo stack as the chat agent's changes |

For what neither can reach, [version history](https://docs.docgraph.app/formats/version-history/) is the real safety net.

## Markdown gaps

The `.md` surface has less AI than HTML does. The full comparison is [on the editor AI page](https://docs.docgraph.app/ai/in-your-documents/#markdown-support); the short version is that the toolbar buttons and selection actions work, and the slash-menu AI group and typing suggestions do not exist there at all.

## Privacy in one place

- AI is **off by default** and nothing is downloaded or contacted until you turn it on.
- With a model on this computer — the built-in runtime, Apple's on-device model or a local Ollama — no vault content leaves your machine for the AI. The status pill in the top-right reads **100% local** when that's true.
- [Web search](https://docs.docgraph.app/ai/web-search/) is off by default; when on, each query is shown to you before it is sent, and a SearXNG server on your own computer keeps it local.
- Pointing DocGraph at a *remote* Ollama requires a separate, explicit confirmation, and secret-detection then inspects what would be sent.
- A [cloud provider](https://docs.docgraph.app/ai/cloud-providers/) (OpenAI, Anthropic, OpenRouter, a custom endpoint) is off by default: you save a key, allow it in a system dialog, and pick one of its models. The badge then reads **Cloud AI · {provider}**, and secrets are blocked from the prompt by default.
- Every AI run is recorded in **Settings → Privacy → Activity & audit** — model, task, token counts, and which notes were placed in context. Not a transcript.
- Two paths are outside that boundary by design and say so: [external CLI agents](https://docs.docgraph.app/ai/chat/#choose-a-model) run under their own credentials, and an [MCP](https://docs.docgraph.app/ai/mcp/) client relays whatever it reads to its own provider.

## Every AI tool

In Agent Mode the assistant works through tools, and an [MCP](https://docs.docgraph.app/ai/mcp/) agent gets the same set. There are **87**: **43 read-only** tools that run without asking, and **44 write tools** that stop and ask you first (*Asks* in the tables) — unless you choose **Approve all this session** in chat, or an MCP client's auto-approve covers them. With Agent Mode off, only read-only tools are offered — the write tools are not merely blocked, they are absent — and a model usually starts with a short menu of the common ones, asking for the rest when it needs them.

Two more tools exist only in the in-app assistant: `web_search`, when [web search](https://docs.docgraph.app/ai/web-search/) is on, and `propose_web_search`, which offers to turn it on when it is off. They are never exposed over MCP, so an MCP agent gets the same 87.

### Find and read notes

| Tool | Kind | What it does |
|---|---|---|
| `search_vault` | Reads | Search for relevant passages by keywords, meaning and link structure, with optional filters such as tag, person and date. Returns passages with their file paths and the links between them. |
| `find_notes` | Reads | List the notes a request means ("find the note about X"), with the reason each was picked; the best one opens when it is clearly ahead. |
| `read_file` | Reads | Read a file's text, a page at a time for long files. |
| `read_spreadsheet` | Reads | Read exact cells and rows from a spreadsheet (`.xlsx`, `.xls`, `.ods`, `.csv`), by sheet, with paging. |
| `list_files` | Reads | List files and folders by exact path, folder prefix, filename fragment, or files with no readable text only. |
| `get_outline` | Reads | A file's heading tree, to find the right section before reading a long document. |
| `get_note_context` | Reads | One note's properties, tags, outline, the notes linking to it (each with the sentence around the link), the notes it links to and the links among those notes, in one call — what an agent reads before editing a note. |
| `open_file` | Reads | Show a file to you at the end of a turn. Navigation only; nothing is changed. |
| `list_locked` | Reads | Names the encrypted files that exist. Their contents are never readable until you unlock them. |
| `docgraph_help` | Reads | Answer a question about DocGraph itself — features, settings, shortcuts — from the copy of this user guide bundled with the app, citing the section it used. |

### Create and edit notes

| Tool | Kind | What it does |
|---|---|---|
| `create_file` | Asks | Create a new HTML note. Never overwrites an existing file. |
| `edit_file` | Asks | Find-and-replace edit, on HTML and Markdown notes. The card shows what is removed and what is put in. |
| `append_to_file` | Asks | Append an HTML fragment to the end of a page. |
| `copy_file` | Asks | Duplicate a file byte-for-byte, including images and PDFs. |
| `rename_file` | Asks | Rename or move a file and rewrite the links that pointed at it. |
| `delete_file` | Asks | Move one or more files to the OS trash, with an undo entry each. |
| `list_templates` | Reads | List the notes in the Templates folder. |
| `create_from_template` | Asks | Create a note from a template, filling `{{title}}` and the date tokens. |
| `daily_note` | Asks | Return the path of a day's daily note, creating it from the template if it doesn't exist. Never makes a second note for the same day. |
| `capture` | Asks | Add a note or a todo to the capture inbox note. |
| `add_task` | Asks | Add a todo in one step — its text, the people it is for and its due or start date — to the capture inbox, today's daily note, the open page or a named note. Dates in your own words are read by DocGraph on your clock and shown on the card. |
| `get_authoring_guide` | Reads | The page-conventions reference the AI follows when it builds pages. |
| `validate_page` | Reads | Lint an HTML page it wrote: page skeleton, table, query and chart marker ids, in-vault links, scripts. |

### Links and the graph

| Tool | Kind | What it does |
|---|---|---|
| `list_backlinks` | Reads | Notes that link to a note, with depth and PageRank. |
| `get_outbound_links` | Reads | Notes a note links to, with depth and PageRank. |
| `graph_neighbors` | Reads | Notes linked to or from a note, in both directions. |
| `run_graph_query` | Reads | Walk the link graph from a note by direction, depth and link type (`rel`). |
| `shortest_path` | Reads | The shortest link chain between two notes (up to 6 hops), with each hop's link type. |
| `find_orphans` | Reads | Notes no other note links to. |
| `find_broken_links` | Reads | Links that point at files that don't exist. |
| `set_link_rel` | Asks | Set or clear the typed link (`rel`) on the links from one HTML page to a target. HTML pages only. |

### Tags, properties and people

| Tool | Kind | What it does |
|---|---|---|
| `get_tags` | Reads | The tags on one file, both yours and auto-generated. |
| `list_tags` | Reads | Every tag in the vault with the number of files carrying it. |
| `list_pages_by_tag` | Reads | Every file carrying a tag. |
| `apply_tags` | Asks | Apply up to 12 tags to a file. Written to DocGraph's tag index, not into the document. |
| `query_properties` | Reads | Find pages by their page properties (key/value metadata). |
| `set_property` | Asks | Set one page property. |
| `delete_property` | Asks | Remove a page property. |
| `get_ontology` | Reads | The vault's declared note types, entity kinds, link types and typed property keys. |
| `list_people` | Reads | Every `@name` the vault mentions, most-mentioned first. |
| `mentions_of` | Reads | Notes that mention a person with `@name`. |

### Tasks and block properties

| Tool | Kind | What it does |
|---|---|---|
| `list_tasks` | Reads | The vault's todos, filterable by status, assignee and dates. Each is addressed as `<path>#<ordinal>`. |
| `set_task` | Asks | Tick a task off, or un-tick it. |
| `set_task_props` | Asks | Set a task's assignees, assigner and start and due dates. Omitted properties are cleared. Dates in your own words are read on the card, as for `add_task`. |
| `set_block_props` | Asks | Set or remove properties on HTML lines or todos. One call can change many files, so it always asks, even with **Approve all this session** on. |

### Folders and the file tree

| Tool | Kind | What it does |
|---|---|---|
| `create_folder` | Asks | Create a folder. |
| `move_folder` | Asks | Move a folder and rewrite the links into it. |
| `delete_folder` | Asks | Delete a folder and everything in it, to the OS trash. Undoable in-app only up to 100 files / 2 MB. |
| `set_folder_icon` | Asks | Set a folder's or a page's icon and colour. |
| `clear_folder_icon` | Asks | Remove a folder's or a page's icon. |
| `get_tree_order` | Reads | The tree's manual sibling order. |
| `set_tree_order` | Asks | Set the manual order of a folder's children. |
| `set_pinned_files` | Asks | Pin or unpin files at the top of the tree. |

### Tables and queries

| Tool | Kind | What it does |
|---|---|---|
| `list_tables` | Reads | List the vault's data tables. |
| `get_table_schema` | Reads | A table's columns and types. |
| `query_table` | Reads | Filter, sort and page a table's rows. |
| `search_tables` | Reads | Keyword search inside table cells. |
| `get_related` | Reads | Follow a relation column to the row it points at in another table. |
| `list_saved_queries` | Reads | List the saved queries. |
| `run_saved_query` | Reads | Run a saved query. |
| `query_source` | Reads | Query the vault's own data — files, tasks, tags, people, dates, links, properties — without a saved query. |
| `create_table` | Asks | Create a data table. |
| `rename_table` | Asks | Rename a table. |
| `delete_table` | Asks | Delete a table with all its rows and columns. Undoable with **Undo last AI change**. |
| `add_column` | Asks | Add a column. |
| `update_column` | Asks | Rename a column or change its type; cell values are kept. |
| `insert_row` | Asks | Add a row. |
| `update_row` | Asks | Change a row. |
| `delete_row` | Asks | Delete a row. |
| `set_table_sort` | Asks | Set a table's display sort, like clicking its column headers. |
| `save_query` | Asks | Save a named query over a table. |
| `delete_query` | Asks | Delete a saved query. |
| `import_spreadsheet_as_table` | Asks | Import a `.xlsx` or `.csv` as one editable table per sheet, plus a page that embeds them. The source file is copied, not changed. |

### Charts and whiteboards

| Tool | Kind | What it does |
|---|---|---|
| `list_charts` | Reads | List the saved charts. |
| `read_chart` | Reads | Read the categories and values a chart plots right now, to check it before citing it. |
| `create_chart` | Asks | Create a bar, line, area, pie, scatter or Gantt chart from a table or query, or update an existing one by id. |
| `delete_chart` | Asks | Delete a chart. |
| `read_board` | Reads | A whiteboard's nodes, edges and frames (no positions). Called before `edit_board`. |
| `create_board` | Asks | Create a whiteboard or diagram from a description of nodes and edges. |
| `edit_board` | Asks | Add, change or connect nodes on an existing board. |

### Version history

| Tool | Kind | What it does |
|---|---|---|
| `git_status` | Reads | Uncommitted changes in the vault. |
| `git_history` | Reads | Past snapshots of the vault, or of one file. |
| `git_snapshot` | Asks | Take a local version-history snapshot. Never pushes. |

### Scanned documents

| Tool | Kind | What it does |
|---|---|---|
| `make_searchable` | Asks | Make scanned PDFs or images searchable. Their text is read on this computer, in the background. |
| `remove_from_search` | Asks | Take PDFs or images out of search and delete the text read from them. |

### Memory

| Tool | Kind | What it does |
|---|---|---|
| `read_memory` | Reads | Read `Memory/agent.md`, the lines remembered across chats. |
| `propose_memory` | Asks | Propose one line (up to 300 characters) to remember. You approve it first; it is never auto-approved. |
