overleaf-multi-mcp
Provides tools for managing Overleaf projects, including project discovery, file reading/writing, section editing, local workspace setup, syncing, diffing, pushing changes, viewing version history, and rolling back to previous versions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@overleaf-multi-mcpSet up local workspace for project VCaiLuong and show me the diff"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
overleaf-multi-mcp
A Model Context Protocol (MCP) server that spans every project on your Overleaf account. It auto-discovers your project list, then reads and edits files across any of them from Claude Code — with a review-before-push local-workspace flow.
Design rationale, trade-offs, and the ToS discussion live in
OVERLEAF_MCP_ARCHITECTURE.md. This README is
just setup + usage.
How it works (two auth paths)
Concern | Mechanism | Where |
Content I/O (read/commit/push/history) |
|
|
Discovery (listing your projects) |
|
|
The token does all file work. The cookie is used only to list projects — never for content. See the architecture doc's §6 for the ToS caveat around the cookie call.
Related MCP server: overleaf-mcp
Prerequisites
Node.js ≥ 18 (uses global
fetch)The
gitbinary onPATH
Install
cd /Users/longngo/IdeaProjects/overleaf-mcp
npm installConfigure auth
All state lives in ~/.config/overleaf-mcp/ (override with OVERLEAF_CONFIG_DIR).
1. Git token (required — content)
Overleaf → Account Settings → Git Integration → generate a token (olp_…).
The same token works for every project you own.
mkdir -p ~/.config/overleaf-mcp
printf '%s' 'olp_your_token_here' > ~/.config/overleaf-mcp/token.txt
chmod 600 ~/.config/overleaf-mcp/token.txt(Or set OVERLEAF_TOKEN in the environment.)
2. Session cookie (optional — discovery only)
Only needed for sync_projects / list_projects. In a logged-in browser:
DevTools → Application → Cookies → https://www.overleaf.com → copy the
overleaf_session2 value.
printf '%s' 'overleaf_session2=s:...' > ~/.config/overleaf-mcp/session.txt
chmod 600 ~/.config/overleaf-mcp/session.txtThe file may hold either the full overleaf_session2=s:… string or just the value.
Cookies expire (~30 days) — when sync_projects reports an expiry, refresh this file.
(Or set OVERLEAF_SESSION.) Without a cookie the server still works for any project
you reference by ID or set up as a workspace; you just can't auto-list.
Register with Claude Code
Add to your .mcp.json (kept alongside the old single-project entry during
transition, per the architecture doc):
{
"mcpServers": {
"overleaf-multi": {
"command": "node",
"args": ["/Users/longngo/IdeaProjects/overleaf-mcp/src/server.js"],
"env": {
"OVERLEAF_WORKSPACE_ROOT": "/Users/longngo/IdeaProjects/Overleaf"
}
}
}
}Then restart Claude Code. On start the server auto-syncs the project list if a cookie is present (non-fatal if not).
Environment variables
Var | Default | Purpose |
| (reads | Git token for content I/O |
| (reads | Session cookie for discovery |
|
| Where |
| — | Name/ID used when |
|
| State directory |
|
| Dashboard host (self-hosted CE) |
|
| Git host (self-hosted CE) |
|
| Commit identity |
Tools (17)
Discovery — sync_projects, find_project, session_status, list_projects
Workspace — setup_local, pull_local, diff_local, push_local,
list_version_history, rollback_to_version
Content (workspace-aware) — list_files, read_file, get_sections,
get_section_content, status_summary, write_file, write_section
The core flow: review before push
sync_projects→find_project "VCaiLuong"setup_local "VCaiLuong"→ clones to<workspace-root>/VCaiLuong/write_section main.tex "Abstract" "…"→ writes only, no pushdiff_local "VCaiLuong"(or your IDE Source Control) to reviewpush_local "VCaiLuong" "Rewrite abstract"→ commits + pushes
Projects without a workspace fall back to legacy behavior: write_file /
write_section clone to a temp dir and commit + push immediately (a commitMessage
is required in that mode).
Rollback
list_version_history "VCaiLuong" limit:10
rollback_to_version "VCaiLuong" commitSha:"def5678" paths:["main.tex"] mode:"restore"
# → uncommitted changes; review with diff_local, then push_localrestore = git checkout <sha> -- <paths>; revert = undo commits since <sha>.
Both leave changes uncommitted (nothing is force-pushed). Rollback refuses if the
workspace is dirty unless force:true.
Security notes
The git token is never placed in argv, in a workspace's
.git/config, or in error output. Remotes are stored clean; credentials are supplied per-command via an inline credential helper reading the token from the child process env.Keep
token.txtandsession.txtatchmod 600.
Layout
src/
├── server.js MCP entry: stdio transport, tool schemas, dispatch, content routing
├── config.js paths, auth, cache.json, workspaces.json, name/ID resolution
├── git.js child_process git wrappers with token masking
├── overleaf.js session-cookie discovery (the only network-JSON module)
└── latex.js \section{…} parsing + section splicingAvailable Tools
17 toolsdiff_localA
Show uncommitted changes in the registered workspace (unified diff + untracked files) for review before pushing.
| Name | Required | Description | Default |
|---|---|---|---|
| staged | No | Show staged changes only. | |
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a read-only operation ('Show') and describes the output, but it does not explicitly state that it makes no modifications, nor does it mention prerequisites like workspace registration or what happens if no changes exist. This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action and resource, with a parenthetical clarifying the output format and a purpose clause. Every word earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description is largely complete. It explains what the tool shows, the output content, and the intended use case. It might benefit from clarifying the output format (e.g., text vs. JSON) or behavior when no changes exist, but overall it is sufficiently informative given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (projectName and staged) having descriptive text in the schema. The tool description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Show') and resource ('uncommitted changes in the registered workspace'), and further specifies the output content ('unified diff + untracked files') and its intended purpose ('for review before pushing'). This effectively distinguishes it from sibling tools like pull_local and push_local.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: use this tool to review uncommitted changes before pushing. It implies the need for a registered workspace and positions it as a pre-push review step. However, it does not explicitly exclude any scenarios or name alternative tools, so it lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_projectA
Fuzzy-search known projects by title or ID. Returns ranked matches with IDs and whether a local workspace exists.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the fuzzy-search behavior and the return format (ranked matches with IDs and workspace existence), which is substantive for a search tool. It does not discuss side effects or permissions, but for a read-only search, the provided details are sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and resource, followed by return details. Every phrase adds value with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description fully covers the use case, return value, and search mechanism. It is complete for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes 'query' simply as 'Search text.' The description adds that the query matches by title or ID, providing meaningful semantic context beyond the schema and clarifying what kinds of text are acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'fuzzy-search' and names the resource 'known projects', explicitly distinguishing it from sibling tools like list_projects. It also clarifies the search keys (title or ID) and what is returned, making the tool's function crisp and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to search for a specific project rather than listing all projects (sibling list_projects). It does not explicitly state exclusions or mention alternatives, but the contextual contrast with sibling tools is clear from the search phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_section_contentB
Extract the body of one LaTeX section by title.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. | |
| sectionTitle | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Extract' without explaining what happens if the section is not found, whether the returned body includes formatting, or how filePath is resolved. This minimal disclosure is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no output schema, and no annotations. The description does not explain return values, error handling, or how to specify the file path. For a tool that extracts content, this is critically incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only projectName has a description). The description adds meaning for sectionTitle by saying 'by title', but filePath remains completely undocumented in both schema and description. The tool does not compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Extract' and the resource 'the body of one LaTeX section by title'. This distinguishes it from sibling tools like get_sections (which lists sections) and read_file (which reads entire files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention read_file, get_sections, or any conditions that would make this tool preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sectionsA
List LaTeX \section{…} headings in a file (title, level, line).
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It accurately discloses that the tool lists headings and indicates the output fields, but it does not mention potential nuances like handling of nested sections, comments, or whether only literal \section commands are matched. The behavior is generally transparent but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and target. It avoids fluff and includes only essential details in a compact parenthetical. Every word contributes value, making it an exemplary concise description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description provides the key return fields (title, level, line). It lacks some context, such as whether subsections are included (the phrase '\section{…}' is specific but 'level' hints at hierarchy) and optional projectName usage, but the core functionality is adequately covered given its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: filePath has no description, while projectName is described in the schema. The description says 'in a file' but adds no further meaning to filePath or projectName. Since coverage is moderate and the description does not compensate, parameter semantics are minimally addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('LaTeX \section{…} headings in a file'), with a parenthetical clarifying the output fields (title, level, line). This clearly distinguishes it from siblings like read_file (whole file content) and get_section_content (likely returns section content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. The sibling tools include get_section_content and read_file, but the description does not mention them or any exclusions. The usage is only implied by the tool's purpose, not directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
List files in a project (workspace or temp clone), optionally filtered by extension.
| Name | Required | Description | Default |
|---|---|---|---|
| extension | No | e.g. ".tex". Use "all" for every file. | .tex |
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' clearly indicates a read-only operation, and 'workspace or temp clone' adds context about the environment. However, it does not disclose return format, recursion, or other behavioral details, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the purpose and key option. Every word earns its place, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool, the description covers the essential purpose and context. The schema fully documents parameters. While there is no output schema or return format detail, the tool's simplicity makes this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters (extension and projectName) well-described. The description's mention of 'filtered by extension' is redundant with the schema and does not add new semantic meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists files in a project, with an optional extension filter. The verb 'List' and resource 'files in a project' are specific, and the mention of 'workspace or temp clone' adds scope. This distinguishes it from siblings like read_file (content) and list_projects (project list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: to list files in a project, optionally filtered by extension. It does not explicitly state alternatives or exclusions, but the context is clear enough for an agent to differentiate from similarly named tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all projects from the last sync (title, ID, last-modified, access level).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses that the data is from the last sync (indicating possible staleness) and that it lists projects, which implies a read-only operation. However, it does not explicitly mention that it performs no network requests or that results are not guaranteed to be up-to-date beyond the last sync, leaving some behavior unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the verb and resource. It lists exactly what is returned (title, ID, last-modified, access level) and adds the crucial scope ('from the last sync') without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no params and no output schema, the description fully covers the return fields and the data source. It tells the agent what to expect and the underlying sync context, making it complete for its intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is empty. The description adds no parameter-specific information because there are none. Baseline is 4 for zero-parameter tools given the schema already covers everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all projects from the last sync' with a specific verb, resource, and scope. It differentiates from sibling tools like sync_projects (which likely syncs data) and find_project (which searches for specific projects) by implying a simple list operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from the last sync' clearly implies that this tool uses locally cached data, not live data, so agents know to sync first if they need current information. However, it does not explicitly name alternatives or exclusions, earning a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_version_historyA
Return git commit history for a project ({sha, author, date, message, changedFiles}). Uses the workspace if present, else a temp clone.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max commits. | |
| filePath | No | Restrict history to one file. | |
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully reveals that the tool 'Uses the workspace if present, else a temp clone', which is a significant side-effect (potential clone creation). It also conveys a read-only intent via 'Return git commit history'. However, it does not cover auth requirements, failure behavior, or whether a temp clone is cleaned up, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action and output shape, then adds a key behavioral note about workspace/clone. Every word earns its place, with no fluff or redundancy. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and absence of an output schema, the description covers the essential return fields and the workspace/clone behavior, which is good. It lacks some context like pagination, sorting, or whether changedFiles contains diffs, but the schema covers parameters. Overall, it provides sufficient context for an agent to understand the tool's basic invocation and expected result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter documentation, including descriptions for projectName, limit, and filePath, so the description does not need to repeat them. The description adds no additional meaning beyond the schema, such as parameter interactions or default behavior, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Return[s] git commit history for a project' with a specific verb and resource, and lists the output fields ({sha, author, date, message, changedFiles}). This distinctly separates it from sibling tools like list_files (files) and rollback_to_version (actions), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly say when to use this tool versus alternatives, such as using rollback_to_version for reverting or list_files for viewing current contents. It implies usage by describing the function, but lacks clear context on when it is appropriate or when to prefer another tool. The workspace/clone detail hints at setup requirements, but not comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pull_localA
git pull (--ff-only) the registered workspace to freshen it from Overleaf.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It discloses the exact git command and --ff-only flag, indicating fast-forward-only behavior. It does not detail failure modes or permissions, but is still more transparent than typical descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence with no filler. It front-loads the command and clearly states the purpose, earning high marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and complete schema coverage, the description provides sufficient context. No output schema exists, but the standard git pull behavior is understood, and the description covers the essential details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, with a rich description covering fuzzy names, IDs, and default behavior. The tool description adds no additional parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb+resource: 'git pull (--ff-only) the registered workspace to freshen it from Overleaf.' It distinguishes from siblings like push_local and sync_projects by specifying the pull direction and the --ff-only flag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (updating the local workspace from Overleaf) but does not explicitly mention when not to use it or contrast with alternatives like sync_projects. It gives clear context without exclusions, matching a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_localA
Stage (all, or the given paths), commit, and push the registered workspace back to Overleaf. Explicit — the only tool that pushes workspace edits.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Specific paths to stage. Omit to stage all changes. | |
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. | |
| commitMessage | Yes | Commit message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does reveal the sequence of operations (stage, commit, push), which adds value beyond the name. However, it omits important behavioral traits such as whether the push can overwrite remote changes, requires authentication, or what happens on conflicts. This lack of consequence disclosure is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: one sentence explaining the core actions plus one sentence for differentiation. Every word earns its place, and the key information is front-loaded. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain expected return values and side effects. It does not mention what the tool returns after a successful push (e.g., version ID, success message) or what happens if remote changes exist. It also assumes familiarity with a 'registered workspace' without referencing setup prerequisites. This leaves the agent under-informed for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds minimal meaning beyond the schema; it reiterates that paths are optional ('Stage (all, or the given paths)') and implies projectName is the target, but the schema already holds those details. This matches the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Stage (all, or the given paths), commit, and push the registered workspace back to Overleaf.' It uses specific verbs (stage, commit, push) and identifies the resource (workspace to Overleaf). It also distinguishes itself from siblings by explicitly claiming to be 'the only tool that pushes workspace edits,' which separates it from pull_local and other sync operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool to push workspace edits to Overleaf. It explicitly states it is the only tool that does so, which implies alternatives like pull_local or sync_projects are not for pushing. However, it does not explicitly mention when not to use it (e.g., when you only need to stage or commit locally without pushing) or prerequisites like having a registered workspace.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Read a file from a project.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path within the project, e.g. "main.tex". | |
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral transparency. It only says 'read', implying a read-only operation, but fails to mention error handling, return format, encoding, or file size limits. It does not contradict annotations (none exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant words. It is efficiently front-loaded and appropriately sized for a simple read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity, the description lacks comparison with sibling tools and behavioral details (e.g., what happens if the file does not exist). The absence of an output schema increases the burden on the description, but it does not compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with clear descriptions (100% coverage), so the description adds no additional parameter-level meaning. The schema already provides sufficient semantic detail, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('read') and resource ('a file from a project'), making the core purpose clear. It doesn't explicitly distinguish from sibling tools like get_section_content, but 'file' is a distinct concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_section_content, list_files, or write_file. The description simply states the action without any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rollback_to_versionA
Restore a workspace to a prior commit as UNCOMMITTED changes (review with diff_local, then push_local). mode "restore" = git checkout ; "revert" = undo commits since .
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | restore (default) or revert. | restore |
| force | No | Proceed even if the workspace has uncommitted changes. | |
| paths | No | Paths to restore (restore mode only). Omit for all. | |
| commitSha | Yes | Target commit SHA (from list_version_history). | |
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that changes are uncommitted and explains mode behaviors as git checkout vs undo commits. However, it omits the force/overwrite guard behavior, which is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, dense sentence that front-loads the core purpose and follows with concise mode semantics. Every clause earns its place; no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description covers the essential behavior (uncommitted restore, modes) and a usage workflow. It does not mention force/path handling, but the schema already documents these. Overall sufficient for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics for 'mode' by mapping to git commands and clarifies the uncommitted nature. It does not add detail for commitSha or projectName beyond schema, but the mode explanation elevates it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Restore' and resource 'workspace to a prior commit', with explicit mode distinctions ('restore' vs 'revert'). The description also distinguishes from siblings by outlining the uncommitted-changes workflow and referencing diff_local/push_local as follow-ups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: restore as uncommitted changes, review with diff_local, then push_local. This implies the intended workflow and distinguishes from direct commit tools, though it does not explicitly state exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusA
Report auth state: git token present, session cookie present, last sync time, project count, workspace count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It lists the output fields, giving useful insight into what is reported. However, it does not state whether this is a local read-only operation, whether it makes network calls, or how it behaves in an unauthenticated state. This is a moderate disclosure gap for a status-checking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb 'Report' and then lists all relevant data points. Every word earns its place and there is zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless tool, the description sufficiently covers the main output dimensions. It does not specify return format or failure modes, but given the tool's simplicity and lack of output schema, the description is largely complete. The main gap is the missing usage context relative to status_summary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds value by explaining exactly what is reported, which effectively serves as output semantics. Since there are no parameters to describe, no additional parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Report' and clearly enumerates the exact data points (git token present, session cookie present, last sync time, project count, workspace count). This clearly distinguishes it from sibling tools like list_projects or sync_projects, which focus on different aspects of the project workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Since there is a sibling tool called status_summary that likely overlaps in purpose, the absence of explicit usage context or exclusions leaves the agent guessing about when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_localA
Clone a project into a visible local folder (full working tree: .tex, .cls, .bst, images, etc.) and register it so reads/writes route there.
| Name | Required | Description | Default |
|---|---|---|---|
| localPath | No | Destination folder. Relative paths resolve against OVERLEAF_WORKSPACE_ROOT (default: cwd). Defaults to ./<sanitized-project-name>. | |
| projectName | Yes | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It honestly discloses that it clones and registers routing, but lacks details on idempotency, behavior if the folder already exists, permission requirements, or side effects on existing local changes. More transparency would be beneficial for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that packs in the verb, resource, destination, and a helpful parenthetical list of file types. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool mutates local state and registers routing, but the description does not explain expected return values, prerequisites (e.g., project must exist), or error scenarios. Since there is no output schema, more detail would aid completeness, yet the core behavior is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters fully described (projectName fuzzy match, localPath default resolution). The description adds minimal extra semantics ('visible', 'full working tree') but does not go beyond the schema in explaining parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('clone') and resource ('project'), clearly stating the destination ('visible local folder') and the registration side effect. This distinguishes it from sibling tools like pull_local (syncing an existing copy) and sync_projects (overall sync).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for initial local setup and mentions that reads/writes route there, suggesting ongoing usage. However, it does not explicitly contrast with pull_local (updating an existing local copy) or push_local, leaving when-to-use vs alternatives ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
status_summaryB
Overview of a project: file count, total size, source (workspace/temp), and dirty state if a workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses the output contents and the conditional dirty-state attribute, but it does not explicitly confirm that the operation is read-only or describe error behavior or permissions. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every element contributes to explaining the tool's output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description adequately conveys what the returned overview contains. It is reasonably complete, though the meaning of 'dirty state' could be more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a thorough description of the projectName parameter, including fuzzy names and optionality. The tool description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing an overview of a project with specific metrics (file count, total size, source, dirty state), making its purpose evident. It is distinct from sibling tools like list_files or list_projects, though it lacks an explicit verb such as 'retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like list_projects or sync_projects. There are no exclusions or references to sibling tools, leaving the usage context implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_projectsA
Refresh the project list from your Overleaf account (uses the session cookie). Run after creating a new project.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Reserved; sync always fetches fresh. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the dependency on a session cookie and notes that sync always fetches fresh, but it does not state side effects like whether local changes are overwritten or what the function returns. This is a moderate disclosure level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and directly states purpose and usage. Every word earns its place, front-loading the core action and then adding a practical tip. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, this description is largely complete: it gives the action, the data source, the auth dependency, and a typical use case. It lacks an explicit note about return values or whether it modifies local state, but for a refresh command, the purpose is self-explanatory enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the force parameter is documented in the schema). The description adds no additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate since the schema handles the parameter explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Refresh the project list from your Overleaf account.' This clearly distinguishes it from siblings like list_projects, which likely only lists the already-synced list. The inclusion of 'uses the session cookie' further clarifies the mechanism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit usage context: 'Run after creating a new project.' This is a clear when-to-use instruction. However, it does not mention when not to use it or name alternative tools, so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileA
Write a whole file. With a workspace: writes only (review + push_local). Without: commits + pushes immediately (commitMessage required).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| filePath | Yes | ||
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. | |
| commitMessage | No | Required only when the project has no local workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It usefully reveals the critical workflow difference: in a workspace it only writes for review/push_local, while without one it commits and pushes immediately. It does not mention overwrite semantics or potential errors, but the most important behavioral trait is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the core action, and every sentence adds distinct value about workspace-dependent behavior. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description covers the most important contextual distinction (workspace vs no workspace) and the associated commitMessage requirement. It omits details like whether the file is overwritten, return values, and contrasts with write_section, but is still quite complete for a high-level understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with projectName and commitMessage described while content and filePath are not. The description adds context by noting commitMessage is required when there is no workspace, which complements the schema, but it does not explain the required params. The names are fairly self-explanatory, so the description only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Write a whole file' with a specific verb and resource, directly distinguishing it from sibling tools like write_section. It unambiguously conveys the tool's core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear contextual guidance by explaining behavior with and without a workspace, including the commitMessage requirement. However, it does not explicitly mention alternatives like write_section or provide exclusion criteria, so it stops short of full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_sectionB
Replace one LaTeX section body, preserving the heading. Same push semantics as write_file.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| newContent | Yes | ||
| projectName | No | Project name, fuzzy name, or 24-char project ID. Omit to use the default/sole project. | |
| sectionTitle | Yes | ||
| commitMessage | No | Required only when the project has no local workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. The phrase 'Same push semantics as write_file' references an external sibling's behavior without explaining what that entails (e.g., push to remote, commit creation, permission needs). The mutation aspect is implied by 'Replace', but side effects, reversibility, and response behavior are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the primary purpose. It is efficient, but the 'same push semantics as write_file' reference, while concise, relies on external knowledge and could be considered vague if the sibling description is not inspected.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, no output schema, and sparse annotations. The description does not explain prerequisites, push semantics, parameter constraints, or what happens on success/failure. It is too incomplete for a mutation tool with significant side-effect potential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must compensate for the undocumented filePath, sectionTitle, and newContent parameters. It does not explain these parameters, sectionTitle matching semantics, or how newContent relates to the preserved heading. The phrase 'section body' adds minimal context but does not clarify parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Replace') and a clear resource ('one LaTeX section body'), with an important scoping detail ('preserving the heading'). This clearly distinguishes it from write_file, which targets whole files, and from read-oriented siblings like get_sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: replace a LaTeX section body while preserving its heading. However, there is no explicit statement of when to use this tool versus write_file or other siblings, and no exclusions or alternative suggestions are provided. The reference to 'same push semantics as write_file' hints at shared behavior but does not clarify selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v0.1.0- First observed
diff_local - First observed
find_project - First observed
get_section_content - First observed
get_sections - First observed
list_files - First observed
list_projects - First observed
list_version_history - First observed
pull_local - First observed
push_local - First observed
read_file - First observed
rollback_to_version - First observed
session_status - First observed
setup_local - First observed
status_summary - First observed
sync_projects - First observed
write_file - First observed
write_section
TDQS
Each tool has a clearly distinct role: project sync/search/status, workspace setup and git operations, file and LaTeX section access, and version management. Even similar-sounding tools like sync_projects and list_projects are differentiated by description (refresh vs. view cached data).
Most tools follow a clear verb_noun snake_case pattern (sync_projects, list_files, write_section). Two status tools (session_status, status_summary) are noun_noun and setup_local is slightly awkward, but the overall style is consistent and readable.
At 17 tools, this is on the higher end but within reason given the server's dual focus on Overleaf project management and local git-synced workspaces. Each tool covers a distinct need, though a few could potentially be merged (e.g., status_summary and session_status) without significant loss.
The tool surface covers the essential lifecycle: project discovery, workspace setup, local editing, diff/push, version history/rollback, and LaTeX-aware reading/writing. Missing operations like project creation/deletion are likely outside the intended scope (session-based account sync), so the core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Edit your Overleaf LaTeX projects from Claude and ChatGPT; every change is a real Git commit.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Persistent AI LaTeX workspace: edit and compile multi-file projects, export publication-ready PDFs.
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides access to Overleaf projects via Git integration, allowing Claude and other MCP clients to read LaTeX files, analyze document structure, and extract content.6150261MIT
- AlicenseNot gradedqualityBmaintenanceEnables editing Overleaf projects from Claude, with tools to list, read, edit, and sync files via Git.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude and AI agents to read and edit Overleaf documents in real time, with support for project listing, document manipulation, LaTeX compilation, and live collaboration.9814MIT
- AlicenseNot gradedqualityBmaintenanceConnects Claude/ChatGPT to Overleaf projects via the Git integration, enabling read, edit, write, and file management through natural language commands.2AGPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NVCLong/Overleaf-Connector'
If you have feedback or need assistance with the MCP directory API, please join our Discord server