Dropbox Memory tools
What each tool takes and returns. Names, revs and times in the examples are made up. Home page.
Workspaces
A workspace is a top-level folder in the app folder. Every call names one.
Apps/LLMemoryBox/
garden/
tomatoes.md
beds/plan.md
work/
projects/search.md
readme.md
- One workspace per subject. Claude picks the subject before it saves, so notes do not pile into one pool.
- Writing to a new workspace creates its folder.
- Files directly in the app folder, such as
readme.md, are in no workspace. No tool sees them.
"all"
list accepts "all" to cover every workspace. Each entry names its workspace, so Claude can read it next.
Request arguments
{ "workspace": "all" }
Result
{"files":[
{"workspace":"garden","path":"tomatoes.md","size":71,"modified":"2026-10-31T05:46:06Z"},
{"workspace":"garden","path":"beds/plan.md","size":240,"modified":"2026-10-29T18:02:11Z"},
{"workspace":"work","path":"projects/search.md","size":1803,"modified":"2026-10-30T22:40:57Z"}
]}
Tools that act on one file refuse "all":
this tool needs one workspace, not "all" (got "all")
Revs and errors
- A rev is the id of one version of a file. Every change makes a new rev.
- write and patch take
expected_rev, and refuse if the file is at another rev.
- A failed call returns one error text with
isError: true, and writes nothing.
list
The .md files in a workspace, with size in bytes and last change time.
Request arguments
{ "workspace": "garden" }
Result
{"files":[
{"workspace":"garden","path":"tomatoes.md","size":71,"modified":"2026-10-31T05:46:06Z"},
{"workspace":"garden","path":"beds/plan.md","size":240,"modified":"2026-10-29T18:02:11Z"}
]}
read
Two text blocks: the rev and size, then the file text as stored.
Request arguments
{ "workspace": "garden", "path": "tomatoes.md" }
Result, block 1
rev: 0165f1c6dcfb473000000033b284821
size: 71 bytes
Result, block 2
# Tomatoes
- Planted 6 seedlings on 12 May.
- First fruit on 20 June.
write
- Without
expected_rev: creates the file, and fails if it exists.
- With
expected_rev: replaces the whole file, if it is still at that rev.
- Creates missing folders.
Request arguments
{
"workspace": "garden",
"path": "tomatoes.md",
"text": "# Tomatoes\n\n- Planted 6 seedlings on 12 May.\n"
}
Result
rev: 0165f1c6d7426cd000000033b284821
Indexed for search.
Result if the file exists
The file "tomatoes.md" in workspace "garden" already exists. To replace it, pass its current rev as expected_rev.
Replace request
{
"workspace": "garden",
"path": "tomatoes.md",
"text": "# Tomatoes\n\n- Planted 8 seedlings on 12 May.\n",
"expected_rev": "0165f1c6d7426cd000000033b284821"
}
append
- Adds text right after the last character. Start it with a newline for a new line.
- Creates the file if it is missing. Needs no rev.
Request arguments
{
"workspace": "garden",
"path": "tomatoes.md",
"text": "- First fruit on 20 June.\n"
}
Result
rev: 0165f1c6dcfb473000000033b284821
Indexed for search.
patch
- Each edit replaces
old_text, which must occur exactly once, with new_text.
- Edits apply in order. If one fails, nothing is written.
Request arguments
{
"workspace": "garden",
"path": "tomatoes.md",
"edits": [
{ "old_text": "6 seedlings", "new_text": "8 seedlings" }
],
"expected_rev": "0165f1c6dcfb473000000033b284821"
}
Result
rev: 0165f1c6e1a5ff2000000033b284821
Indexed for search.
Result if the file changed since read
The file "tomatoes.md" in workspace "garden" is at rev "0165f1c6e1a5ff2000000033b284821", not "0165f1c6dcfb473000000033b284821". It changed since you read it. Nothing was written.
search
- Finds the files whose meaning is closest to
query, best first, with a score from -1 to 1. limit is 1 to 20, default 8.
- Before it ranks, search indexes the markdown files that changed in Dropbox since the last search, in any app, and drops deleted files.
- The first search indexes every file. If that takes more than about 20 seconds, the result says how many files are not indexed yet, and the next search goes on.
- write, append and patch index the file at once and end with one line that says if it was indexed.
- A file over 8,000 bytes is indexed in parts of about 2,000 bytes, split at blank lines where it can. Its score is the score of its best part.
- A file over 1,000,000 bytes is not indexed. Search names it as not indexed.
- Each Dropbox account may send at most 84,745,762 tokens of file text and queries to the embedding model per calendar month (UTC), about $1, counted high. When a query or a file does not fit in what is left, search answers an error or the file is not indexed until the next month.
Request arguments
{ "workspace": "all", "query": "when did the tomatoes fruit", "limit": 3 }
Result
1. garden/tomatoes.md score 0.684
2. garden/beds/plan.md score 0.412
3. garden/journal.md score 0.205
write result for a file over 8,000 bytes
rev: 0165f1c6f0a2b19000000033b284821
Indexed for search in 5 parts.