io.github.chrischall/gogcli-mcp-docs
NPM · GOGCLI-MCP-DOCS · SCANNED SEP 20
Extended Google Docs for Claude via gogcli — auth + full Docs and comments support
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 4 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to chrischall/gogcli-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 16539 tokens (~199/item across 83 items; 83 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 83 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.chrischall/gogcli-mcp-docs server?
io.github.chrischall/gogcli-mcp-docs runs locally as an npm package, launched with npx -y gogcli-mcp-docs. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · gogcli-mcp-docs
claude mcp add chrischall-gogcli-mcp-docs -- npx -y gogcli-mcp-docs
{
"mcpServers": {
"chrischall-gogcli-mcp-docs": {
"command": "npx",
"args": [
"-y",
"gogcli-mcp-docs"
]
}
}
} {
"servers": {
"chrischall-gogcli-mcp-docs": {
"command": "npx",
"args": [
"-y",
"gogcli-mcp-docs"
]
}
}
} codex mcp add chrischall-gogcli-mcp-docs -- npx -y gogcli-mcp-docs
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrischall-gogcli-mcp-docs": {
"type": "local",
"command": [
"npx",
"-y",
"gogcli-mcp-docs"
],
"enabled": true
}
}
} openclaw mcp add chrischall-gogcli-mcp-docs --command npx --arg -y --arg gogcli-mcp-docs
mcp_servers:
chrischall-gogcli-mcp-docs:
command: "npx"
args: ["-y", "gogcli-mcp-docs"] {
"McpServers": {
"chrischall-gogcli-mcp-docs": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"gogcli-mcp-docs"
]
}
}
} assistant mcp add chrischall-gogcli-mcp-docs -t stdio -c npx -a -y gogcli-mcp-docs
{
"mcpServers": {
"chrischall-gogcli-mcp-docs": {
"command": "npx",
"args": [
"-y",
"gogcli-mcp-docs"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Package version: 4.0.1 → 4.1.0 functional
- 19 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 18 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 3.0.0 → 4.0.1 functional
- 17 Sept 26 +1
- Stability: 0.80 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: 0.85 → 1.00 ▲ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 2.30.0 → 3.0.0 functional
- 16 Sept 26 −3
- Stability: pass → 0.80 functional
- 15 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: 0.97 → pass security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 2.29.1 → 2.30.0 functional
- 13 Sept 26 0
- Stability: pass → 0.97 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/gogcli-mcp-docs@4.1.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | chrischall/gogcli-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/chrischall/gogcli-mcp/.github/workflows/release-please.yml@refs/heads/main |
| Rekor log index | 2893922124 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:bc8f45451c0e752123e33f2218cc202059e0c63fa2c65344e2fbc317098a291fca9ee265dfd8fd17ea923be3453720087b35b6f259ef6822083a9b36f |
Background: How many MCP packages publish verified provenance →
Dependencies 4 packages
| Packages resolved | 4 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
gog_auth_add ~251
Authorize a Google account via browser-based OAuth. Opens a browser window where the user must sign in and grant access. Blocks for up to 5 minutes waiting for the user to complete authorization. If the browser does not open automatically, a fallback URL is included in the response. Use gog_auth_list to check which accounts are already configured.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Google account email to authorize | |
| extraScopes | string | – | Additional raw OAuth scope URIs to request, comma-separated, on top of the ones `services` implies. Use for scopes no service covers — e.g. https://www.googleapis.com/auth/bigquery.readonly, required… |
| services | string | – | Services to authorize: "all" or comma-separated list (e.g. "sheets,gmail,calendar"). Default: "docs". Prefer the narrowest set you need — requesting a service whose Google API is not enabled on the O… |
No output schema declared.
No examples provided.
gog_auth_add_complete ~211
Complete REMOTE/headless Google authorization (step 2 of 2). Takes the full redirected localhost URL the user copied after finishing gog_auth_add_url, exchanges it for a refresh token, and stores it. Use the SAME `services` value you passed to gog_auth_add_url. Must run within 10 minutes of step 1 and against the same gogcli host.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Google account email being authorized (same as step 1) | |
| extraScopes | string | – | Extra OAuth scope URIs — MUST match the value passed to gog_auth_add_url, for the same reason `services` must: the two steps have to describe the same grant. |
| redirectUrl | string | yes | The full localhost redirect URL the user copied from the browser address bar after signing in (contains code and state; the page itself fails to load, which is expected). |
| services | string | – | Services authorized — MUST match the value passed to gog_auth_add_url. Default: "docs". |
No output schema declared.
No examples provided.
gog_auth_add_url ~337
Begin REMOTE/headless Google authorization (step 1 of 2). Returns a sign-in URL to open in any browser — no local server or terminal on the gogcli host is needed, so this works on a hosted deployment where the interactive gog_auth_add cannot. Hand the URL to the user; after they sign in, the browser is redirected to a localhost URL that fails to load — that is expected. They copy that full redirected URL (from the address bar) and you pass it to gog_auth_add_complete. The link is valid for 10 minutes. If you pass a custom `services` here, pass the SAME value to gog_auth_add_complete or the second step will not match this one.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Google account email to authorize | |
| extraScopes | string | – | Additional raw OAuth scope URIs to request, comma-separated, on top of the ones `services` implies. Use for scopes no service covers — e.g. https://www.googleapis.com/auth/bigquery.readonly, required… |
| services | string | – | Services to authorize: "all" or comma-separated list (e.g. "sheets,gmail,calendar"). Default: "docs". Prefer the narrowest set you need — requesting a service whose Google API is not enabled on the O… |
No output schema declared.
No examples provided.
gog_auth_health ~198
Check the LIVE health of each stored Google account. Unlike gog_auth_status (which only reports keyring/config setup), this performs a real token refresh against Google, so it detects expired or revoked (invalid_grant) refresh tokens — the account-wide sign-out that blocks every service. Reports per account: whether the token is currently valid, the mapped cause when it is not, how long ago it was authorized, and a warning as it approaches the 7-day refresh-token limit that applies to OAuth apps whose consent screen is still in "Testing" mode. Run it proactively to re-authorize on your own schedule instead of mid-task. On a hosted deployment this is the ONLY check that measures Google: a connector showing "connected" or "refreshed" has verified the client's connection to the MCP host, and nothing else — the Google credential lives in gog's keyring on that host and can be dead while the connection looks perfectly healthy.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gog_auth_list ~81
List the Google accounts stored in gogcli, with their scopes. This reads local configuration only — it does not contact Google and does NOT tell you whether an account still works: a signed-out account whose refresh token expired or was revoked is listed here exactly like a healthy one, scopes and all. Use gog_auth_health to check whether an account can actually authenticate.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gog_auth_run ~108
Run any gog auth subcommand not covered by the other tools. Run `gog auth --help` for the full list of subcommands, or `gog auth <subcommand> --help` for flags on a specific subcommand. For browser-based authorization, use gog_auth_add instead.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | yes | Additional positional args and flags |
| subcommand | string | yes | The gog auth subcommand to run, e.g. "remove", "alias", "list" |
No output schema declared.
No examples provided.
gog_auth_services ~24
List all Google services supported by gogcli and the OAuth scopes each requires.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gog_auth_status ~66
Show gogcli auth CONFIGURATION: keyring backend, credential files, and auth setup. Despite the name this is not a health check — it reads local setup and does not contact Google, so it says nothing about whether an account can still authenticate. Use gog_auth_health for that.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gog_batch_abort ~84
Discard a persisted batch and its composed requests without applying anything to the doc.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| batchId | string | yes | Batch ID to discard |
No output schema declared.
No examples provided.
gog_batch_begin ~130
Open a persisted, revision-locked request batch for a Google Doc. Subsequent docs mutation tools called with batch=<batchId> append their requests locally instead of applying them; gog_batch_end submits everything atomically. Returns the batchId.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Google Doc ID the batch is locked to |
| name | string | – | Optional batch label |
No output schema declared.
No examples provided.
gog_batch_end ~175
Submit a persisted batch: applies every composed request to the doc in one atomic batchUpdate against the locked revision. Atomic by default — set autoSplit to submit >500-request batches as ordered chunks (non-atomic), or continueOnError to retry individually after an atomic validation failure, retaining failures in the batch.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| autoSplit | boolean | – | Submit batches over 500 requests as ordered chunks (non-atomic) |
| batchId | string | yes | Batch ID (from gog_batch_begin) |
| continueOnError | boolean | – | After an atomic validation failure, submit requests individually and retain failures |
No output schema declared.
No examples provided.
gog_batch_list ~73
List persisted Docs request batches (id, doc, label, request count, status).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
No output schema declared.
No examples provided.
gog_batch_prune ~94
Delete stale persisted batches (not updated within olderThan).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| olderThan | string | – | Delete batches not updated within this duration (e.g. 72h, 7d) |
No output schema declared.
No examples provided.
gog_batch_show ~84
Show one persisted batch: its doc, locked revision, and the composed requests awaiting submission.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| batchId | string | yes | Batch ID |
No output schema declared.
No examples provided.
gog_docs_add_tab ~170
Add a tab to a Google Doc. Tabs partition a doc into independently-addressable sections (multi-tab docs). Optionally set the title, zero-based position, parent tab (for nesting), and an emoji icon.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| iconEmoji | string | – | Emoji icon for the tab |
| index | integer | – | Zero-based tab position within the parent |
| parentTab | string | – | Parent tab title or ID to nest this tab under |
| title | string | – | User-visible tab title |
No output schema declared.
No examples provided.
gog_docs_append ~361
Append text to the end of a Google Doc. This is the right tool for iterative document construction — multiple sequential calls produce content in the order they were called. Use gog_docs_insert only when you need to insert at a specific character position. Known markdown=true limitations (tracked upstream): (a) 3+ tables in one call reorders the trailing punctuation of the paragraph before the 3rd table — split into multiple calls with ≤2 tables each (openclaw/gogcli#607); (b) inline **bold** / *italic* / `code` inside table cells renders as literal characters — pre-format cell text separately or apply formatting after the append via gog_docs_format (openclaw/gogcli#608); (c) tables with an empty header row leak the last data row as literal pipe text — always supply a non-empty header (openclaw/gogcli#609).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| file | string | – | Path to a text file to append, read on the gog server. gog also accepts "-" for stdin, but this server never writes to gog's stdin, so "-" would hang until the call times out. |
| markdown | boolean | – | Convert markdown to Google Docs formatting (headings, bold, lists, etc.). See the tool description for known upstream limitations around tables. |
| tab | string | – | Target tab title or ID (for multi-tab docs) |
| text | string | – | Text content to append |
No output schema declared.
No examples provided.
gog_docs_cat ~103
Read a Google Doc as plain text.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| chips | boolean | – | Render Google Docs smart chips (people, dates, rich links) inline in the text output |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_cell_style ~563
Apply background color and/or inline text styling (bold, italic, underline, colors) to one or more table cells, addressed by 0-based row/column with optional spans. Sibling to gog_docs_cell_update, which changes cell content rather than styling. Note: row/col/tableIndex are 0-based here; gog_docs_cell_update uses 1-based addressing.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| backgroundColor | string | – | Cell background color as #RRGGBB or #RGB |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| bold | boolean | – | Set cell text bold |
| borderAll | string | – | All borders as WIDTH[,COLOR[,SOLID|DOT|DASH]] (e.g. 1pt,#000,DASH) |
| borderBottom | string | – | Bottom border (same format as borderAll); overrides borderAll |
| borderLeft | string | – | Left border (same format as borderAll); overrides borderAll |
| borderRight | string | – | Right border (same format as borderAll); overrides borderAll |
| borderTop | string | – | Top border (same format as borderAll); overrides borderAll |
| col | integer | yes | 0-based column number |
| colSpan | integer | – | Number of columns to style (default: 1) |
| contentAlign | string | – | Vertical content alignment within the cell |
| docId | string | yes | Doc ID (from the URL) |
| italic | boolean | – | Set cell text italic |
| paddingAll | string | – | All cell padding (points by default; supports pt, in, cm, mm) |
| paddingBottom | string | – | Bottom cell padding; overrides paddingAll |
| paddingLeft | string | – | Left cell padding; overrides paddingAll |
| paddingRight | string | – | Right cell padding; overrides paddingAll |
| paddingTop | string | – | Top cell padding; overrides paddingAll |
| row | integer | yes | 0-based row number |
| rowSpan | integer | – | Number of rows to style (default: 1) |
| tab | string | – | Target a specific tab by title or ID |
| tableIndex | integer | – | 0-based table index in document order (default: 0) |
| textColor | string | – | Text color as #RRGGBB or #RGB |
| underline | boolean | – | Set cell text underline |
No output schema declared.
No examples provided.
gog_docs_cell_update ~314
Replace (or append to) the content of a single table cell, addressed by table / row / column — non-destructive to the rest of the table, unlike index-based edits that shift on every change. Provide content inline or read it from contentFile. Note: row/col/tableIndex are 1-based here; the sibling gog_docs_cell_style uses 0-based addressing.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| append | boolean | – | Append inside the cell instead of replacing existing cell content |
| col | integer | yes | 1-based column number |
| content | string | – | Replacement content (omit when using contentFile). Pass an empty string to clear the cell. Large values are written to a temp file and passed to gog as --content-file automatically. |
| contentFile | string | – | Read replacement content from a file instead of content. Mutually exclusive with content — gog rejects both together. |
| docId | string | yes | Doc ID (from the URL) |
| format | string | – | Content format (default: markdown) |
| row | integer | yes | 1-based row number |
| tab | string | – | Target a specific tab by title or ID |
| tableIndex | integer | – | 1-based table index in document order; negative counts from the end (default: 1) |
No output schema declared.
No examples provided.
gog_docs_clear ~114
Clear all content from a Google Doc, leaving an empty document. The doc itself is preserved (same ID/URL); only its body content is removed. To delete the whole doc instead, use gog_docs_trash.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_comments_add ~127
Add a comment to a Google Doc. Optionally attach quoted text that appears as the highlighted passage in the Google Docs UI.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| content | string | yes | Comment text |
| docId | string | yes | Doc ID (from the URL) |
| quoted | string | – | Quoted text to attach to the comment (shown in UIs when available) |
No output schema declared.
No examples provided.
gog_docs_comments_delete ~96
Delete a comment from a Google Doc. This action is permanent.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID to delete |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_comments_get ~92
Get a single comment by ID, including its replies.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_comments_list ~444
List comments on a Google Doc. Returns open comments by default; set includeResolved=true to include resolved comments. Set locate=true (or pass tab) to attach each comment's tab and Docs index ranges as location.matches[] plus location.orphaned — that costs one extra document fetch, but only one for the whole listing, where gog_docs_comments_locate costs one per comment. Either flag additionally requires the Docs scope; the plain listing needs only Drive. matches[] always spans every tab, so a quote appearing in two tabs is visible as an ambiguity rather than silently resolved. tab keeps only comments with a match in that tab, which drops orphaned comments and comments that quote nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| all | boolean | – | Fetch all pages |
| docId | string | yes | Doc ID (from the URL) |
| includeResolved | boolean | – | Include resolved comments (default: false, open only) |
| locate | boolean | – | Attach each comment's tab and Docs index ranges (location.matches[] + location.orphaned) using one extra document fetch shared across the whole listing |
| max | integer | – | Max results |
| page | string | – | Deprecated alias for pageToken, accepted so existing callers keep working. Use pageToken — it matches the nextPageToken field in the response. |
| pageToken | string | – | Cursor for the NEXT page. Pass back the nextPageToken from a previous response verbatim, keeping the query and max identical: call once, then call again with pageToken=<that value>. A response with N… |
| since | string | – | Only return comments modified at or after this RFC3339 timestamp (e.g. 2026-06-01T00:00:00Z) |
| tab | string | – | Only return comments whose quoted text resolves inside this tab (title or ID). Implies locate, and drops orphaned and unquoted comments. |
No output schema declared.
No examples provided.
gog_docs_comments_locate ~192
Locate a comment's anchor in a Google Doc — resolves the comment's quoted text to its current Docs API index range, or reports the comment as orphaned if the quote can no longer be found (e.g. the anchored text was edited away). Read-only; useful before an index-based edit near a comment.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID to locate |
| docId | string | yes | Doc ID (from the URL) |
| matchCase | boolean | – | Case-sensitive matching of the comment quote |
| normalizeWhitespace | boolean | – | Collapse whitespace while matching the comment quote |
| tab | string | – | Target a specific tab by title or ID |
No output schema declared.
No examples provided.
gog_docs_comments_reopen ~96
Reopen a previously resolved comment (flip resolved → open).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID to reopen |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_comments_reply ~103
Reply to an existing comment on a Google Doc.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID to reply to |
| content | string | yes | Reply text |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_comments_resolve ~112
Resolve a comment (mark as done). Optionally include a closing message.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| commentId | string | yes | Comment ID to resolve |
| docId | string | yes | Doc ID (from the URL) |
| message | string | – | Optional message to include when resolving |
No output schema declared.
No examples provided.
gog_docs_copy ~110
Copy a Google Doc to a new document with the given title.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| parent | string | – | Parent folder ID to place the copy in |
| title | string | yes | Title for the new copy |
No output schema declared.
No examples provided.
gog_docs_create ~84
Create a new Google Doc. Returns JSON with the new docId and URL.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| title | string | yes | Title for the new document |
No output schema declared.
No examples provided.
gog_docs_delete ~315
Delete content within a Google Doc by character index range. To remove the entire document (move to Drive trash), use gog_docs_trash.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and delete that matched range, instead of supplying start/end indices. |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| docId | string | yes | Doc ID (from the URL) |
| end | number | – | End index (character position, exclusive). Required unless `at` is set. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| segment | string | – | Target an exact header, footer, or footnote segment ID (header/footer IDs come from gog_docs_header_list / gog_docs_footer_list; footnote segment IDs appear in gog_docs_read json mode) instead of the… |
| start | number | – | Start index (character position, 1-based). Required unless `at` is set. |
| tabId | string | – | Tab ID to delete content from (for multi-tab docs) |
No output schema declared.
No examples provided.
gog_docs_delete_tab ~116
Delete a tab (and its content) from a Google Doc. Identify the tab by title or ID. This permanently removes the tab and everything in it.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| tab | string | yes | Existing tab title or ID to delete |
No output schema declared.
No examples provided.
gog_docs_edit ~114
Edit a Google Doc by finding and replacing text (stream-edit style).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| find | string | yes | Text to find |
| matchCase | boolean | – | Case-sensitive matching |
| replace | string | yes | Replacement text |
No output schema declared.
No examples provided.
gog_docs_export ~150
Export a Google Doc as PDF, plain text, HTML, DOCX, or other format.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| format | string | – | Export format: pdf, txt, html, docx, rtf, odt, epub (default: pdf) |
| out | string | – | Output file path |
| overwrite | boolean | – | Overwrite the output file if it already exists (gog refuses otherwise) |
No output schema declared.
No examples provided.
gog_docs_find_range ~292
Map literal text in a Google Doc to its Docs API UTF-16 index range(s). Read-only helper for computing the start/end indices that index-based tools (gog_docs_delete, gog_docs_update --replace-range) need. Returns the first match by default; use occurrence to pick a specific one or all to return every match.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| all | boolean | – | Return all matches instead of just one |
| docId | string | yes | Doc ID (from the URL) |
| failEmpty | boolean | – | Treat no matches as an error instead of returning an empty result |
| matchCase | boolean | – | Case-sensitive matching |
| normalizeWhitespace | boolean | – | Collapse whitespace while matching |
| occurrence | integer | – | Return the Nth occurrence (1-based; default: first) |
| segment | string | – | Target an exact header, footer, or footnote segment ID (header/footer IDs come from gog_docs_header_list / gog_docs_footer_list; footnote segment IDs appear in gog_docs_read json mode) instead of the… |
| tab | string | – | Target a specific tab by title or ID |
| text | string | yes | Literal text to locate |
No output schema declared.
No examples provided.
gog_docs_find_replace ~99
Find and replace text in a Google Doc.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| find | string | yes | Text to find |
| replace | string | yes | Replacement text |
No output schema declared.
No examples provided.
gog_docs_footer_create ~276
Create a footer in a Google Doc and optionally populate its initial text. Returns the new footer segment ID.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and target the section at the start of the matched range |
| atEnd | boolean | – | Target end-of-doc/tab (mutually exclusive with index and at) |
| docId | string | yes | Doc ID (from the URL) |
| file | string | – | Read initial footer text from a file on the gog server. gog also accepts "-" for stdin, but this server never writes to gog's stdin, so "-" would hang until the call times out. |
| index | integer | – | Character index identifying the section the footer belongs to (1 = beginning). Omit or use atEnd for end-of-doc. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| tab | string | – | Target a specific tab by title or ID |
| text | string | – | Initial footer text |
No output schema declared.
No examples provided.
gog_docs_footer_delete ~120
Delete a footer from a Google Doc by its segment ID (from gog_docs_footer_list).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| footerId | string | yes | Footer segment ID (from gog_docs_footer_list) |
| tab | string | – | Tab title or ID containing the footer |
No output schema declared.
No examples provided.
gog_docs_footer_list ~133
List a Google Doc's footers and their segment IDs. Use a segment ID with the segment param on gog_docs_insert / gog_docs_update / gog_docs_delete / gog_docs_format / gog_docs_find_range to edit inside a footer.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| tab | string | – | Limit results to a tab title or ID |
No output schema declared.
No examples provided.
gog_docs_format ~836
Apply text or paragraph formatting to a Google Doc. Use `match` to format a specific text occurrence, `matchAll` to format every occurrence, or omit both to format the whole doc. Boolean flags (bold/italic/etc.) set the attribute; negated flags (noBold/noItalic/etc.) clear it.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| alignment | string | – | Paragraph alignment |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| bgColor | string | – | Text background color as #RRGGBB or #RGB |
| bold | boolean | – | Set bold |
| bulletPreset | string | – | Create a bulleted list with a specific Google Docs bullet glyph preset (e.g. BULLET_DISC_CIRCLE_SQUARE) |
| bullets | boolean | – | Turn the matched paragraphs into a bulleted list with the default disc preset |
| code | boolean | – | Apply code style (Courier New monospace + grey background) |
| docId | string | yes | Doc ID (from the URL) |
| fontFamily | string | – | Font family (e.g. Arial, Georgia) |
| fontSize | number | – | Font size in points |
| headingLevel | integer | – | Set paragraph named style to HEADING_1..HEADING_6 (shortcut for namedStyle=HEADING_N) |
| indentEnd | number | – | Paragraph end indentation in points |
| indentFirstLine | number | – | Paragraph first-line indentation in points |
| indentStart | number | – | Paragraph start indentation in points |
| italic | boolean | – | Set italic |
| keepLinesTogether | boolean | – | Keep all lines of the paragraph on one page/column (true) or clear that setting (false) |
| keepWithNext | boolean | – | Keep the paragraph with the next paragraph (true) or clear that setting (false) |
| lineSpacing | number | – | Line spacing percentage (e.g. 100 for single, 150 for 1.5x, 200 for double) |
| link | string | – | Set a hyperlink on the matched text. Accepts http://, https://, mailto:, #bookmarkId, or #heading-slug. |
| match | string | – | Format only the first text match |
| matchAll | boolean | – | Format all matches instead of only the first |
| matchCase | boolean | – | Case-sensitive matching |
| namedStyle | string | – | Set paragraph named style explicitly |
| noBold | boolean | – | Clear bold |
| noBullets | boolean | – | Remove bullets or numbering from the matched paragraphs |
| noItalic | boolean | – | Clear italic |
| noLink | boolean | – | Clear any hyperlink on the matched text |
| noStrikethrough | boolean | – | Clear strikethrough |
| noUnderline | boolean | – | Clear underline |
| ordered | boolean | – | Turn the matched paragraphs into a numbered list with the default decimal preset |
| segment | string | – | Target an exact header, footer, or footnote segment ID (header/footer IDs come from gog_docs_header_list / gog_docs_footer_list; footnote segment IDs appear in gog_docs_read json mode) instead of the… |
| spaceAbove | number | – | Space above the paragraph in points |
| spaceBelow | number | – | Space below the paragraph in points |
| spacingMode | string | – | Paragraph spacing collapse behavior: NEVER_COLLAPSE always keeps space-above/space-below; COLLAPSE_LISTS collapses spacing between list items |
| strikethrough | boolean | – | Set strikethrough |
| tab | string | – | Target tab title or ID |
| textColor | string | – | Text color as #RRGGBB or #RGB |
| underline | boolean | – | Set underline |
No output schema declared.
No examples provided.
gog_docs_header_create ~276
Create a header in a Google Doc and optionally populate its initial text. Returns the new header segment ID.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and target the section at the start of the matched range |
| atEnd | boolean | – | Target end-of-doc/tab (mutually exclusive with index and at) |
| docId | string | yes | Doc ID (from the URL) |
| file | string | – | Read initial header text from a file on the gog server. gog also accepts "-" for stdin, but this server never writes to gog's stdin, so "-" would hang until the call times out. |
| index | integer | – | Character index identifying the section the header belongs to (1 = beginning). Omit or use atEnd for end-of-doc. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| tab | string | – | Target a specific tab by title or ID |
| text | string | – | Initial header text |
No output schema declared.
No examples provided.
gog_docs_header_delete ~120
Delete a header from a Google Doc by its segment ID (from gog_docs_header_list).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| headerId | string | yes | Header segment ID (from gog_docs_header_list) |
| tab | string | – | Tab title or ID containing the header |
No output schema declared.
No examples provided.
gog_docs_header_list ~132
List a Google Doc's headers and their segment IDs. Use a segment ID with the segment param on gog_docs_insert / gog_docs_update / gog_docs_delete / gog_docs_format / gog_docs_find_range to edit inside a header.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| tab | string | – | Limit results to a tab title or ID |
No output schema declared.
No examples provided.
gog_docs_headings_list ~123
Enumerate headings in a Google Doc (a lightweight outline view), optionally filtered to one heading level.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| level | integer | – | Only return this heading level (1-6) |
| tab | string | – | Tab title or ID (omit for default) |
No output schema declared.
No examples provided.
gog_docs_images_list ~98
Enumerate inline/positioned images in a Google Doc.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
| tab | string | – | Tab title or ID (omit for default) |
No output schema declared.
No examples provided.
gog_docs_info ~83
Get Google Doc metadata: title, ID, and other properties.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| docId | string | yes | Doc ID (from the URL) |
No output schema declared.
No examples provided.
gog_docs_insert ~403
Insert text at a specific character index in a Google Doc. When `index` is omitted, gog defaults to 1 (the very beginning), NOT the end — sequential inserts without an explicit index produce reversed output. To append at the end of the doc, use gog_docs_append (which uses `gog docs write --append` and is the right tool for iterative document construction). To find a valid index for mid-document inserts, call gog_docs_structure or gog_docs_read first.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and insert at the start of the matched range, instead of computing an index. |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| content | string | – | Text content to insert |
| docId | string | yes | Doc ID (from the URL) |
| file | string | – | Path to a file whose content to insert |
| index | number | – | Character index to insert at (1-based; default: 1 = start of doc). Prefer gog_docs_append when you want to add at the end. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| segment | string | – | Target an exact header, footer, or footnote segment ID (header/footer IDs come from gog_docs_header_list / gog_docs_footer_list; footnote segment IDs appear in gog_docs_read json mode) instead of the… |
| tabId | string | – | Tab ID to insert into (for multi-tab docs) |
No output schema declared.
No examples provided.
gog_docs_insert_date_chip ~217
Insert a native Google Docs date smart chip, at a character index or end-of-doc.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| atEnd | boolean | – | Insert at end-of-doc/tab (mutually exclusive with index) |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| date | string | – | Date to insert as YYYY-MM-DD (default: today) |
| docId | string | yes | Doc ID (from the URL) |
| format | string | – | Date display format (default: abbreviated) |
| index | integer | – | Character index to insert at. Omit or use atEnd for end-of-doc. |
| tab | string | – | Target a specific tab by title or ID |
No output schema declared.
No examples provided.
gog_docs_insert_footnote ~299
Insert a footnote at a character index (or end-of-doc) and populate its text. The footnote reference mark is placed in the body; the footnote content goes in the new footnote segment.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and place the reference mark at the start of the matched range |
| atEnd | boolean | – | Target end-of-doc/tab (mutually exclusive with index and at) |
| docId | string | yes | Doc ID (from the URL) |
| file | string | – | Read footnote text from a file on the gog server. gog also accepts "-" for stdin, but this server never writes to gog's stdin, so "-" would hang until the call times out. |
| index | integer | – | Character index to place the reference mark at (1 = beginning). Omit or use atEnd for end-of-doc. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| tab | string | – | Target a specific tab by title or ID |
| text | string | – | Footnote text |
No output schema declared.
No examples provided.
gog_docs_insert_horizontal_rule ~250
Insert a horizontal rule (paragraph border) at a character index (or end-of-doc).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Google account email to use, e.g. you@gmail.com — must be the full address, not a bare username. Overrides the GOG_ACCOUNT env var. Omit to use the single configured account. |
| at | string | – | Anchor by literal text and insert at the start of the matched range |
| atEnd | boolean | – | Target end-of-doc/tab (mutually exclusive with index and at) |
| batch | string | – | Append this mutation to a persisted batch (from gog_batch_begin) instead of applying it — nothing changes in the doc until gog_batch_end submits the batch. |
| docId | string | yes | Doc ID (from the URL) |
| index | integer | – | Character index to insert at (1 = beginning). Omit or use atEnd for end-of-doc. |
| matchCase | boolean | – | Case-sensitive `at` matching |
| occurrence | integer | – | Use the Nth `at` match (1-based; required when `at` is ambiguous) |
| tab | string | – | Target a specific tab by title or ID |
No output schema declared.
No examples provided.
What is the io.github.chrischall/gogcli-mcp-docs server?
io.github.chrischall/gogcli-mcp-docs is listed in the public MCP registry as io.github.chrischall/gogcli-mcp-docs. Extended Google Docs for Claude via gogcli, auth + full Docs and comments support. This page covers its npm package (gogcli-mcp-docs).
Is the io.github.chrischall/gogcli-mcp-docs server safe to use?
io.github.chrischall/gogcli-mcp-docs scores 93 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.chrischall/gogcli-mcp-docs server expose?
io.github.chrischall/gogcli-mcp-docs exposes 83 tools: gog_auth_list, gog_auth_status, gog_auth_health, gog_auth_services, gog_auth_add, and 78 more. Their descriptions and schemas cost roughly 16,539 tokens of context every time the server is loaded.
Is the io.github.chrischall/gogcli-mcp-docs server still maintained?
io.github.chrischall/gogcli-mcp-docs is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.chrischall/gogcli-mcp-docs server under?
io.github.chrischall/gogcli-mcp-docs declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.