Grammarly MCP server Let your AI agent check and tidy your Grammarly drafts.

Your agent opens your Grammarly documents, reads the suggestions and accepts the fixes you want. It also runs the AI text and plagiarism check, cleans out Trash and keeps your dictionary in order.

  • Free 7-day trial, no card
  • Independent, not affiliated with Grammarly
Grammarly logo Grammarly Cloud Browser

15 tools Read and write

Draft to report

What can your AI agent do in Grammarly? From the first draft to the shared report.

  • Score a draft and list its suggestions

  • Accept or dismiss suggestion cards

  • Run the AI text and plagiarism check

  • Move old documents to Trash, restore them

  • Keep brand terms in your dictionary

  • Share an Authorship report link

API for organizations

Does Grammarly have an MCP server or an API? An API for organizations, no MCP server for your documents.

Grammarly has an official API for organizations: Writing Score, AI Detector, Plagiarism, Analytics and License Management, most of them in Beta and reached through Contact Sales (checked 6 Nov 2026). None of them reads your saved documents, suggestions or dictionary, and we found no official Grammarly MCP server. Cotlet runs 15 Grammarly tools in your signed-in account. There is no API key to request and nothing to develop. It works inside the ChatGPT and Claude apps, runs around the clock in our hosting, and one Cotlet account covers many apps.

  • Grammarly API access is arranged with Grammarly sales and uses OAuth 2.0 credentials. It scores or checks a text you send it.
  • Zapier and n8n list no Grammarly app (checked 6 Nov 2026). Grammarly's company name is now Superhuman; its Go page links a Mail MCP and a Docs MCP without describing them.
  • Grammarly Pro includes the AI detector and plagiarism checker. The Free plan does not (plans page, 6 Nov 2026).
Grammarly's API and Cotlet compared
What you need Grammarly APICotlet
Score a text for clarity and tone Writing Score API, organizations (Beta) Yes, any saved document
Check for AI text and plagiarism Detector APIs, organizations (Beta) Yes, on a paid plan
List and read your documents No Yes
Accept or dismiss suggestions No Yes
Dictionary, Trash and goals No Yes
Share an Authorship report No Yes, after your OK
Getting started Contact Sales, OAuth 2.0, code Sign up, sign in once

Checked 6 Nov 2026. Sources: Grammarly APIs · Grammarly for Developers · Grammarly plans · Superhuman Go · Grammarly Help: Grammarly Editor user guide

Set up once

How does Cotlet connect to Grammarly? Your account, one sign-in.

  1. 1Sign in to Grammarly

    Use your own account in its Cotlet Cloud Browser.

  2. 2Connect your AI agent

    Paste one address into Claude or ChatGPT.

  3. 3Ask in plain words

    Your agent checks, fixes and tidies for you.

We never keep your Grammarly password, and sharing a report or emptying Trash waits for your OK. Who can see your session

Any MCP client

How to connect Grammarly to your AI agent

Three steps. Chat apps sign in with OAuth. Editors, n8n and scripts use an API key.

  1. 1

    Enable Grammarly for agents. Sign up, log in to Grammarly 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 Grammarly next to your other apps. If you enable Grammarly 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-grammarly \
  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-grammarly": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet-grammarly]
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>
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>
6 read, 9 write

All 15 Grammarly MCP tools

Documents and Trash6

Documents come from the Grammarly Editor at app.grammarly.com. Text comes back plain, without formatting, and Trash keeps a deleted document for 30 days.

  • list_documents Documents on your Grammarly dashboard, or in Trash. read

    Lists the documents saved in your Grammarly Editor at app.grammarly.com, in the order the dashboard shows them. Each item has an id, a title and the time of the last edit. With status trash it lists Trash instead, where Grammarly keeps deleted documents for 30 days. Use document_id in the other tools.

    MCP callgrammarly_read → list_documents

    REST endpointGET https://cotlet.dev/api/v1/grammarly/documents

    Parameters

    Parameters: list_documents
    NameTypeDescription
    status string string active for the dashboard or trash for Trash. Default: active.
    cursor string string next_cursor from the previous page.

    Example response

    {
      "documents": [
        {
          "document_id": "doc_7c21a9",
          "title": "Launch announcement",
          "updated_at": "2026-11-04T15:12:00Z"
        },
        {
          "document_id": "doc_52fe08",
          "title": "Customer case study",
          "updated_at": "2026-10-29T09:40:00Z"
        }
      ],
      "next_cursor": null
    }
  • get_document Title and text of one document. read

    Returns the title and the text of one saved document. The text comes back as plain text: Grammarly shows uploaded files as plain text, and formatting such as bold, lists and headers is not returned. The document must be on your dashboard, not in Trash.

    MCP callgrammarly_read → get_document

    REST endpointGET https://cotlet.dev/api/v1/grammarly/documents/{document_id}

    Parameters

    Parameters: get_document
    NameTypeDescription
    document_id string required string A document_id from list_documents.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "title": "Launch announcement",
      "text": "We are happy to announce that our new reporting tool is live today.",
      "updated_at": "2026-11-04T15:12:00Z"
    }
  • create_document Create a document from pasted text. write

    Opens a new document with New document and pastes your text into it, as the Editor lets you do. The text is plain; formatting is not applied. The document is private to your account and nobody is notified, so the call does not wait for your OK. Undo it with delete_document.

    MCP callgrammarly_write → create_document

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/documents

    Parameters

    Parameters: create_document
    NameTypeDescription
    text string required string The text to put in the new document.

    Example input

    {
      "text": "Hi team, the quarterly report is attached. Please send feedback by Friday."
    }

    Example response

    {
      "document_id": "doc_9b40d2",
      "title": "Untitled",
      "created_at": "2026-11-05T08:00:00Z"
    }
  • delete_document Move one document to Trash. write

    Clicks the trash bin icon on the document in your list. Grammarly keeps it in Trash for 30 days and then deletes it for good. Until then restore_document brings it back, so the call does not wait for your OK.

    MCP callgrammarly_write → delete_document

    REST endpointDELETE https://cotlet.dev/api/v1/grammarly/documents/{document_id}

    Parameters

    Parameters: delete_document
    NameTypeDescription
    document_id string required string A document_id from list_documents.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_52fe08",
      "status": "trash",
      "delete_after": "2026-12-05"
    }
  • restore_document Restore one document from Trash. write

    Opens Trash and clicks Restore on the document. It works within 30 days of deleting; after that Grammarly cannot recover the document. The document returns to your dashboard. It reaches nobody, so it does not wait for your OK.

    MCP callgrammarly_write → restore_document

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/documents/{document_id}/restore

    Parameters

    Parameters: restore_document
    NameTypeDescription
    document_id string required string A document_id from list_documents with status trash.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_52fe08",
      "status": "active"
    }
  • empty_trash Delete everything in Trash for good. writeasks first

    Clicks Empty Trash, which deletes every document in Trash permanently. Grammarly warns that the documents cannot be restored afterwards, so read Trash with list_documents first. By default you confirm each call; you can switch that off for this tool.

    MCP callgrammarly_write → empty_trash

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/trash/empty

    Parameters

    No parameters.

    Example response

    {
      "deleted": 3
    }

Score, suggestions and goals4

Suggestion ids change when the text changes, so list them again before you accept one. Goals are set per document.

  • get_writing_stats Overall score and statistics of one document. read

    Reads what the Overall score panel of the Editor shows for the document: the overall score and the statistics listed with it. The score reflects the document as it stands, with the goals set on it. Grammarly offers the same data as a PDF report in the Editor.

    MCP callgrammarly_read → get_writing_stats

    REST endpointGET https://cotlet.dev/api/v1/grammarly/documents/{document_id}/writing-stats

    Parameters

    Parameters: get_writing_stats
    NameTypeDescription
    document_id string required string A document_id from list_documents.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "overall_score": 84,
      "word_count": 412,
      "goals": {
        "domain": "Business",
        "formality": "Formal"
      }
    }
  • list_suggestions Open suggestion cards of one document. read

    Lists the suggestion cards Grammarly shows beside the document. Each has an id, the underline color (red, blue, green or purple), the text it applies to, the suggested change and the explanation from its Learn more link. Gray underlines appear when a team style guide is in use. Suggestions you dismissed are not listed.

    MCP callgrammarly_read → list_suggestions

    REST endpointGET https://cotlet.dev/api/v1/grammarly/documents/{document_id}/suggestions

    Parameters

    Parameters: list_suggestions
    NameTypeDescription
    document_id string required string A document_id from list_documents.
    color string string Only suggestions with this underline color: red, blue, green or purple.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "suggestions": [
        {
          "suggestion_id": "sg_103",
          "color": "red",
          "original": "recieve",
          "replacement": "receive",
          "explanation": "Misspelled word"
        },
        {
          "suggestion_id": "sg_104",
          "color": "blue",
          "original": "in order to",
          "replacement": "to",
          "explanation": "Shorter wording"
        }
      ]
    }
  • resolve_suggestion Accept or dismiss one suggestion card. write

    Presses Accept on a suggestion card, which applies the change to the text, or Dismiss, which ignores it. It edits your own document only and the Editor can undo it, so it does not wait for your OK. Read the suggestion with list_suggestions first, because ids change when the text changes.

    MCP callgrammarly_write → resolve_suggestion

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/documents/{document_id}/suggestions/{suggestion_id}/resolve

    Parameters

    Parameters: resolve_suggestion
    NameTypeDescription
    document_id string required string A document_id from list_documents.
    suggestion_id string required string A suggestion_id from list_suggestions.
    action string required string accept or dismiss.

    Example input

    {
      "document_id": "document_8c41d2",
      "suggestion_id": "suggestion_8c41d2",
      "action": "action"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "suggestion_id": "sg_103",
      "action": "accept",
      "applied": true
    }
  • set_goals Set audience, formality, domain and intent of one document. write

    Opens Goals for the document and sets the options you pass, then clicks Done. Grammarly cannot save default goals, so they are set per document. Pass each value as the option name the Goals panel shows. The domain option is limited to Pro, Plus, Business and Education plans. It reaches nobody and changing it again undoes it, so it does not wait for your OK.

    MCP callgrammarly_write → set_goals

    REST endpointPUT https://cotlet.dev/api/v1/grammarly/documents/{document_id}/goals

    Parameters

    Parameters: set_goals
    NameTypeDescription
    document_id string required string A document_id from list_documents.
    audience string string The Audience option as the Goals panel names it.
    formality string string The Formality option as the Goals panel names it.
    domain string string The Domain option as the Goals panel names it.
    intent string string The Intent option as the Goals panel names it.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "goals": {
        "audience": "General",
        "formality": "Formal",
        "domain": "Business"
      }
    }

AI, plagiarism and Authorship2

The AI text and plagiarism check needs a paid Grammarly plan. An Authorship report covers only writing done while tracking was on.

  • check_ai_and_plagiarism Run Check for AI text & plagiarism on one document. read

    Runs the Check for AI text & plagiarism button of the Editor and returns what its panel shows: passages that match external sources, each with the source Grammarly names, and the AI text result. The button belongs to paid plans, so on a free account the call fails with a plan error. It changes nothing in the document.

    MCP callgrammarly_read → check_ai_and_plagiarism

    REST endpointGET https://cotlet.dev/api/v1/grammarly/documents/{document_id}/ai-and-plagiarisms/check

    Parameters

    Parameters: check_ai_and_plagiarism
    NameTypeDescription
    document_id string required string A document_id from list_documents.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "plagiarism_matches": [
        {
          "passage": "new reporting tool is live today",
          "source": "example.com/blog/reporting-tool"
        }
      ],
      "ai_text": {
        "flagged": false
      }
    }
  • share_authorship_report Create the Authorship report of a document and a share link. writeasks first

    Opens the Authorship report of the document and sets access to Anyone with the link, then returns the link. Anyone who has the link sees all the information in the report. Authorship reports only the writing done while its tracking was on, so a document written without it has nothing to report. You can delete a shared report from your Authorship page in Grammarly. By default you confirm each call; you can switch that off for this tool.

    MCP callgrammarly_write → share_authorship_report

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/documents/{document_id}/authorship-report/share

    Parameters

    Parameters: share_authorship_report
    NameTypeDescription
    document_id string required string A document_id from list_documents.

    Example input

    {
      "document_id": "document_8c41d2"
    }

    Example response

    {
      "document_id": "doc_7c21a9",
      "report_url": "https://www.grammarly.com/authorship/example-report",
      "access": "anyone_with_link"
    }

Personal dictionary3

One word per entry, up to 100 symbols, no spaces. If your team admin turned the personal dictionary off, these tools fail.

  • list_dictionary_words Words in your personal dictionary. read

    Lists the words on the Your dictionary page under Account, then Writing. Grammarly stops flagging these words in all its products. If your team admin turned the personal dictionary off on the Feature access page, the page is closed and the call fails.

    MCP callgrammarly_read → list_dictionary_words

    REST endpointGET https://cotlet.dev/api/v1/grammarly/dictionary-words

    Parameters

    No parameters.

    Example response

    {
      "words": [
        "Cotlet",
        "Superflow",
        "kubectl"
      ]
    }
  • add_dictionary_word Add one word to your personal dictionary. write

    Types the word into the Your dictionary field and clicks Assign. A word can have at most 100 symbols, only English letters, hyphens and a few other symbols, and no spaces: entries with !, ?, +, $, & or / are refused, and so are several words in one entry. It reaches nobody and remove_dictionary_word undoes it, so it does not wait for your OK.

    MCP callgrammarly_write → add_dictionary_word

    REST endpointPOST https://cotlet.dev/api/v1/grammarly/dictionary-words

    Parameters

    Parameters: add_dictionary_word
    NameTypeDescription
    word string required string One word, up to 100 symbols, no spaces.

    Example input

    {
      "word": "word"
    }

    Example response

    {
      "word": "Superflow",
      "added": true
    }
  • remove_dictionary_word Remove one word from your personal dictionary. write

    Finds the word on the Your dictionary page and clicks the trash bin icon next to it. Grammarly flags the word again afterwards. It reaches nobody and add_dictionary_word undoes it, so it does not wait for your OK.

    MCP callgrammarly_write → remove_dictionary_word

    REST endpointDELETE https://cotlet.dev/api/v1/grammarly/dictionary-words

    Parameters

    Parameters: remove_dictionary_word
    NameTypeDescription
    word string required string A word from list_dictionary_words.

    Example input

    {
      "word": "word"
    }

    Example response

    {
      "word": "kubectl",
      "removed": true
    }
Encrypted, revocable

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

  • What we store

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

  • What your agent gets

    The 15 Grammarly tools. Never the cookie.

  • What the session sees

    Your documents, Trash, suggestions, goals and dictionary.

  • What no tool touches

    Plan, billing, password, two-factor and the account itself.

  • If Grammarly asks to verify

    A new device may get a code by email. You type it in, we never do.

  • How to cut access

    Disable for agents, reset the browser, or sign out in Grammarly's account settings.

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 Grammarly changes? We repair the tool; your prompts stay the same.

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

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

2 tools ask first

Approvals, undo and mistakes Nothing goes public or is lost until you say so.

  1. 01 Picks the document Finds it by title in your list and reads its date.
  2. 02 Sets the sharing Opens its Authorship report for Anyone with the link.
  3. 03 Waits for your OK The request shows up in your Cotlet console first.
  4. 04 Reports the link The report URL, the document and the time.
Which Grammarly actions can be undone
ActionUndo
Create a documentDelete it; Trash holds it for 30 days
Delete a documentRestore it from Trash within 30 days
Accept or dismiss a suggestionUndo in the Editor
Set document goalsSet them again
Add or remove a dictionary wordRun the opposite tool
Share an Authorship reportDelete the shared report on your Authorship page
Empty TrashNo, those documents are gone

2 of 15 tools ask first: empty_trash and share_authorship_report, the two that cannot be taken back or that give a link to others. Everything else touches only your own documents, so it runs at once. Switch the wait off per tool for a scheduled run.

Anyone who has an Authorship report link sees everything in the report.

MCP call
{
  "name": "create_document",
  "arguments": {
    "text": "Hi team, the quarterly report is attached. Please send feedback by Friday."
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/grammarly/documents \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hi team, the quarterly report is attached. Please send feedback by Friday."}'
Tool output
{
  "document_id": "doc_9b40d2",
  "title": "Untitled",
  "created_at": "2026-11-05T08:00:00Z"
}

Scripts and cron jobs reach the same tools over REST, with the same key and price. The check for AI text and plagiarism fails on a free Grammarly plan, and a failed call costs nothing.

Pay per call

How much does the Grammarly MCP server cost?

About $21 a monthfor a writer with 20 drafts a month, 3,680 credits. Your Grammarly plan is billed by Grammarly as before.

A month of Grammarly jobs for one writer, in credits
JobCallsCredits
Score a draft and accept the spelling fixes9 × 201,800
AI text and plagiarism pass, weekly6 × 4240
Move old documents to Trash, monthly6 × 160
Add brand terms to the dictionary5 × 150
Share an Authorship report1 × 330
Cloud Browser, 30 days1,500
Total3,680
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Documents, suggestions and dictionary work on the Free Grammarly plan

The month is our example: about 20 drafts, a weekly AI and plagiarism pass, one clean-up of old documents, 3 Authorship reports. Grammarly publishes no typical account size. 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

Grammarly MCP server on GitHub or hosted: which to use The GitHub servers are small and run on your computer.

Other Grammarly tools on GitHub and from Grammarly, checked 6 Nov 2026
OptionWhat it doesWhere it stops
BjornMelin/grammarly-mcpOne tool that reads the AI and plagiarism scores in the Grammarly web app and rewrites text with Claude. 11 stars, MIT.Scores only. You need a Grammarly Pro account, a Browserbase or Browser Use account and Claude Code. Last commit 14 Jan 2026.
michaelheichler/grammarly-docs-mcpLocal server for Grammarly Docs: proofreader output, AI detection, plagiarism, word counts and Grammarly's agents. MIT.Runs on your computer with a local Chrome profile. 0 stars, last commit 28 May 2026.
Grammarly APIOfficial Writing Score, AI Detector, Plagiarism, Analytics and License Management APIs.For organizations, through Contact Sales. They check text you send; they do not open your documents.

The GitHub servers are good for one person on one computer who wants the scores. Cotlet adds the rest of the Editor, hosted, with one sign-in and the same tools in ChatGPT, Claude and scripts.

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 Grammarly tools.

Grammarly MCP server: questions

How do I connect Grammarly to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Grammarly 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 Grammarly account through Cotlet, in their phone apps too.

What can ChatGPT do in Grammarly?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Grammarly: check a draft before it goes out; run AI text and plagiarism checks on drafts; clean old documents out of Grammarly. 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 Grammarly under Integrations in the console and log in to Grammarly in its Cloud Browser. The trial starts with your first app, no card asked.

Do I need a paid Grammarly plan?

Not for documents, suggestions or your dictionary. The Check for AI text & plagiarism button is a paid-plan feature, so check_ai_and_plagiarism needs one, and the Goals domain setting is limited to Pro, Plus, Business and Education plans, says the Grammarly Editor user guide.

Does it work on text I check with the Grammarly extension?

No. Cotlet reads documents saved in the Grammarly Editor at app.grammarly.com. Text you check with the extension inside other sites stays in those sites. To check such text, create a document with create_document and run the tools on it.

Which documents can have an Authorship report?

Only documents written while Authorship tracking was on. Grammarly states that Authorship sees only the writing done while tracking is on (About Grammarly Authorship), so a pasted document has a report with nothing to show.

Do I need a Grammarly API key?

No. Grammarly's own API is arranged with its sales team for organizations. Cotlet works in your signed-in Grammarly account, so there is nothing to request or code.

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 Grammarly?

No. Cotlet is independent and not affiliated with Grammarly or Superhuman.

Give your agent access to Grammarly.

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