Skip to main content
Glama
flafkus
by flafkus

overleaf-connect

An MCP server to have agents use Overleaf for free.

Once it's connected, an agent can:

  • create or duplicate projects

  • list, read, write, and edit .tex files

  • compile a project and pull the PDF back locally

Installation

If you dont have uv installed, install it.

It needs your Overleaf session cookie to do anything, so grab that first:

  1. Sign in at overleaf.com.

  2. Open DevTools -> Network, reload the project list, click any overleaf.com request, and copy the full Cookie request header.

Copy over this for the OVERLEAF_SESSION environment variable in the MCP server.

Claude Code

claude mcp add overleaf -e OVERLEAF_SESSION="overleaf_session2=s%3A...; GCLB=..." -- uvx overleaf-connect

Claude Desktop

Open Settings -> Developer -> Edit Config and add an overleaf entry under mcpServers (keep any servers you already have):

{
  "mcpServers": {
    "overleaf": {
      "command": "uvx",
      "args": ["overleaf-connect"],
      "env": {
        "OVERLEAF_SESSION": "overleaf_session2=s%3A...; GCLB=..."
      }
    }
  }
}

Afterwards, restart Claude Desktop to reload the MCP servers and get Overleaf connected.

Related MCP server: Unofficial Overleaf MCP Server

Authentication

Overleaf issues a fresh cookie on every request. After the first success the server saves the rotating value to:

  • Windows: %LOCALAPPDATA%\overleaf-connect\session.json

  • macOS / Linux: ~/.overleaf-connect/session.json

The OVERLEAF_SESSION environment variable is treated as a seed - the server will automatically refresh the session whenever requests are done to Overleaf, and store it. You only need to change it in the future if the cookie has expired from not using it.

Optional environment variables

OVERLEAF_SESSION_FILE=...  # where the rotating session cookie is cached
OVERLEAF_CACHE_DIR=...     # compiled-PDF cache
OVERLEAF_OUTPUT_DIR=...    # allowed download_pdf destination root
                          # (default: ~/Downloads/overleaf-connect, or
                          #  ~/Documents/overleaf-connect, else ~/overleaf-connect)

Tools

Tool

What it does

status

check if session cookie works

list_projects

id, name, owner email, last updated

create_project

blank project

duplicate_project

clone an existing project

list_files

paths in a project

read_file

text contents of a file (full=true for files over 100k chars)

write_file

whole-file create/replace

edit_file

exact old/new string replace in a file

compile_project

Overleaf compile -> cached output.pdf + parsed errors

download_pdf

compile and copy the PDF under OVERLEAF_OUTPUT_DIR

trash_project

move a project to Overleaf trash

Writes replace the whole file, so write_file refuses to write back a file that was only read in part - read it again with full=true, or use edit_file. Don't edit a file while someone is typing in it in the browser.

Available Tools

11 tools
compile_projectA
Idempotent

Compile the project on Overleaf and save output.pdf locally.

Returns status, local pdf_path on success, and parsed LaTeX errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond those by stating that compilation saves a local artifact and returns status, pdf_path, and parsed LaTeX errors. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences with the primary action front-loaded and no filler. It states what happens, where the artifact lands, and what is returned, all efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with full schema coverage, relevant annotations, and an output schema, the description is complete. It covers the action, target, local side effect, and return values without needing to re-explain structured schema details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'project' parameter is already documented as 'Project id (24-char hex) or exact name'. The description adds no additional parameter-specific 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Compile'), the target resource ('the project on Overleaf'), and the concrete outcome ('save output.pdf locally'). This distinguishes it well from sibling tools like download_pdf, which presumably retrieves a PDF rather than compiling a project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear the tool is for compiling a project and getting a local PDF, which is sufficient context for an agent. However, it does not explicitly contrast with download_pdf or mention when to avoid using this tool, so it stops short of full alternative-routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_projectA

Create a new blank Overleaf project. Returns id and editor URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the new blank project

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-read-only and non-idempotent; the description adds the concrete behavioral promise that a new project resource is created and that the response contains id and editor URL. No contradiction with the annotations, and no destructive behavior is hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences convey purpose, scope, and output with no filler. The main action is front-loaded and every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter creation tool with an output schema available, the description covers the essential information: what is created, the required input, and the key return values. It could add a note about side effects or prerequisites, but the annotation set and simple shape make this largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% because the single name parameter is described in the input schema. The tool description does not need to add much, and it does not; it simply refers to the project name, consistent with the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Create') with a clear resource ('new blank Overleaf project') and explicitly notes the return values. It is immediately distinguishable from sibling tools like duplicate_project because of the 'blank' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the primary use case (creating a fresh project) but gives no explicit guidance about when to choose this over duplicate_project or whether any prerequisites apply. It does not state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_pdfA
Destructive

Compile the project and copy the PDF to dest.

If dest ends with .pdf it is the file path; otherwise dest is treated as a directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
destYesPath relative to OVERLEAF_OUTPUT_DIR (default: a per-user Downloads/overleaf-connect folder), ending in .pdf or naming a directory for output.pdf
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal non-read-only and destructive behavior; the description adds useful context by revealing that compilation happens as part of the operation and explaining how dest is interpreted. This goes beyond the schema and annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the first sentence states the core action, and the second sentence resolves a key ambiguity about dest. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two simple parameters, complete schema descriptions, and available annotations, the description covers the main behavior and destination semantics. It does not explicitly mention overwrite behavior, but the destructiveHint annotation already alerts the agent to that risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description reinforces the dest path rule but does not add substantial semantic information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Compile the project and copy the PDF to dest') and clearly identifies the resource and destination. The destination rule disambiguates file vs directory, which distinguishes it from sibling tools like compile_project or read_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when a compiled PDF needs to be delivered to a destination, but it does not explicitly explain when to prefer this over compile_project or other siblings. The context is understandable but no alternative comparison is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_projectA

Duplicate an Overleaf project. Returns the new id and editor URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the copied project
projectYesSource project id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only, not idempotent, and not destructive. The description adds the return information but does not disclose additional behavioral details such as whether all files are copied or whether the original remains untouched. However, destructiveHint=false helps cover the safety profile, so the description is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and includes the key outcome. There is no filler, redundancy, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, full schema coverage, present annotations, and available output schema, the description covers the essential action and return values. It falls slightly short of complete because it does not provide usage guidance or explicit confirmation of behavior beyond the duplication itself.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented with meaningful descriptions. The tool description adds no further parameter-level semantics beyond what the schema provides, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Duplicate') applied to a specific resource ('an Overleaf project') and names the result ('the new id and editor URL'). This distinguishes it from sibling tools like create_project by implying duplication of an existing project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as create_project. The intended usage is inferable from the name and description, but there are no stated conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_fileA
Destructive

Replace an exact substring in a project file and upload the result.

Fails if old is missing, or if it appears more than once and replace_all is false. Prefer this over write_file for a paragraph or sentence change.

ParametersJSON Schema
NameRequiredDescriptionDefault
newYesReplacement text
oldYesExact text to find (must match once unless replace_all)
pathYesPath inside the project, e.g. main.tex
forceNoOverwrite even if the file changed since the last read
projectYesProject id (24-char hex) or exact name
replace_allNoReplace every occurrence if old appears more than once

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive and non-idempotent behavior, so the bar is lower. The description adds useful behavioral detail by stating exact-match failure modes and the 'upload the result' side effect, though it does not elaborate on the force-overwrite implications beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences cover the core operation, edge-case failures, and sibling-tool guidance with no filler. Information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich schema, an output schema, and annotations, the description covers the remaining decision-relevant context: when to use this tool and how it behaves when matches are missing or ambiguous. Nothing critical is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all six parameters. The description reinforces the meaning of old/new and replace_all but adds little beyond the schema, which is acceptable given the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Describes a specific operation: replacing an exact substring in a project file and uploading the result. The wording is concrete and the explicit comparison with write_file distinguishes it from its closest sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs agents to prefer edit_file over write_file for paragraph or sentence changes, giving a clear decision rule. It also spells out failure conditions and when replace_all is necessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesA
Read-only

List file and folder paths in an Overleaf project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, so the description does not need to restate that. The description adds that the tool returns paths and includes both files and folders, but it does not disclose behavioral details such as open-world completeness limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the core action and object, making it immediately scannable while earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one required parameter, full schema coverage, and an output schema, the description is sufficient for correct invocation. It does not explicitly address the openWorldHint caveat, but the annotation already signals that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the single 'project' parameter fully documented as a project id or exact name. The description merely restates the project context and does not add parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 ('file and folder paths in an Overleaf project'), making its function immediately clear. It also distinguishes itself from siblings like list_projects (lists projects) and read_file (reads file content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for use—listing paths within an Overleaf project—but provides no explicit guidance about when to use this tool versus alternatives or when not to use it. Sibling routing is left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsA
Read-only

List Overleaf projects (id, name, owner email, last updated).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_trashedNoInclude trashed projects
include_archivedNoInclude archived projects

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already establish that this is a read-only, open-world operation. The description adds the specific return fields, which is useful, but it does not disclose behavior such as default filtering, pagination, or ordering. With annotations present, this is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, front-loads the core verb and resource, and provides just enough detail about the returned fields in a compact parenthetical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with an output schema, two optional parameters with defaults and full schema descriptions, and annotations covering safety, the description is largely complete. It could add explicit default-filter behavior, but the schema and annotations already cover most operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the include_trashed and include_archived parameters are fully documented in the input schema. The description adds no parameter-specific meaning, which is acceptable given the high schema coverage baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with a clear resource, 'Overleaf projects,' and enumerates the returned fields (id, name, owner email, last updated). This cleanly distinguishes it from sibling file-focused tools like list_files and from mutating project tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: call this when you need a list of Overleaf projects. However, there is no explicit guidance about when not to use it or which alternative to choose, though the resource name and read-only verb make the intended context reasonably obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fileA
Read-only

Read a text file from an Overleaf project.

Files over 100000 characters are truncated unless full=True, and the response sets truncated=true. write_file refuses to replace a file that was only read in part, because the unseen tail would be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoReturn the whole file instead of the first 100000 characters. Needed before write_file can replace a large file; prefer edit_file for a targeted change.
pathYesPath inside the project, e.g. main.tex
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation is complemented by concrete behavioral detail: the 100000-character truncation threshold, the truncated flag in the response, and the interaction with write_file when a file was only partially read. This goes well beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with only three purposeful sentences. Every sentence adds useful information: what the tool does, its truncation behavior, and a critical safety interaction with write_file.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition is complete for a read operation: it identifies the resource, covers truncation and full-file reading, explains consequences of partial reads, and an output schema exists so return values need not be described in prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The main description repeats the full parameter's truncation behavior rather than adding substantial new param semantics beyond the schema, though it does usefully tie full=True to the write_file safeguard.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read a text file from an Overleaf project.' It clearly distinguishes this tool from siblings like list_files and write_file, and the truncation/write_file behavior reinforces its role as a read operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when full=True is necessary and warns that write_file will refuse to replace a partially-read file. The schema adds 'prefer edit_file for a targeted change,' giving clear guidance on choosing between read_file and edit_file.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA
Read-only

Check whether OVERLEAF_SESSION is set and still a valid Overleaf login.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, which cover the safety profile. The description adds meaningful context by specifying that the tool verifies both the presence of OVERLEAF_SESSION and its validity as an Overleaf login, going beyond what the annotations alone communicate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence that immediately states the tool's purpose. No filler or redundant content, and the core check is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter status tool with readOnlyHint=true, openWorldHint=true, and an output schema available, the description fully covers what the tool does. There are no missing preconditions or parameters to explain, so the agent has what it needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema requires no parameter documentation. The description correctly focuses on the operation itself; with no parameters, the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check whether') and a clear resource ('OVERLEAF_SESSION' and 'valid Overleaf login'). It clearly differentiates this tool from the project/file/compile siblings since it is the only auth/status check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied as a preflight authentication check before interacting with Overleaf, but the description does not explicitly say when to use it versus alternatives or when it should be run. There is no exclusion or mention of prerequisites, leaving the agent to infer the usage context from the sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trash_projectA
Destructive

Move an Overleaf project to trash. Recoverable from the Overleaf dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive and non-read-only, so the description does not need to repeat that signal. It adds valuable context beyond annotations by disclosing that the action is recoverable from the Overleaf dashboard, which softens the destructive implication. It does not detail collaborator impact, but that is not essential given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the core action is front-loaded. The recoverability clause earns its place by adding decision-relevant behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive action with a full input schema and annotations, this captures the essential behavior and the recovery path. The main omission is explicit guidance on prerequisites or when not to use this tool relative to siblings, but the output schema and annotations cover most remaining context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter description already defines the accepted identifier format: 24-char hex or exact name. The tool description adds no parameter-specific meaning, so the baseline score of 3 is appropriate because the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('move to trash') and a specific resource ('Overleaf project'), so an agent immediately knows the action and target. The recoverability note adds useful semantic distinction from a permanent delete. It is clearly differentiated from sibling tools like list_projects, create_project, or duplicate_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool for removing/unwanted projects, but it does not explicitly say when to use it versus alternatives or mention prerequisites such as ownership or edit rights. No exclusions are given, so the agent must infer the intended usage context from the tool name and action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_fileA
Destructive

Create or replace a text file. Missing folders are created.

Refuses to overwrite a file that changed since the last read_file, or that was only read in part, unless force=True.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath inside the project, e.g. sections/intro.tex
forceNoOverwrite even if the file changed since the last read
contentYesFull new file contents (whole-file replace)
projectYesProject id (24-char hex) or exact name

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

This is a destructive tool (destructiveHint=true), and the description goes beyond annotations by explaining exactly when it refuses to overwrite and how force bypasses that protection. It also discloses folder auto-creation, which is meaningful behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and every sentence adds useful information. There is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, fully documented parameters, and annotations describing the destructive nature, the description supplies the remaining critical context: overwrite safety, the force escape hatch, and folder creation. Nothing essential for calling the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters clearly. The tool description adds no parameter-level detail beyond the schema, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Create or replace a text file') with a clear resource, and the 'whole-file replace' semantics in the schema distinguish it from the sibling edit_file. Missing-folder creation is also noted, making the tool's scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear this is the tool for creating or fully replacing a file, and the safety rule implies when force is needed. However, it does not explicitly tell the agent when to prefer edit_file for partial modifications, so usage guidance is implied rather than stated.

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.

  1. 11 tool updatesv0.1.0
    • First observedcompile_project
    • First observedcreate_project
    • First observeddownload_pdf
    • First observedduplicate_project
    • First observededit_file
    • First observedlist_files
    • First observedlist_projects
    • First observedread_file
    • First observedstatus
    • First observedtrash_project
    • First observedwrite_file

TDQS

A4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly distinct, but compile_project and download_pdf both trigger a compile and produce a PDF, differing mainly in the output destination. This overlap could cause occasional confusion.

Naming Consistency4/5

The naming pattern is largely consistent with snake_case verb_noun (list_projects, create_project, read_file, download_pdf), except 'status' stands out as a noun-only command. Overall the convention is clear and predictable.

Tool Count5/5

With 11 tools, the surface is well-scoped for an Overleaf integration covering projects, files, compilation, and PDF download. It is neither too sparse nor overloaded.

Completeness4/5

Core workflows are covered: project listing/creation/duplication/trash, file read/write/edit, and compile/download. Minor gaps exist such as project renaming, file deletion, or folder management, but these are not essential for typical use.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers