Documentation, metadata, and small additive fixes. No tools were added or removed; the server still registers 19 tools.
Breaking
get_project_treereturns an object instead of a bare array. Entities move underentities, alongsiderootDocPath,compiler,imageName,trackChangesActive, and ahashNote. Callers that iterated the result directly must now iterateresult.entities. This is the only response-shape change in this release.
Changed
compile_project.rootFilePathis now optional and defaults to the root document configured in Overleaf, which is what the web UI's Recompile button builds. A blank project ships with a stubmain.tex, so a project whose real manuscript lived elsewhere silently compiled the stub.upload_fileis annotateddestructiveHint: true. It replaces an existing entity at the destination path in place, so the previousdestructiveHint: falsemisdescribed it.upload_filereturns a normalized result:entityId,entityType,path,replaced, and, for binary files,hash.download_fileno longer silently overwrites a local file; it fails unlessoverwrite: trueis passed.compile_projectresults includerootFilePath, the document actually compiled.
Added
write_fileacceptslocalPathas an alternative tocontent, keeping a whole-file replacement revision-checked and optionally tracked without sending the file through the client's tool-argument budget.upload_fileacceptsdestinationName, so a local file can be stored under a different name.- Overleaf's upload rejections (
duplicate_file_name,invalid_filename,project_has_too_many_files,folder_not_found) surface asINVALID_ARGUMENTwith an explanation instead of a bareREMOTE_ERROR. - Continuous integration on pushes and pull requests, across Node 20 and 24.
- A roadmap covering the planned path to 1.0.0, and a changelog.
Documentation
- The tree's
hashis documented as a git blob hash,sha1("blob " + byteLength + "\0" + content), identical togit hash-object <file>. Plainsha1sumnever matches. It is present only on binaryfileentities; Overleaf stores no content hash for documents. upload_file's upsert semantics, including that it is a valid way to replace.tex,.bib, and.bstdocuments from disk, and that doing so is a blind, untracked write.- A decision table for
write_fileversusupload_file, with the real document and update size limits.
Full changelog: v0.1.2...v0.1.3