google_docs_ accept_ suggestionAccepts a suggestion.
Read a document as Markdown, add a section under the right heading, rewrite a part, fill a template, style every mention of a name, and reply to comments, from the AI client you already use.
PopMCPGoogle Docs
Every tool the connection exposes: reading and writing content, formatting, tables, tabs, comments and suggestions, Drive sharing, plus the change triggers you can watch.
99 tools in the full catalog: 14 read and 85 write. 45 load by default, and the rest are found with tool search.
google_docs_ accept_ suggestionAccepts a suggestion.
google_docs_ add_ bulletsCreates bullets for paragraphs.
google_docs_ add_ tabAdds a document tab.
google_docs_ delete_ contentDeletes content from the document.
google_docs_ delete_ table_ columnDeletes a column from a table.
google_docs_ delete_ table_ rowDeletes a row from a table.
google_docs_ format_ paragraphsUpdates the paragraph style at the specified range.
google_docs_ format_ textUpdates the text style at the specified range.
google_docs_ insert_ imageInserts an inline image at the specified location.
google_docs_ insert_ tableInserts a table at the specified location.
google_docs_ insert_ table_ columnInserts an empty column into a table.
google_docs_ insert_ table_ rowInserts an empty row into a table.
google_docs_ insert_ textInserts text at the specified location.
google_docs_ reject_ suggestionRejects a suggestion.
google_docs_ replace_ all_ textReplaces all instances of the specified text.
google_docs_ reply_ to_ commentAdds a reply to a CommentThread or SuggestionThread.
google_docs_ update_ document_ styleUpdates the style of the document.
google_docs_ copy_ documentDuplicate a document with all its content and formatting: the way to keep a snapshot before a big edit, or to start from a template.
google_docs_ create_ documentCreate a Google Doc WITH content in one call: body { title: 'Q3 plan', markdown: '# Goals\n\n- Ship v2\n- Hire two engineers' }.
google_docs_ create_ drive_ folderCreate a Drive folder to keep documents together: body { name: 'Client proposals', parentId?: FOLDER_ID } (default: the top of My Drive).
google_docs_ export_ documentExport a document through Drive as TEXT: Markdown (the default), plain text or HTML, converted by Google itself, paged like read_document.
google_docs_ get_ document_ file_ infoDrive-side facts about a document that the Docs API does not hold: who owns it, who last edited it and when, which folders it is in, whether it is shared or trashed, what this account may do with it (canEdit, canComment), the `webViewLink` to hand to a person, and `exportLinks` (signed-in download links for PDF, Word, ODT, EPUB, Markdown and more).
google_docs_ list_ document_ permissionsSee who a document is shared with and how.
google_docs_ list_ documentsFIND Google Docs.
google_docs_ list_ drive_ foldersList Drive FOLDERS, to put a document somewhere or to search inside one.
google_docs_ move_ documentMove a document into another Drive folder: query { folderId: 'FOLDER_ID' }.
google_docs_ remove_ document_ permissionRevoke one person's (or the link's) access to a document, using the permissionId from list_document_permissions.
google_docs_ rename_ documentRename a document: body { title: 'New name' }.
google_docs_ share_ documentShare a document.
google_docs_ trash_ documentDelete a document the way a person means it: move it to the trash, where it stays restorable for 30 days.
google_docs_ add_ commentCOMMENT on a passage, the way a person highlights text and clicks Comment: pass quote (the exact text to attach it to) and comment.
google_docs_ create_ document_ from_ templateMake a new document from a TEMPLATE in one call: copies the template (all formatting, tables, images, headers) and replaces each placeholder with its value everywhere it appears, e.g. replacements { '{{client}}': 'Acme Ltd', '{{date}}': '15 October 2026' }.
google_docs_ export_ document_ fileSAVE a document as a file in Google Drive: PDF, Word (docx), OpenDocument (odt), RTF, EPUB or plain text (txt), converted by Google (up to 10 MB).
google_docs_ find_ textFind every occurrence of a word or phrase and get its exact startIndex/endIndex, plus the paragraph it is in.
google_docs_ format_ matching_ textSTYLE every occurrence of a word or phrase in one call, without indices: bold, italic, underline, strikethrough, fontSize (pt), fontFamily, color and highlight (hex like '#1a73e8' or a color name), link (a URL, or '' to remove a link), or turn the paragraphs that contain it into a heading with paragraphStyle ('heading 2', 'title', 'normal').
google_docs_ insert_ markdownADD content to an existing document by writing Markdown: # headings, paragraphs, **bold**, *italic*, ~~strike~~, `code`, [links](https://…), - bulleted and 1.
google_docs_ read_ documentREAD a Google Doc.
google_docs_ replace_ document_ contentREPLACE the entire body of a document (or of one tab) with new Markdown, in one atomic change.
google_docs_ replace_ sectionREWRITE the content under one heading with new Markdown, in one atomic change: everything from just below the heading to the next heading of the same or higher level is replaced; the rest of the document is untouched.
google_docs_ replace_ text_ with_ markdownREPLACE a piece of text, typically a {{placeholder}}, with Markdown, in one atomic change.
google_docs_ set_ header_ footerSET the header or footer of a document (or of one tab) to new Markdown, replacing what it held, and create it when there is none.
google_docs_ batch_ update_ documentApplies one or more updates to the document.
google_docs_ get_ documentGets the latest version of the specified document.
google_docs_ list_ commentsRead a document's comment threads AND pending suggestions through the Docs API (works on every connection).
google_docs_ resolve_ commentMark a comment thread RESOLVED, optionally with a closing reply: body { commentId, content: 'Fixed in the latest draft.' }.
google_docs_ create_ dropdown_ definitionCreates a DropdownDefinition.
google_docs_ create_ footerCreates a footer.
google_docs_ create_ footnoteCreates a footnote.
google_docs_ create_ headerCreates a header.
google_docs_ create_ named_ rangeCreates a named range.
google_docs_ delete_ commentDeletes a CommentThread.
google_docs_ delete_ comment_ replyDeletes a reply Post from a CommentThread or SuggestionThread.
google_docs_ delete_ dropdown_ definitionDeletes a DropdownDefinition.
google_docs_ delete_ footerDeletes a footer from the document.
google_docs_ delete_ headerDeletes a header from the document.
google_docs_ delete_ named_ rangeDeletes a named range.
google_docs_ delete_ positioned_ objectDeletes a positioned object from the document.
google_docs_ delete_ suggestionDeletes a suggestion.
google_docs_ delete_ tabDeletes a document tab.
google_docs_ edit_ commentUpdates an existing post (head post or reply) of a CommentThread or SuggestionThread.
google_docs_ format_ table_ cellsUpdates the style of table cells.
google_docs_ format_ table_ rowsUpdates the row style in a table.
google_docs_ insert_ commentInserts a CommentThread into the document.
google_docs_ insert_ dateInserts a date.
google_docs_ insert_ dropdownInserts a Dropdown at the specified location.
google_docs_ insert_ page_ breakInserts a page break at the specified location.
google_docs_ insert_ person_ mentionInserts a person mention.
google_docs_ insert_ rich_ linkInsert a rich link.
google_docs_ insert_ section_ breakInserts a section break at the specified location.
google_docs_ merge_ table_ cellsMerges cells in a table.
google_docs_ pin_ table_ header_ rowsUpdates the number of pinned header rows in a table.
google_docs_ remove_ bulletsDeletes bullets from paragraphs.
google_docs_ replace_ imageReplaces an image in the document.
google_docs_ replace_ named_ range_ contentReplaces the content in a named range.
google_docs_ set_ table_ column_ widthsUpdates the properties of columns in a table.
google_docs_ unmerge_ table_ cellsUnmerges cells in a table.
google_docs_ update_ dropdown_ definition_ propertiesUpdates the properties of a DropdownDefinition.
google_docs_ update_ dropdown_ propertiesUpdates the properties of a Dropdown.
google_docs_ update_ named_ styleUpdates a named style.
google_docs_ update_ section_ styleUpdates the section style of the specified range.
google_docs_ update_ tabUpdates the properties of a document tab.
google_docs_ untrash_ documentRestore a trashed document to where it was.
google_docs_ update_ document_ permissionChange an existing share's role, e.g. body { role: 'reader' } to make an editor a viewer.
google_docs_ create_ drive_ commentAdd a DOCUMENT-LEVEL comment through Drive: body { content: 'Overall looks good' }.
google_docs_ delete_ drive_ commentDelete a comment thread.
google_docs_ delete_ drive_ comment_ replyDelete one reply from a comment thread.
google_docs_ get_ drive_ commentOne comment thread with all its replies.
google_docs_ list_ drive_ comment_ repliesThe replies in one comment thread, oldest first.
google_docs_ list_ drive_ commentsDrive's view of a document's comments.
google_docs_ reopen_ drive_ commentReopen a resolved comment thread, optionally with a reply: body { content: 'One more thing…' } or no body.
google_docs_ reply_ to_ drive_ commentReply in a comment thread: body { content: 'Done, updated the figures.' }.
google_docs_ resolve_ drive_ commentMark a comment thread resolved, optionally with a closing reply: body { content: 'Fixed in the latest draft.' } or no body at all.
google_docs_ update_ drive_ commentEdit the text of a comment this account wrote: body { content: 'new text' }.
google_docs_ update_ drive_ comment_ replyEdit the text of a reply this account wrote: body { content: 'new text' }.
google_docs_ create_ blank_ documentCreates a blank document using the title given in the request.
google_docs_ get_ revisionOne saved version of the document (from list_revisions), with its export links.
google_docs_ list_ revisionsThe document's saved versions, oldest first: when each was saved and by whom.
google_docs_ publish_ documentPublish the document to the web (File > Share > Publish to web), so anyone can read it at a public link, kept up to date as it changes.
google_docs_ reopen_ commentREOPEN a resolved comment thread, optionally with a reply: body { commentId, content: 'One more thing...' }.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Google Docs side.
Connect with your own Google Cloud OAuth client: enable the Docs and Drive APIs, paste the OAuth Client ID and Client Secret, and authorize once. There is no document picker; it reaches what that Google account can open.
1234567890-abc.apps.googleusercontent.com••••••••••••3f7aEdits, sharing changes and trashing happen as soon as the AI calls them. Keep reviewers on read-only, or ask the AI to make its changes as suggestions so an editor accepts or rejects each one.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Google Docs credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Summarize the client proposal doc and list its open comments
google_docs_list_documentsok
Then just ask for the work
“Summarize the client proposal doc and list its open comments”
“Add a Risks section with three bullet points under the Timeline heading”
“Make a new proposal for Acme from our template and share it with sam@acme.com”
“Rename every 'Q3' to 'Q4' in the board update and bold the word Revenue”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Google Docs behind an AI client.
It writes Markdown and the connector turns it into real Docs formatting: headings, bold and italic, links, bulleted, numbered and checklist items, quotes, code, tables and images. It can add content at the end, at the start, under a named heading or next to a paragraph, and rewrite one section or the whole document, without working out character positions.
There is no document to pick during setup. The connection reaches exactly the documents the Google account you authorized with can open, so scope is decided by which account you use. To hand over less, authorize with an account that only has access to the files you want an agent touching.
Yes. The writing tools take a suggest option that turns every change into a suggestion, the same as Suggesting mode in Google Docs, so an editor accepts or rejects each one. The agent can also read open comments and suggestions, reply, resolve threads, and accept or reject suggestions itself.
The Docs API only works on a document whose id you already have, and it cannot rename, share, move, export or trash one. Drive is what finds a document by name or by the words inside it, renames and files it, shares it, exports it, and copies a template. If the Drive API is not enabled in your project, those tools have nothing to call.
That is Google's behavior for an OAuth app still in testing. If your Google Cloud project's Audience is set to External, publish the app before you connect, otherwise Google expires the connection after 7 days and calls start failing. Publishing needs no review from Google.
45 everyday tools load by default and the rest stay searchable, so a long tool list does not eat your context window. Every one of the Docs API's 53 edit types is its own tool, from named ranges and footnotes to dropdowns and person chips, alongside the Drive tools for finding, sharing, comments and versions, and 9 change triggers.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Google Docs in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Google Docs on the consent screen. The Google Docs tools are then available in that session, and no Google Docs credential is stored on your machine.
Loading 99 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 45-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 99 here. A trigger is something PopMCP watches for you: 9 Google Docs events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Google Docs.
Launch a hosted MCP endpoint for Google Docs, keep tool access under control, and start testing real workflow prompts right away.