# Claude MCP x Google Docs MCP server

Agent View of the PolicyLayer registry record for Claude MCP x Google Docs: identity, probed posture, risk grade, and all 84 tools classified. HTML page: https://policylayer.com/tools/a-bonus-google-docs-mcp

## Facts

- Server id: `a-bonus/google-docs-mcp`
- Homepage: https://github.com/a-bonus/google-docs-mcp
- Registry record: grade F, identity unverified
- Lifecycle: active
- Rate-limited: no
- Tools: 84
- Tool categories present: Destructive, Read, Write
- Tags: a bonus google docs mcp, admin
- Record last modified: 2026-10-14T11:52:30.834Z

## Tools (84)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `clearRange` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/clearrange.md |
| `deleteChart` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletechart.md |
| `deleteConditionalFormatting` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deleteconditionalformatting.md |
| `deleteDraft` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletedraft.md |
| `deleteEvent` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deleteevent.md |
| `deleteFile` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletefile.md |
| `deleteSheet` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletesheet.md |
| `deleteSheetsComment` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletesheetscomment.md |
| `deleteTable` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/deletetable.md |
| `trashMessage` | Destructive | Critical | https://policylayer.com/tools/a-bonus-google-docs-mcp/trashmessage.md |
| `createAppsScriptProject` | Execute | High | https://policylayer.com/tools/a-bonus-google-docs-mcp/createappsscriptproject.md |
| `sendEmail` | Execute | High | https://policylayer.com/tools/a-bonus-google-docs-mcp/sendemail.md |
| `downloadFile` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/downloadfile.md |
| `getAppsScriptContent` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getappsscriptcontent.md |
| `getConditionalFormatting` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getconditionalformatting.md |
| `getDocumentInfo` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getdocumentinfo.md |
| `getDraft` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getdraft.md |
| `getFolderInfo` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getfolderinfo.md |
| `getMessage` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getmessage.md |
| `getSheetsComment` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getsheetscomment.md |
| `getSpreadsheetInfo` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/getspreadsheetinfo.md |
| `getTable` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/gettable.md |
| `listDocuments` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listdocuments.md |
| `listDrafts` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listdrafts.md |
| `listDriveFiles` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listdrivefiles.md |
| `listEvents` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listevents.md |
| `listFolderContents` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listfoldercontents.md |
| `listLabels` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listlabels.md |
| `listMessages` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listmessages.md |
| `listSheetsComments` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listsheetscomments.md |
| `listSpreadsheets` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listspreadsheets.md |
| `listTables` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/listtables.md |
| `readCellFormat` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/readcellformat.md |
| `readSpreadsheet` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/readspreadsheet.md |
| `searchDocuments` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/searchdocuments.md |
| `searchDriveFiles` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/searchdrivefiles.md |
| `triageInbox` | Read | Low | https://policylayer.com/tools/a-bonus-google-docs-mcp/triageinbox.md |
| `addConditionalFormatting` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/addconditionalformatting.md |
| `addSheet` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/addsheet.md |
| `appendMarkdown` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/appendmarkdown.md |
| `appendRows` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/appendrows.md |
| `appendTableRows` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/appendtablerows.md |
| `autoResizeColumns` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/autoresizecolumns.md |
| `autoResizeRows` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/autoresizerows.md |
| `batchWrite` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/batchwrite.md |
| `copyFile` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/copyfile.md |
| `copyFormatting` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/copyformatting.md |
| `copySheetTo` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/copysheetto.md |
| `createDocument` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createdocument.md |
| `createDocumentFromTemplate` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createdocumentfromtemplate.md |
| `createDraft` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createdraft.md |
| `createEvent` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createevent.md |
| `createFolder` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createfolder.md |
| `createSheetsCellNote` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createsheetscellnote.md |
| `createSheetsComment` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createsheetscomment.md |
| `createSpreadsheet` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createspreadsheet.md |
| `createTable` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/createtable.md |
| `duplicateSheet` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/duplicatesheet.md |
| `formatCells` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/formatcells.md |
| `freezeRowsAndColumns` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/freezerowsandcolumns.md |
| `groupRows` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/grouprows.md |
| `insertChart` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/insertchart.md |
| `modifyMessageLabels` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/modifymessagelabels.md |
| `moveFile` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/movefile.md |
| `protectRange` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/protectrange.md |
| `quickAddEvent` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/quickaddevent.md |
| `renameFile` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/renamefile.md |
| `renameSheet` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/renamesheet.md |
| `replaceDocumentWithMarkdown` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/replacedocumentwithmarkdown.md |
| `replaceRangeWithMarkdown` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/replacerangewithmarkdown.md |
| `replyToSheetsComment` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/replytosheetscomment.md |
| `resolveSheetsComment` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/resolvesheetscomment.md |
| `sendDraft` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/senddraft.md |
| `setCellBorders` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/setcellborders.md |
| `setColumnWidths` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/setcolumnwidths.md |
| `setDropdownValidation` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/setdropdownvalidation.md |
| `setFilePermission` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/setfilepermission.md |
| `setRowHeights` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/setrowheights.md |
| `ungroupAllRows` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/ungroupallrows.md |
| `updateAppsScriptContent` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/updateappsscriptcontent.md |
| `updateDraft` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/updatedraft.md |
| `updateEvent` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/updateevent.md |
| `updateTableRange` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/updatetablerange.md |
| `writeSpreadsheet` | Write | Medium | https://policylayer.com/tools/a-bonus-google-docs-mcp/writespreadsheet.md |

## Tool descriptions

- `clearRange` — Clears all cell values in a range without deleting the cells themselves. Formatting is preserved.
- `deleteChart` — Deletes a chart from a Google Spreadsheet by chart ID.
- `deleteConditionalFormatting` — Deletes one or more conditional formatting rules from a sheet by their index. Use getConditionalFormatting to list existing rules and their indices.
- `deleteDraft` — Permanently deletes a Gmail draft. This is irreversible — the draft is removed entirely, not moved to Trash. Use when an AI-composed draft was rejected or replaced.
- `deleteEvent` — Deletes an event from a Google Calendar. This is permanent — the event is removed, not trashed. Use sendUpdates to email cancellations to attendees.
- `deleteFile` — Moves a file or folder to the trash, or permanently deletes it. Set permanent=true for irreversible deletion.
- `deleteSheet` — Deletes a sheet (tab) from a spreadsheet. Use getSpreadsheetInfo to find the numeric sheet ID.
- `deleteSheetsComment` — Permanently deletes a comment and all its replies from a Google Spreadsheet.
- `deleteTable` — Deletes a table from a spreadsheet. By default, only removes the table object and formatting while keeping the cell data. Optionally clears the data as well.
- `trashMessage` — Moves a Gmail message to Trash. This is the same as clicking Delete in the Gmail UI — reversible from the Trash folder for 30 days. Not a permanent delete.
- `createAppsScriptProject` — Creates an Apps Script project, optionally bound to a Doc, Sheet, Slides or Form so its triggers and custom menus run inside that file. Optionally writes the initial files in the same call. Requires the Apps Script API to be enabled at h…
- `sendEmail` — Sends a plain-text email from the authenticated Gmail account. Supports cc/bcc and optional threading by passing replyToMessageId (which copies threadId and sets In-Reply-To/References so the reply lands in the same thread).
- `downloadFile` — Downloads any file from Google Drive to a local path.
- `getAppsScriptContent` — Reads the files of an Apps Script project. Use it before updateAppsScriptContent to see what is already there, or to review code that is currently deployed.
- `getConditionalFormatting` — Lists all conditional formatting rules for a sheet as JSON. Each rule includes its index (needed for deleteConditionalFormatting), kind (BOOLEAN or GRADIENT), ranges, condition type/values, and applied formats (colors, bold, italic).
- `getDocumentInfo` — Gets metadata about a document including its name, owner, sharing status, and modification history.
- `getDraft` — Fetches a single Gmail draft by ID with full headers, body, and a list of attachments (metadata only). Use listDrafts to discover draft IDs.
- `getFolderInfo` — Gets metadata about a Drive folder including its name, owner, sharing status, and parent folder.
- `getMessage` — Fetches a single Gmail message by ID with headers, decoded plain-text body, HTML body, and a list of attachments (metadata only). Use listMessages to discover message IDs.
- `getSheetsComment` — Gets a specific comment and its full reply thread from a Google Spreadsheet. Use listSheetsComments first to find the comment ID.
- `getSpreadsheetInfo` — Gets metadata about a spreadsheet including its title, URL, and a list of all sheets with their dimensions.
- `getTable` — Gets detailed information about a specific table including its columns, range, and properties. Use the table name or ID returned by listTables.
- `listDocuments` — Lists Google Documents in your Drive, optionally filtered by name or content. Use modifiedAfter to find recently changed documents.
- `listDrafts` — Lists Gmail drafts for the authenticated user. Returns draft IDs along with the recipient, subject, snippet, and date for each. Use sendDraft, updateDraft, or deleteDraft to act on a returned draft.
- `listDriveFiles` — Lists files across Google Drive with optional filtering by type, folder, and ownership.
- `listEvents` — Lists or searches Google Calendar events. Defaults to the user
- `listFolderContents` — Lists files and subfolders within a Drive folder. Use folderId=
- `listLabels` — Lists all Gmail labels for the authenticated user, including system labels (INBOX, SENT, STARRED, UNREAD, etc.) and custom user-created labels. Use the returned IDs with modifyMessageLabels or listMessages labelIds filter.
- `listMessages` — Lists Gmail messages for the authenticated user. Supports the full Gmail search syntax via the q parameter (e.g.
- `listSheetsComments` — Lists all comments in a Google Spreadsheet. Filter by sheet name, specific row(s), specific cell, or a cell range. Returns comment IDs needed for getSheetsComment, replyToSheetsComment, resolveSheetsComment, or deleteSheetsComment.
- `listSpreadsheets` — Lists spreadsheets in your Drive, optionally filtered by name or content.
- `listTables` — Lists all tables in a spreadsheet or specific sheet. Use this to discover table names and IDs before performing table operations.
- `readCellFormat` — Reads the formatting/style of cells in a given range. Returns formatting details like bold, italic, fontSize, fontFamily, colors, alignment, borders, and number format per cell.
- `readSpreadsheet` — Reads data from a range in a spreadsheet. Returns rows as arrays. Use A1 notation for the range (e.g.,
- `searchDocuments` — Searches for documents by name, content, or both. Use listDocuments for browsing and this tool for targeted queries.
- `searchDriveFiles` — Searches across all file types in Google Drive by name or content.
- `triageInbox` — Composite tool: fetches the user
- `addConditionalFormatting` — Adds a conditional formatting rule to one or more ranges in a spreadsheet. Applies a format (background color, bold, text color, etc.) when cells meet a specified condition. Use CUSTOM_FORMULA for complex conditions like
- `addSheet` — Adds a new sheet (tab) to an existing spreadsheet. Returns the new sheet
- `appendMarkdown` — Appends formatted content to the end of a document using markdown syntax. Supports headings, bold, italic, strikethrough, links, and bullet/numbered lists. Use this instead of appendText when you need formatting.
- `appendRows` — Appends rows to the end of a sheet. Data is added after the last row with content in the specified range.
- `appendTableRows` — Appends rows to the end of a table using table-aware insertion. This method respects footers and automatically inserts rows before the footer if one exists.
- `autoResizeColumns` — Auto-resizes columns in a spreadsheet to fit their content. Optionally restrict to a column range (e.g.,
- `autoResizeRows` — Auto-resizes rows in a spreadsheet to fit their content. Optionally restrict to a row range (e.g., startRow=2, endRow=50); defaults to all rows.
- `batchWrite` — Writes data to multiple ranges in a single API call. More efficient than multiple separate writeSpreadsheet calls when updating several ranges at once.
- `copyFile` — Creates a copy of a file or document in Google Drive. Returns the new copy
- `copyFormatting` — Copies formatting (not values) from a source range to a destination range within the same spreadsheet. Copies bold, colors, borders, number formats, etc.
- `copySheetTo` — Copies a sheet (tab) from one spreadsheet to another spreadsheet. Use getSpreadsheetInfo to find the numeric sheet ID. The copied sheet will be appended to the destination spreadsheet.
- `createDocument` — Creates a new empty Google Document. Optionally places it in a specific folder and adds initial text content.
- `createDocumentFromTemplate` — Creates a new document by copying an existing template and optionally replacing placeholder text. Provide key-value pairs in the replacements parameter to substitute template variables.
- `createDraft` — Creates a Gmail draft (does NOT send). Use this for AI-composed emails that the user should review before sending. The draft appears in the Gmail Drafts folder and can be sent later with sendDraft, edited with updateDraft, or deleted wit…
- `createEvent` — Creates a new event on a Google Calendar. Supports timed events (start/end with dateTime) and all-day events (start/end with date). Set sendUpdates to email invitations to attendees.
- `createFolder` — Creates a new folder in Google Drive. Optionally places it inside an existing parent folder.
- `createSheetsCellNote` — Creates or replaces a native Google Sheets cell note on a cell or range. Use this when the review text must be attached to a specific cell in the Sheets UI. This is a cell note, not a threaded Drive comment.
- `createSheetsComment` — Creates a new comment in a Google Spreadsheet. When you target a specific cell or range, a click-through link to that location is added to the comment body by default (includeCellLink), letting users jump to the cell. Note: the Drive API…
- `createSpreadsheet` — Creates a new spreadsheet. Optionally places it in a specific folder and populates it with initial data.
- `createTable` — Creates a new named table with specific column types. Tables provide structured data with typed columns, automatic formatting, and special features like dropdown validation.
- `duplicateSheet` — Duplicates a sheet (tab) within a spreadsheet, copying all values, formulas, formatting, validations, and conditional formatting. Use getSpreadsheetInfo to find the numeric sheet ID.
- `formatCells` — Applies formatting to a range of cells in a spreadsheet. Supports bold, italic, font size, text color, background color, alignment, and number format. Use range
- `freezeRowsAndColumns` — Pins rows and/or columns so they stay visible when scrolling. Use frozenRows=1 to freeze a header row. Set a value to 0 to unfreeze.
- `groupRows` — Creates collapsible row groups in a Google Sheet using the Sheets API addDimensionGroup request. Each group specifies a range of rows (1-based, inclusive) to collapse.
- `insertChart` — Inserts a chart into a Google Sheet. Supports bar, column, line, area, scatter, pie, donut, and treemap (hierarchical) chart types.
- `modifyMessageLabels` — Adds and/or removes labels on a Gmail message. Use this to star (add STARRED), archive (remove INBOX), mark read (remove UNREAD), or apply custom labels. Discover label IDs with listLabels. At least one of addLabelIds or removeLabelIds m…
- `moveFile` — Moves a file or folder to a different Drive folder. By default adds the new parent while keeping existing parents; set removeFromAllParents=true for a true move.
- `protectRange` — Locks (protects) a range or an entire sheet to prevent accidental edits. Optionally specify a description. The protection applies to the authenticated user
- `quickAddEvent` — Creates a calendar event from a natural-language string using Google Calendar\
- `renameFile` — Renames a file or folder in Google Drive. Returns the updated file info.
- `renameSheet` — Renames a sheet (tab) in a spreadsheet. Use getSpreadsheetInfo to find the numeric sheet ID.
- `replaceDocumentWithMarkdown` — Replaces the entire document body with content parsed from markdown. Supports headings, bold, italic, strikethrough, links, and bullet/numbered lists. Use readDocument with format=
- `replaceRangeWithMarkdown` — Replaces a specific character range in a document with formatted markdown content. Use readDocument with format=
- `replyToSheetsComment` — Adds a reply to an existing comment thread in a Google Spreadsheet. Use listSheetsComments or getSheetsComment to find the comment ID.
- `resolveSheetsComment` — Marks a comment as resolved in a Google Spreadsheet. Note: resolved status may not persist in the Sheets UI due to a Drive API limitation.
- `sendDraft` — Sends an existing Gmail draft. After sending, the draft is removed and the message appears in Sent. This is the second half of the compose-review-send flow that pairs with createDraft.
- `setCellBorders` — Sets borders on a range of cells. Each side (top, bottom, left, right, innerHorizontal, innerVertical) can be configured independently with a style and color. Use style
- `setColumnWidths` — Sets the width (in pixels) of one or more columns in a spreadsheet. Accepts multiple column specs in a single call, each targeting a single column or a contiguous range (e.g.,
- `setDropdownValidation` — Adds or removes a dropdown list on a range of cells. Provide values to create a dropdown restricting input to those options. Omit values to remove dropdown validation from the range.
- `setFilePermission` — Sets a sharing permission on a Drive file or folder. Common case: type=
- `setRowHeights` — Sets a fixed pixel height for a range of rows in a spreadsheet. Useful for ensuring rows are tall enough to display wrapped text.
- `ungroupAllRows` — Removes all row groupings from a sheet by deleting the entire row dimension group. Use before re-running groupRows to prevent duplicate collapse widgets from accumulating across report refreshes.
- `updateAppsScriptContent` — Writes files into an existing Apps Script project. Default mode
- `updateDraft` — Replaces the contents of an existing Gmail draft. The new contents fully overwrite the old draft (this is a full replace, not a patch), attachments included: pass attachments again or the draft loses them. The draft stays in its thread u…
- `updateEvent` — Updates an existing Google Calendar event with PATCH semantics — only the fields you provide are changed; everything else stays the same. Common uses: reschedule (set start+end), retitle (set summary), add/remove attendees (set attendees…
- `updateTableRange` — Modifies a table
- `writeSpreadsheet` — Writes data to a range in a spreadsheet, overwriting existing values. Use appendRows to add data without overwriting.

## Related servers

- UnClick (1662 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Apibase (1384 tools) — https://policylayer.com/tools/io-github-whiteknightonhorse-apibase.md
- Delx Mcp A2a (1068 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-a2a.md
- MCP Framework Personal (912 tools) — https://policylayer.com/tools/inggerman-mcps.md
- Hermoso (896 tools) — https://policylayer.com/tools/hermoso.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Altium-MCP-Suite (817 tools) — https://policylayer.com/tools/altium-mcp-suite.md
- Eda Agent (777 tools) — https://policylayer.com/tools/eda-agent.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=a-bonus-google-docs-mcp · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/a-bonus-google-docs-mcp
