Overleaf MCP server Let your AI agent fix your LaTeX and answer comments.

Connect your Overleaf projects to your AI agent. It compiles, fixes errors, replies to co-author comments and reviews tracked changes while you write. Nothing to install and no API key from Overleaf.

  • Free 7-day trial, no card
  • Not affiliated with Overleaf
Overleaf logo Overleaf Cloud Browser

15 tools Read and write

Six jobs to hand off

What can your AI agent do in Overleaf? From the first compile to the camera-ready copy.

  • Fix LaTeX compile errors

  • Answer co-author comments

  • Accept typo fixes from tracked changes

  • See edits since the last labeled version

  • Tag old projects

  • Invite reviewers and co-authors

Import API, no MCP

Does Overleaf have an MCP server or an API? An import API and Git, no MCP.

Overleaf's only public API, Open in Overleaf, sends LaTeX in to create a new project. Existing projects are reached through Git on paid plans. There is no official MCP server (checked 6 Nov 2026). Cotlet runs 15 Overleaf tools hosted, over MCP for agents and REST for scripts.

  • Open in Overleaf takes a link or a form and opens a new project. It reads nothing back and changes no existing project.
  • Git integration is a premium feature on Overleaf Cloud and follows the project owner's subscription. Overleaf's docs say pushes can lose or displace comments and tracked changes.
  • Zapier has no Overleaf app and n8n has no Overleaf integration page (both checked 6 Nov 2026).
Open in Overleaf, Git integration and Cotlet compared
What you need Open in OverleafGit integrationCotlet
List your projects and tags No No Yes
Read and edit project files No Paid plans, by push Yes, in the editor
Compile and read the errors No No Yes
Comments and tracked changes No Pushes can drop them Yes, they stay in place
Invite collaborators No No Yes, after your OK
Works on the free Overleaf plan Yes Paid plans only Yes

Checked 6 Nov 2026. Sources: Overleaf: Open in Overleaf API · Overleaf Docs: Git integration · Overleaf: plans and pricing · Zapier: Overleaf page (404)

Set up once

How does Cotlet connect to Overleaf? Sign in once, then ask in plain words.

  1. 1Sign in to Overleaf

    Use your own account in its Cloud Browser.

  2. 2Connect your AI agent

    Paste one address into your agent.

  3. 3Ask in plain words

    Fix my errors, answer my comments.

We never keep your Overleaf password, and edits, replies and invites wait for your OK before anyone sees them. Who can see your session

Any MCP client

How to connect Overleaf to your AI agent

  1. 1

    Enable Overleaf for agents. Sign up, log in to Overleaf in its Cloud Browser, then press Enable for agents.

  2. 2

    Add the Cotlet address. Add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.

  3. 3

    Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.

One shared address, https://cotlet.dev/mcp/v1, also carries Overleaf next to your other apps. If you enable Overleaf after connecting, refresh the connector so the new tools show up.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-overleaf \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-overleaf": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-overleaf]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: overleaf_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: overleaf_write
7 read, 8 write

All 15 Overleaf MCP tools

Projects and files6

Owned and shared projects both appear, with your role. Only text files can be read; images are listed with their size.

  • list_projects List the projects in the account's Overleaf dashboard. read

    Returns each project with its ID, name, owner, tags and last modified time, newest first. Both projects you own and projects shared with you are listed, with your role in each. Results come in pages; pass next_cursor back until it is empty.

    MCP calloverleaf_read → list_projects

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects

    Parameters

    Parameters: list_projects
    NameTypeDescription
    tag string string Only projects with this tag name.
    query string string Only projects whose name contains this text.
    cursor string string Next page cursor from the previous call.

    Example response

    {
      "projects": [
        {
          "project_id": "66f1a2b3c4d5e6f708192a3b",
          "name": "Thesis draft",
          "owner": "You",
          "role": "owner",
          "tags": [
            "Thesis"
          ],
          "last_modified": "2026-11-03T16:20:00Z"
        },
        {
          "project_id": "66e8d7c6b5a4938271605f4e",
          "name": "Conference paper",
          "owner": "Anna Keller",
          "role": "editor",
          "tags": [],
          "last_modified": "2026-11-01T09:05:00Z"
        }
      ],
      "next_cursor": null
    }
  • get_project Get the settings and sharing of one project. read

    Returns the project name, main document, LaTeX compiler, TeX Live version, your role, the people with access and their permission (Viewer, Reviewer or Editor) and pending invites. Use it before a compile or an invite to see how the project is set up.

    MCP calloverleaf_read → get_project

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}

    Parameters

    Parameters: get_project
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "project_id": "66f1a2b3c4d5e6f708192a3b",
      "name": "Thesis draft",
      "main_document": "main.tex",
      "compiler": "pdfLaTeX",
      "tex_live_version": "2025",
      "your_role": "owner",
      "collaborators": [
        {
          "name": "Anna Keller",
          "email": "anna@example.com",
          "permission": "reviewer",
          "status": "active"
        }
      ]
    }
  • list_files List the files and folders of a project. read

    Returns every file and folder with its path and type (text or binary), folders first, then files in alphabetical order. Text files such as .tex and .bib can be read with read_file; images and other binary files are listed only.

    MCP calloverleaf_read → list_files

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}/files

    Parameters

    Parameters: list_files
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "files": [
        {
          "path": "sections",
          "type": "folder"
        },
        {
          "path": "sections/intro.tex",
          "type": "text"
        },
        {
          "path": "figures/overview.png",
          "type": "binary"
        },
        {
          "path": "main.tex",
          "type": "text"
        },
        {
          "path": "refs.bib",
          "type": "text"
        }
      ]
    }
  • read_file Read the text of one file in a project. read

    Returns the file's text with line numbers, so a comment or compile error can be matched to its line. Binary files such as images return their type and size, not content. Reading does not change the project.

    MCP calloverleaf_read → read_file

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}/files/read

    Parameters

    Parameters: read_file
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    file_path string required string Path of the file in the project, as list_files shows it, for example sections/intro.tex.

    Example input

    {
      "project_id": "project_8c41d2",
      "file_path": "file path"
    }

    Example response

    {
      "file_path": "sections/intro.tex",
      "lines": [
        {
          "line": 1,
          "text": "\\section{Introduction}"
        },
        {
          "line": 2,
          "text": "Recent work on sparse attention show large gains on long inputs."
        }
      ]
    }
  • edit_file Replace a piece of text in one project file. writeasks first

    Returns the line range that changed. If old_text is missing or appears more than once, nothing changes and the call returns an error. Collaborators with the project open see the edit appear. If the signed-in account is a Reviewer, Overleaf tracks the change, as it does for any reviewer. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → edit_file

    REST endpointPATCH https://cotlet.dev/api/v1/overleaf/projects/{project_id}/file

    Parameters

    Parameters: edit_file
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    file_path string required string Path of the file in the project, as list_files shows it, for example sections/intro.tex.
    old_text string required string Exact text to replace. It must appear once in the file.
    new_text string required string Text to put in its place.

    Example input

    {
      "project_id": "project_8c41d2",
      "file_path": "file path",
      "old_text": "old text",
      "new_text": "new text"
    }

    Example response

    {
      "file_path": "sections/intro.tex",
      "changed_lines": [
        2,
        2
      ],
      "tracked": false
    }
  • tag_project Add a tag to a project, or remove it. write

    Returns the project's tags after the change. Tags are private to your account and no one else sees them, and remove: true undoes the call, so it needs no confirmation.

    MCP calloverleaf_write → tag_project

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/tag

    Parameters

    Parameters: tag_project
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    tag string required string Tag name. A tag that does not exist yet is created first.
    remove boolean boolean Remove the tag from the project instead. Default false.

    Example input

    {
      "project_id": "project_8c41d2",
      "tag": "tag"
    }

    Example response

    {
      "project_id": "66f1a2b3c4d5e6f708192a3b",
      "tags": [
        "Thesis",
        "Old"
      ]
    }

Compile1

Uses the main document and compiler set in the project. A free account has a 10 second compile limit, paid plans 240 seconds.

  • compile_project Recompile a project and return the result. write

    Returns the status (success or failed), whether a PDF was produced, and the errors and warnings with file and line. The compile uses the main document and compiler set in the project, and a free account has a shorter compile timeout than a paid one. It only creates generated files in the project, reaches no one, and needs no confirmation.

    MCP calloverleaf_write → compile_project

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/compile

    Parameters

    Parameters: compile_project
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    mode string string normal or draft. Draft is Overleaf's Fast [draft] mode and skips image processing. Default normal.
    stop_on_first_error boolean boolean Stop the compile at the first error. Default false.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "status": "failed",
      "pdf_produced": false,
      "errors": [
        {
          "file_path": "sections/intro.tex",
          "line": 14,
          "message": "Undefined control sequence."
        }
      ],
      "warnings": [
        {
          "file_path": "main.tex",
          "line": 21,
          "message": "Citation 'lee2024' on page 3 undefined."
        }
      ]
    }

Comments, tracked changes and history7

Track changes and full history need a premium plan on the project owner's account. On a free project, history shows the last 24 hours and labeled versions.

  • list_comments List the comment threads of a project. read

    Returns each thread with its ID, file, line, the text it is attached to, every message with author and time, and whether it is resolved. Threads come file by file, in document order. Anyone with access to the project can see these comments, as in the editor's review panel.

    MCP calloverleaf_read → list_comments

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}/comments

    Parameters

    Parameters: list_comments
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    include_resolved boolean boolean Also return resolved threads. Default false.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "threads": [
        {
          "thread_id": "66fa01b2c3d4e5f607182930",
          "file_path": "sections/intro.tex",
          "line": 2,
          "selected_text": "sparse attention show large gains",
          "resolved": false,
          "messages": [
            {
              "author": "Anna Keller",
              "text": "Subject and verb do not agree. Also, which gains?",
              "at": "2026-11-02T10:12:00Z"
            }
          ]
        }
      ]
    }
  • add_comment Add a comment on a piece of text in a project file. writeasks first

    Returns the new thread ID and the line it is attached to. The comment is visible to everyone with access to the project. The tool does not edit the file. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → add_comment

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/comments

    Parameters

    Parameters: add_comment
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    file_path string required string Path of the file in the project, as list_files shows it, for example sections/intro.tex.
    selected_text string required string Exact text the comment attaches to. It must appear once in the file.
    body string required string The comment text.

    Example input

    {
      "project_id": "66f1a2b3c4d5e6f708192a3b",
      "file_path": "sections/intro.tex",
      "selected_text": "sparse attention show large gains",
      "body": "Subject and verb do not agree. Also, name the datasets where the gains were measured."
    }

    Example response

    {
      "thread_id": "66fa01b2c3d4e5f607182931",
      "file_path": "sections/intro.tex",
      "line": 2,
      "resolved": false
    }
  • reply_to_comment Reply in an existing comment thread. writeasks first

    Returns the thread with your reply added at the end. Everyone with access to the project sees it. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → reply_to_comment

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/comment/replies

    Parameters

    Parameters: reply_to_comment
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    thread_id string required string Thread ID from list_comments.
    body string required string The reply text.

    Example input

    {
      "project_id": "project_8c41d2",
      "thread_id": "thread_8c41d2",
      "body": "body"
    }

    Example response

    {
      "thread_id": "66fa01b2c3d4e5f607182930",
      "message_count": 2,
      "resolved": false
    }
  • resolve_comment Mark a comment thread as resolved. writeasks first

    Returns the thread with resolved set to true. A resolved thread leaves the open list for everyone with access to the project. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → resolve_comment

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/comment/resolve

    Parameters

    Parameters: resolve_comment
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    thread_id string required string Thread ID from list_comments.

    Example input

    {
      "project_id": "project_8c41d2",
      "thread_id": "thread_8c41d2"
    }

    Example response

    {
      "thread_id": "66fa01b2c3d4e5f607182930",
      "resolved": true
    }
  • list_tracked_changes List the tracked changes waiting for review in a project. read

    Returns each pending change with its ID, file, line, type (insertion or deletion), the text and the author. Changes come in document order. Track changes is a premium feature: on a project whose owner has no premium plan, the list is empty.

    MCP calloverleaf_read → list_tracked_changes

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}/tracked-changes

    Parameters

    Parameters: list_tracked_changes
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    file_path string string Only changes in this file.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "changes": [
        {
          "change_id": "66fb11c2d3e4f5a607182941",
          "file_path": "sections/intro.tex",
          "line": 2,
          "type": "insertion",
          "text": "shows",
          "author": "Anna Keller",
          "at": "2026-11-02T10:20:00Z"
        },
        {
          "change_id": "66fb11c2d3e4f5a607182942",
          "file_path": "sections/intro.tex",
          "line": 2,
          "type": "deletion",
          "text": "show",
          "author": "Anna Keller",
          "at": "2026-11-02T10:20:00Z"
        }
      ]
    }
  • review_tracked_change Accept or reject one tracked change. writeasks first

    Returns the change with its new state. Accepting makes the text part of the file; rejecting restores the text before the change. The edit is visible to everyone with the project open. Your role in the project decides whether Overleaf allows it. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → review_tracked_change

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/tracked-change/review

    Parameters

    Parameters: review_tracked_change
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    change_id string required string Change ID from list_tracked_changes.
    action string required string accept or reject.

    Example input

    {
      "project_id": "project_8c41d2",
      "change_id": "change_8c41d2",
      "action": "action"
    }

    Example response

    {
      "change_id": "66fb11c2d3e4f5a607182941",
      "action": "accept",
      "file_path": "sections/intro.tex",
      "line": 2
    }
  • list_history_versions List the saved versions and recent edits of a project from its History. read

    Returns versions newest first, each with its time, the people who edited and its label if it has one. Full project history is a premium feature: on a free project the list shows edits from the last 24 hours and labeled versions only.

    MCP calloverleaf_read → list_history_versions

    REST endpointGET https://cotlet.dev/api/v1/overleaf/projects/{project_id}/history-versions

    Parameters

    Parameters: list_history_versions
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    labels_only boolean boolean Only versions with a label you created. Default false.

    Example input

    {
      "project_id": "project_8c41d2"
    }

    Example response

    {
      "versions": [
        {
          "version": 214,
          "at": "2026-11-03T16:20:00Z",
          "editors": [
            "You"
          ],
          "label": null
        },
        {
          "version": 198,
          "at": "2026-10-28T08:00:00Z",
          "editors": [
            "You",
            "Anna Keller"
          ],
          "label": "Submitted to supervisor"
        }
      ]
    }

Sharing1

The number of Editors and Reviewers you can invite follows the project owner's plan. A free plan allows 1; Viewers are unlimited.

  • invite_collaborator Invite a person to a project by email. writeasks first

    Returns the invite with its status pending. Overleaf emails the person, and the invite shows as a pending invite in the project's Share menu until they accept. The number of Editors and Reviewers you can invite depends on the project owner's plan; a free plan allows 1, and Viewers are unlimited. By default you confirm each call; you can switch that off for this tool.

    MCP calloverleaf_write → invite_collaborator

    REST endpointPOST https://cotlet.dev/api/v1/overleaf/projects/{project_id}/collaborator/invite

    Parameters

    Parameters: invite_collaborator
    NameTypeDescription
    project_id string required string Project ID from list_projects. It is the part after /project/ in the editor URL.
    email string required string Email address of the person to invite.
    permission string required string viewer, reviewer or editor.

    Example input

    {
      "project_id": "project_8c41d2",
      "email": "jane@example.com",
      "permission": "permission"
    }

    Example response

    {
      "email": "anna@example.com",
      "permission": "reviewer",
      "status": "pending"
    }
Encrypted, revocable

Who can see my Overleaf session, and how do I revoke it?

  • What we store

    Your logged-in Overleaf profile, encrypted with AES-256-GCM, in Finland. Not the password.

  • What your agent gets

    The 15 Overleaf tools. Never the cookie.

  • What the session sees

    Your projects, files, comments and the people you share with.

  • What no tool touches

    Billing, plan, password and deleting a project.

  • How you sign in

    Email, Google, ORCID, IEEE or SSO. You do it, we never type a password.

  • How to cut access

    Disable for agents or reset the browser in the console. Your Overleaf account is untouched.

Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.

Tested every 12 h

What happens when Overleaf changes? We repair the tool; your prompts stay the same.

between tests of the Overleaf tools
12 h
for a call to an Overleaf tool paused for repair
$0

When Overleaf moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.

6 tools ask first

Approvals, undo and mistakes Your co-authors see nothing until you say so.

  1. 01 Reads the context Lists the open comments and the lines they point to.
  2. 02 Changes the text Replaces one exact piece of text. It stops if the text appears twice.
  3. 03 Waits for your OK The edit or reply shows in your Cotlet console first.
  4. 04 Compiles and reports Status, and every error with its file and line.
Which Overleaf actions can be undone
ActionUndo
Edit a fileRestore the earlier version in Overleaf History (full history on paid plans, the last 24 hours on Free)
Add or reply to a commentEdit or delete it in the review panel
Resolve a commentThe thread moves to the resolved list in the review panel
Accept or reject a tracked changeRestore the earlier version in History
Invite a collaboratorRevoke the pending invite under Manage access; the email is already out
Tag a projectCall the tool again with remove set

6 of 15 tools ask first: every edit, comment, reply, resolve, tracked change decision and invite, because co-authors see them. Reads, compiles and private tags reach nobody, so they run at once. Switch the wait off per tool for a scheduled run.

Your role in the project decides what Overleaf allows. A Reviewer's edits are tracked, as in the editor.

MCP call
{
  "name": "add_comment",
  "arguments": {
    "project_id": "66f1a2b3c4d5e6f708192a3b",
    "file_path": "sections/intro.tex",
    "selected_text": "sparse attention show large gains",
    "body": "Subject and verb do not agree. Also, name the datasets where the gains were measured."
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/overleaf/projects/66f1a2b3c4d5e6f708192a3b/comments \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_path":"sections/intro.tex","selected_text":"sparse attention show large gains","body":"Subject and verb do not agree. Also, name the datasets where the gains were measured."}'
Tool output
{
  "thread_id": "66fa01b2c3d4e5f607182931",
  "file_path": "sections/intro.tex",
  "line": 2,
  "resolved": false
}

Scripts and cron jobs reach the same tools over REST, with the same key and price. A call that fails costs nothing. The tools table lists the REST path of each tool.

Pay per call

How much does the Overleaf MCP server cost?

About $18 a monthfor a researcher with a thesis and a paper under review, 3,020 credits. Your Overleaf plan is billed by Overleaf as before.

A month of Overleaf jobs for one researcher, in credits
JobCallsCredits
Fix compile errors, 3 per draft8 × 6480
Work through a round of 8 comments21 × 3630
Review a supervisor's tracked changes7 × 3210
Check what changed since the last labeled version1 × 440
Tag finished projects10 × 1100
Invite co-authors to a new project3 × 260
Cloud Browser, 30 days1,500
Total3,020
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on Overleaf's free plan too

The month is our example, not an Overleaf figure: Overleaf publishes no usage numbers for a typical account. Each fix, reply or tracked change is a read and a write, so a round of 8 comments takes about 21 calls. Overleaf plans, checked 6 Nov 2026: Free $0, Standard $25 a month or $199 a year, Pro $45 a month or $399 a year. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Overleaf MCP server on GitHub or hosted: which to use Community servers run on your own computer.

Other ways to reach Overleaf from an AI agent, checked 6 Nov 2026
OptionWhat it doesWhere it stops
mjyoo2/OverleafMCPMCP server that reads projects, parses LaTeX structure and pushes section edits through Git. 342 stars, MIT, last commit 3 May 2026.Runs on your computer and needs Git integration, a paid Overleaf feature.
aloth/olcliCommand line tool to pull, push, sync and compile, with an MCP server. 243 stars, MIT, last commit 2 Nov 2026.You install and run it yourself.
lonetis/claudeleafSDK, CLI and MCP server that edits in the Overleaf web editor in real time. 40 stars, MIT, last commit 20 Oct 2026.Runs on your computer.
DanielHou315/overleaf-mcp-rtReal-time MCP server for overleaf.com and self-hosted Overleaf. 13 stars, AGPL-3.0, last commit 20 Sep 2026.Runs on your computer.
Overleaf AI AssistantBuilt into the editor: chat with your document and LaTeX help. 5 AI uses a day on Free and Student, 10 on Standard, Max on Pro.Works inside the Overleaf editor only, not from your own agent.
Open in Overleaf and Git integrationOverleaf's own routes: one creates a new project, the other syncs files on paid plans.No compile, comments, tracked changes or invites.

We found no hosted Overleaf MCP server besides ours. A community server is free and fine on your own laptop. Cotlet adds hosting around the clock, use from ChatGPT and your phone, and one account for your other apps.

EU company, since 2019

Who runs Cotlet A company you can look up.

Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Overleaf tools.

Overleaf MCP server: questions

How do I connect Overleaf to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Overleaf once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Overleaf account through Cotlet, in their phone apps too.

What can ChatGPT do in Overleaf?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Overleaf: fix LaTeX compile errors; work through co-author comments; review tracked changes before submission. You ask in plain words, and anything that reaches other people waits for your OK first.

How do I get access?

Create a free account at https://cotlet.dev, open Overleaf under Integrations in the console and log in to Overleaf in its Cloud Browser. The trial starts with your first app, no card asked.

Do I need a paid Overleaf plan?

No for projects, files, comments, compiles, tags and invites. Track changes needs a premium plan on the project owner's account, and full project history does too: a free project shows the last 24 hours and labeled versions (Overleaf Docs: Premium features, History and versioning). A free plan also allows 1 Editor or Reviewer collaborator per project.

Is this the same as Overleaf's Git integration?

No. Git integration is a premium Cloud feature that clones and pushes files with no branches or tags. It cannot compile, comment or invite. Overleaf also warns that pushes can drop or displace tracked changes and comments (Overleaf Docs: Git integration). Cotlet works in the editor, so comments and tracked changes stay in place.

Does Overleaf have webhooks?

Overleaf documents none (checked 6 Nov 2026), so nothing tells an agent that a co-author commented. Run your agent on a schedule instead, for example a weekly list_comments pass.

Can the agent edit a project that was shared with me?

It can do what your role allows. As a Viewer it can read and compile only. As a Reviewer its edits are tracked, as they would be in the editor. As an Editor it can change files.

Does it work on the free Overleaf plan?

Yes. Cotlet works in your own account on any plan. Overleaf's limits stay: a 10 second compile limit, 1 collaborator per project, no track changes and 24 hours of history on a free project.

Is the MCP server different from the REST API?

Only the door is different. Both expose the same 15 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Overleaf?

No. Cotlet is independent and not affiliated with Overleaf.

Give your agent access to Overleaf.

Free 7-day trial with 2,000 credits, no card needed.