1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <link rel="icon" href="./favicon.png" /> 6 <link 7 rel="apple-touch-icon" 8 href="./apple-touch-icon.png" 9 /> 10 <meta name="viewport" content="width=device-width, initial-scale=1" /> 11 <meta name="theme-color" content="#0B1F33" /> 12
12<script> 13 document.documentElement.classList.add("js"); 14 </script>
14 15 <link href="./_app/immutable/entry/start.CKoYa73z.js" rel="modulepreload"> 16 <link href="./_app/immutable/chunks/D-YiHRmw.js" rel="modulepreload"> 17 <link href="./_app/immutable/chunks/Df_nk_mV.js" rel="modulepreload"> 18 <link href="./_app/immutable/chunks/vP97m1hC.js" rel="modulepreload"> 19 <link href="./_app/immutable/chunks/DuCc3f1Z.js" rel="modulepreload"> 20 <link href="./_app/immutable/chunks/OA8UcISh.js" rel="modulepreload"> 21 <link href="./_app/immutable/chunks/BmSBgxe-.js" rel="modulepreload"> 22 <link href="./_app/immutable/entry/app.DWFS0oec.js" rel="modulepreload"> 23 <link href="./_app/immutable/chunks/Bzak7iHL.js" rel="modulepreload"> 24 <link href="./_app/immutable/chunks/BTP5hFK4.js" rel="modulepreload"> 25 <link href="./_app/immutable/chunks/Eh-g2fT9.js" rel="modulepreload"> 26 <link href="./_app/immutable/chunks/B0HvJBXs.js" rel="modulepreload"> 27 <link href="./_app/immutable/chunks/Hcf9I-DG.js" rel="modulepreload"> 28 <link href="./_app/immutable/nodes/0.C04qz1t_.js" rel="modulepreload"> 29 <link href="./_app/immutable/chunks/B2hhroed.js" rel="modulepreload"> 30 <link href="./_app/immutable/chunks/CmrwdnUX.js" rel="modulepreload"> 31 <link href="./_app/immutable/chunks/C_KZ5yXO.js" rel="modulepreload"> 32 <link href="./_app/immutable/chunks/BMIIZ-SA.js" rel="modulepreload"> 33 <link href="./_app/immutable/chunks/D0N0oQQ0.js" rel="modulepreload"> 34 <link href="./_app/immutable/chunks/CNDWCKFF.js" rel="modulepreload"> 35 <link href="./_app/immutable/nodes/5.NjoesrxT.js" rel="modulepreload"> 36 <link href="./_app/immutable/chunks/BGxF4ZAg.js" rel="modulepreload"> 37 <link href="./_app/immutable/chunks/Cdv2Obmx.js" rel="modulepreload"> 38 <link href="./_app/immutable/chunks/DYTad9pk.js" rel="modulepreload"> 39 <link href="./_app/immutable/chunks/DenYb6KV.js" rel="modulepreload"> 40 <link href="./_app/immutable/chunks/DTQvLXI-.js" rel="modulepreload"> 41 <link href="./_app/immutable/chunks/C2-nan7q.js" rel="modulepreload"> 42 <link href="./_app/immutable/chunks/cNe8A89h.js" rel="modulepreload"> 43 <link href="./_app/immutable/chunks/CW-5LRlf.js" rel="modulepreload"> 44 <!--12qhfyh--><meta property="og:site_name" content="Workspace MCP"/><!----><!--1xmjmrw--><meta name="description" content="Documentation for Google Workspace MCP including OAuth 2.1, streamable HTTP transport, CLI mode, tool tiers, and complete tool reference for Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Contacts, Chat, Search, and Apps Script."/> <meta name="keywords" content="google workspace mcp docs, google workspace mcp documentation, oauth 2.1 mcp, streamable http mcp, workspace mcp cli, workspace mcp tool tiers, gmail mcp api, drive mcp tools, docs mcp, sheets mcp, apps script mcp"/> <link rel="canonical" href="https://workspacemcp.com/docs"/> <meta property="og:title" content="Google Workspace MCP Documentation - OAuth 2.1, CLI, Tool Tiers, and Full Service Reference"/> <meta property="og:description" content="Documentation for Google Workspace MCP including OAuth 2.1, streamable HTTP transport, CLI mode, tool tiers, and complete tool reference."/> <meta property="og:url" content="https://workspacemcp.com/docs"/> <meta property="og:type" content="website"/> <meta property="og:image" content="https://workspacemcp.com/og-cover.png"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:image" content="https://workspacemcp.com/og-cover.png"/> <!---->
44<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://workspacemcp.com/#organization","name":"Workspace MCP","url":"https://workspacemcp.com","logo":"https://workspacemcp.com/favicon.png","sameAs":["https://github.com/taylorwilsdon/google_workspace_mcp"]},{"@type":"SoftwareApplication","@id":"https://workspacemcp.com/#software","name":"Google Workspace MCP Server","alternateName":["workspace-mcp","Google Workspace MCP","Gmail MCP","Google Drive MCP","Google Docs MCP","Google Sheets MCP","Google Calendar MCP","workspace-mcp server","mcp google workspace","google workspace mcp server"],"applicationCategory":"DeveloperApplication","operatingSystem":"Cross-platform","url":"https://workspacemcp.com","downloadUrl":"https://github.com/taylorwilsdon/google_workspace_mcp/releases","softwareVersion":"1.28.0","license":"https://opensource.org/licenses/MIT","isAccessibleForFree":true,"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@id":"https://workspacemcp.com/#organization"},"description":"Connect AI assistants to Gmail, Drive, Docs, Sheets, Slides, Forms, Calendar, Chat, Tasks, Contacts, Apps Script, and Custom Search via the Model Context Protocol. Open source with OAuth 2.1, CLI support, and custom connector setup.","featureList":["Gmail MCP integration","Google Drive MCP integration","Google Docs MCP integration","Google Sheets MCP integration","Google Calendar MCP integration","Google Slides MCP integration","Google Forms MCP integration","Google Chat MCP integration","Google Tasks MCP integration","Google Contacts MCP integration","Google Apps Script MCP integration","Google Custom Search MCP integration","OAuth 2.1 multi-user authentication","Full CLI mode for Claude Code and Codex","Claude Desktop custom connector setup"]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://workspacemcp.com"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https://workspacemcp.com/docs"}]}]}</script>
44<!----><!----><title>Google Workspace MCP Server</title> 45 <link href="./_app/immutable/assets/0.DQ3vTs47.css" rel="stylesheet"> 46 <link href="./_app/immutable/assets/CleanSection.tn0RQdqM.css" rel="stylesheet"> 47 <link href="./_app/immutable/assets/CloudNudge.B1IKA-Lr.css" rel="stylesheet"> 48 <link href="./_app/immutable/assets/DocsVersion.C2C7FrqR.css" rel="stylesheet"> 49 <link href="./_app/immutable/assets/5.Bl_4py0b.css" rel="stylesheet"> 50 <!-- Ensure all animated content is visible to crawlers and no-JS users --> 51 <noscript> 52 <style> 53 .hero-text, 54 .hero-visual, 55 .section-head, 56 .install-layout, 57 .fade-up, 58 .demo-frame, 59 .step { 60 opacity: 1 !important; 61 transform: none !important; 62 } 63 </style> 64 </noscript> 65 </head> 66 <body data-sveltekit-preload-data="hover"> 67 <div style="display: contents"><!--[--><!--[0--><!--[--><div class="layout-container svelte-12qhfyh"><nav class="nav svelte-1h32yp1"><div class="nav-inner svelte-1h32yp1"><a href="/" class="nav-logo svelte-1h32yp1"><span class="logo-mark svelte-1h32yp1">W</span> <span class="logo-text svelte-1h32yp1">Workspace MCP</span></a> <div class="nav-links svelte-1h32yp1"><!--[--><a href="/quick-start" class="nav-link svelte-1h32yp1">Quick Start</a><a href="/guides" class="nav-link svelte-1h32yp1">Guides</a><a href="/docs" class="nav-link svelte-1h32yp1 nav-link--active">Docs</a><!--]--> <div class="nav-dropdown svelte-1h32yp1"><button type="button" class="nav-link nav-link--trigger svelte-1h32yp1" aria-expanded="false" aria-haspopup="true" aria-controls="tools-menu">Tools <svg class="chevron svelte-1h32yp1" fill="none" stroke="currentColor" viewBox="0 0 24 24" width="12" height="12" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M19 9l-7 7-7-7"></path></svg></button> <!--[-1--><!--]--></div> <!--[--><a href="/workspace-mcp-cloud" class="nav-link svelte-1h32yp1">Cloud Plans</a><!--]--></div> <div class="nav-actions svelte-1h32yp1"><a href="https://github.com/taylorwilsdon/google_workspace_mcp" target="_blank" rel="noopener noreferrer" class="nav-github svelte-1h32yp1" aria-label="View on GitHub"><svg fill="currentColor" viewBox="0 0 20 20" width="20" height="20"><path fill-rule="evenodd" d="M10 0C4.477 0 0 4.484 0 10.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0110 4.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.203 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.942.359.31.678.921.678 1.856 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0020 10.017C20 4.484 15.522 0 10 0z" clip-rule="evenodd"></path></svg></a> <a href="/quick-start" class="nav-cta svelte-1h32yp1">Get Started</a></div> <button type="button" class="mobile-toggle svelte-1h32yp1" aria-label="Open menu"><!--[-1--><svg fill="none" stroke="currentColor" viewBox="0 0 24 24" width="22" height="22"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 6h16M4 12h16M4 18h16"></path></svg><!--]--></button></div> <!--[-1--><!--]--></nav><!----> <main class="main-content svelte-12qhfyh"><!--[--><!--[--><header class="docs-hero svelte-1xmjmrw"><div class="container svelte-1xmjmrw"><nav class="crumbs svelte-1xmjmrw" aria-label="Breadcrumb"><a href="/" class="svelte-1xmjmrw">
67Home</a> <span class="crumb-sep svelte-1xmjmrw">/</span> <span aria-current="page">Documentation</span></nav> <div class="hero-grid svelte-1xmjmrw"><div class="hero-main"><h1 class="hero-title svelte-1xmjmrw">Documentation</h1> <p class="hero-lede svelte-1xmjmrw">Current reference for authentication, transport modes, CLI usage, and all Google Workspace tool groups.</p> <p class="docs-version docs-version--inline svelte-1807my1"><svg class="mark svelte-1807my1" width="13" height="13" viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg> <span>Synced with <a href="https://github.com/taylorwilsdon/google_workspace_mcp/releases/tag/v1.28.0" rel="noopener" class="svelte-1807my1">v1.28.0</a> · <time datetime="2026-09-21">September 21, 2026</time></span> <!--[-1--><!--]--></p><!----></div> <aside class="hero-side svelte-1xmjmrw"><span class="side-label svelte-1xmjmrw">Run the server</span> <code class="side-cmd svelte-1xmjmrw"><span class="dim svelte-1xmjmrw">$</span> uvx workspace-mcp --tool-tier core</code> <p class="side-note svelte-1xmjmrw">New here? The <a href="/quick-start" class="svelte-1xmjmrw">quick start</a> walks install, 68 OAuth, and client hookup in five steps.</p></aside></div></div></header> <div class="docs-body svelte-1xmjmrw"><div class="two-column-layout"><aside class="sidebar"><div class="sidebar-content svelte-1xmjmrw"><h2 class="sidebar-title svelte-1xmjmrw">MCP Tools</h2> <div class="search-container "><input class="search-input" type="text" placeholder="Search tools and sections..." value="" aria-label="Search tools and sections..."/></div><!----> <nav><ul class="doc-nav svelte-1xmjmrw"><!--[--><li><a href="#authentication" class="doc-nav__link svelte-1xmjmrw">Authentication</a></li><li><a href="#server-modes" class="doc-nav__link svelte-1xmjmrw">Server Modes and CLI</a></li><li><a href="#google-calendar" class="doc-nav__link svelte-1xmjmrw">Google Calendar MCP</a></li><li><a href="#google-drive" class="doc-nav__link svelte-1xmjmrw">Google Drive MCP</a></li><li><a href="#gmail" class="doc-nav__link svelte-1xmjmrw">Gmail MCP</a></li><li><a href="#google-docs" class="doc-nav__link svelte-1xmjmrw">Google Docs MCP</a></li><li><a href="#google-sheets" class="doc-nav__link svelte-1xmjmrw">Google Sheets MCP</a></li><li><a href="#google-slides" class="doc-nav__link svelte-1xmjmrw">Google Slides MCP</a></li><li><a href="#google-forms" class="doc-nav__link svelte-1xmjmrw">Google Forms MCP</a></li><li><a href="#google-tasks" class="doc-nav__link svelte-1xmjmrw">Google Tasks MCP</a></li><li><a href="#google-contacts" class="doc-nav__link svelte-1xmjmrw">Google Contacts MCP</a></li><li><a href="#google-chat" class="doc-nav__link svelte-1xmjmrw">Google Chat MCP</a></li><li><a href="#google-search" class="doc-nav__link svelte-1xmjmrw">Google Custom Search MCP</a></li><li><a href="#google-apps-script" class="doc-nav__link svelte-1xmjmrw">Google Apps Script MCP</a></li><!--]--></ul></nav> <a href="/docs/deployment" class="deployment-link svelte-1xmjmrw">Advanced Deployment â <span class="svelte-1xmjmrw">Reverse proxy, origin validation, credential stores & env vars</span></a> <!--[-1--><!--]--><!----></div></aside> <main class="main-content"><!--[--><section id="authentication"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Authentication</h3> <p class="doc-card__description">Legacy OAuth 2.0 and OAuth 2.1 multi-user flows, including stateless and external-provider modes.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">auth/</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Enable Google Cloud APIs</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Enable the API for each service you plan to use, in the same Google Cloud project as your OAuth client. Eac
68h link opens the Cloud Console enable flow for whichever project is currently selected, so check the project picker first. To enable them all from the CLI instead, run the <!--]--><!--[0--><code class="svelte-1xmjmrw">gcloud</code><!--]--><!--[-1--> command below with your project ID, dropping any services you will not use. Calls to a service whose API is disabled fail with a 403 <!--]--><!--[0--><code class="svelte-1xmjmrw">SERVICE_DISABLED</code><!--]--><!--[-1--> error. Google Chat also needs a Chat app configured on the Chat API Configuration tab before it accepts requests.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[0--><table class="param-table apis-table svelte-1xmjmrw"><thead><tr><th>Enable</th><th>API ID</th><th>Used by</th></tr></thead><tbody><!--[--><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=gmail.googleapis.com" target="_blank" rel="noopener noreferrer">Gmail API</a></td><td><code class="svelte-1xmjmrw">gmail.googleapis.com</code></td><td><a href="#gmail">Gmail MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com" target="_blank" rel="noopener noreferrer">Google Drive API</a></td><td><code class="svelte-1xmjmrw">drive.googleapis.com</code></td><td><a href="#google-drive">Google Drive MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=calendar-json.googleapis.com" target="_blank" rel="noopener noreferrer">Google Calendar API</a></td><td><code class="svelte-1xmjmrw">calendar-json.googleapis.com</code></td><td><a href="#google-calendar">Google Calendar MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=docs.googleapis.com" target="_blank" rel="noopener noreferrer">Google Docs API</a></td><td><code class="svelte-1xmjmrw">docs.googleapis.com</code></td><td><a href="#google-docs">Google Docs MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=sheets.googleapis.com" target="_blank" rel="noopener noreferrer">Google Sheets API</a></td><td><code class="svelte-1xmjmrw">sheets.googleapis.com</code></td><td><a href="#google-sheets">Google Sheets MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=slides.googleapis.com" target="_blank" rel="noopener noreferrer">Google Slides API</a></td><td><code class="svelte-1xmjmrw">slides.googleapis.com</code></td><td><a href="#google-slides">Google Slides MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=forms.googleapis.com" target="_blank" rel="noopener noreferrer">Google Forms API</a></td><td><code class="svelte-1xmjmrw">forms.googleapis.com</code></td><td><a href="#google-forms">Google Forms MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=tasks.googleapis.com" target="_blank" rel="noopener noreferrer">Google Tasks API</a></td><td><code class="svelte-1xmjmrw">tasks.googleapis.com</code></td><td><a href="#google-tasks">Google Tasks MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=people.googleapis.com" target="_blank" rel="noopener noreferrer">People API</a></td><td><code class="svelte-1xmjmrw">people.googleapis.com</code></td><td><a href="#google-contacts">Google Contacts MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=chat.googleapis.com" target="_blank" rel="noopener noreferrer">Google Chat API</a></td><td><code class="svelte-1xmjmrw">chat.googleapis.com</code></td><td><a href="#google-chat">Google Chat MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=customsearch.googleapis.com" target="_blank" rel="noopener noreferrer">Custom Search API</a></td><td><code class="svelte-1xmjmrw">customsearch.googleapis.com</code></td><td><a href="#google-search">Google Custom Search MCP</a></td></tr><tr><td><a href="https://console.cloud.google.com/flows/enableapi?apiid=script.googleapis.com" target="_blank" rel="noopener noreferrer">Apps Script API</a></td><td><code class="svelte-1xmjmrw">script.googleapis.com</code></td><td><a href="#google-apps-script">Google Apps Script MCP</a></td></tr><!--]--></tbody></table> <div class="code-block-container"><!--[0--><button class="code-copy-button" aria-label="Copy code to clipboard">Copy</button><!--]--> <pre class="code-block"><code>gcloud services enable \ 69 gmail.googleapis.com \ 70 drive.googleapis.com \ 71 calendar-json.googleapis.com \ 72 docs.googleapis.com \ 73 sheets.googleapis.com \ 74 slides.googleapis.com \ 75 forms.googleapis.com \ 76 tasks.googleapis.com \ 77 people.googleapis.com \ 78 chat.googleapis.com \ 79 customsearch.googleapis.com \ 80 script.googleapis.com \ 81 --project=PROJECT_ID</code></pre></div><!----><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">OAuth 2.1 (Multi-User)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Enable with <!--]--><!--[0--><code class="svelte-1xmjmrw">MCP_ENABLE_OAUTH21=true</code><!--]--><!--[-1--> and run HTTP transport (<!--]--><!--[0--><code class="svelte-1xmjmrw">--transport streamable-http</code><!--]--><!--[-1-->). This is the recommended mode for modern MCP clients and bearer-token auth.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>MCP_ENABLE_OAUTH21</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Set to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">true</code><!--]--><!--[-1--> to enable OAuth 2.1 mode.<!--]--><!--]--></td></tr><tr><td><code>--transport streamable-http</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Required transport for OAuth 2.1 and full MCP compliance.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Legacy OAuth 2.0 (Single-User / Fallback)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Default mode when OAuth 2.1 is not enabled. Use this for older clients that do not support OAuth 2.1. <!--]--><!--[0--><code class="svelte-1xmjmrw">--single-user</code><!--]--><!--[-1--> cannot be combined with OAuth 2.1.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>--single-user</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Legacy single-user flow; mutually exclusive with OAuth 2.1.<!--]--><!--]--></td></tr><tr><td><code>OAUTHLIB_INSECURE_TRANSPORT</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Set to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">1</code><!--]--><!--[-1--> only for local HTTP development callbacks.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Stateless Mode</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Container-friendly mode with no filesystem writes. Requires OAuth 2.1 and bearer tokens on requests.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_MCP_STATELESS_MODE</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Set to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">true</code><!--]--><!--[-1--> (requires OAuth 2.1).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">External OAuth 2.1 Provider</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Use when your app handles OAuth externally. The server skips local OAuth flow and validates incoming bearer tokens.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>EXTERNAL_OAUTH21_PROVIDER</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Set to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">true</code><!--]--><!--[-1--> with <!--]--><!--[0--><code class="desc-code svelte-107eqh3">MCP_ENABLE_OAUTH21=true</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">OAuth Proxy Storage Backends</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Select proxy storage backend for OAuth state in distributed deployments.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->One of <!--]--><!--[0--><code class="desc-code svelte-107eqh3">memory</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">disk</code><!--]--><!--[-1-->, or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">valkey</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_OAUTH_PROXY_DISK_DIRECTORY</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Disk backend path.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_OAUTH_PROXY_VALKEY_HOST</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Valkey/Redis host for distributed storage.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Service Account with Domain-Wide Delegation</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Authenticate as a service account and impersonate domain users. When a tool call supplies <!--]--><!--[0--><code class="svelte-1xmjmrw">user_google_email</code><!--]--><!--[-1-->, it is used as the per-request impersonation subject, so one server instance can act for multiple domain users; <!--]--><!--[0--><code class="svelte-1xmjmrw">USER_GOOGLE_EMAIL</code><!--]--><!--[-1--> is the fallback subject.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>GOOGLE_SERVICE_ACCOUNT_KEY_FILE</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Path to the service account JSON key file (or use <!--]--><!--[0--><code class="desc-code svelte-107eqh3">GOOGLE_SERVICE_ACCOUNT_KEY_JSON</code><!--]--><!--[-1--> inline â set one, not both).<!--]--><!--]--></td></tr><tr><td><code>USER_GOOGLE_EMAIL</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Fallback impersonation subject when a tool call supplies no email.<!--]--><!--]--></td></tr><tr><td><code>DWD_ALLOWED_DOMAINS</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Comma-separated domain allowlist for per-request impersonation. Unset allows any email the delegation scope accepts.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">OAuth Consent Page Branding</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Customize the OAuth 2.1 consent page shown to users during authorization.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_MCP_BRAND_NAME</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Server name shown on the consent page.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_BRAND_ICON_URL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Consent-page logo (hosted URL or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">data:</code><!--]--><!--[-1--> URI), shown at 64px wide.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_BRAND_WEBSITE_URL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Website link shown on the consent page.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="server-modes"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Server Modes and CLI</h3> <p class="doc-card__description">Transport guidance, CLI mode, tool tiers, and permission filtering options.
81</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">main.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">HTTP Transport (Recommended)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Run with <!--]--><!--[0--><code class="svelte-1xmjmrw">--transport streamable-http</code><!--]--><!--[-1--> for Claude Code, VS Code MCP, MCP Inspector, and OAuth 2.1 support.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Stdio Transport (Legacy)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Use only for clients with incomplete MCP support. Not recommended for modern multi-user flows.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">CLI Mode (`--cli`)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Directly list and invoke tools from the command line without running the full MCP server process.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>--cli list --json</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List tools for scripting and automation.<!--]--><!--]--></td></tr><tr><td><code>--cli <tool> --args <json></code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Invoke a specific tool with JSON args.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Tool Tiers</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Three cumulative tiers for simplified deployments: <!--]--><!--[0--><code class="svelte-1xmjmrw">core</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="svelte-1xmjmrw">extended</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="svelte-1xmjmrw">complete</code><!--]--><!--[-1-->.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>--tool-tier core|extended|complete</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Scope loaded tools to the selected tier.<!--]--><!--]--></td></tr><tr><td><code>--disabled-tools TOOL_NAME ...</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Block individual tools by name regardless of tier or permission selection. Composes with every other filtering option. Env var: <!--]--><!--[0--><code class="desc-code svelte-107eqh3">WORKSPACE_MCP_DISABLED_TOOLS</code><!--]--><!--[-1--> (comma-separated).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Read-Only and Granular Permissions</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[0--><code class="svelte-1xmjmrw">--read-only</code><!--]--><!--[-1--> requests readonly scopes and hides write tools. <!--]--><!--[0--><code class="svelte-1xmjmrw">--permissions</code><!--]--><!--[-1--> sets a per-service access level and implicitly selects which services load â only the services you list are imported. Levels are cumulative: each one includes every level to its left. Mutually exclusive with <!--]--><!--[0--><code class="svelte-1xmjmrw">--read-only</code><!--]--><!--[-1--> and <!--]--><!--[0--><code class="svelte-1xmjmrw">--tools</code><!--]--><!--[-1-->; combine with <!--]--><!--[0--><code class="svelte-1xmjmrw">--tool-tier</code><!--]--><!--[-1--> to narrow further within the selected services.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>--read-only</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Requests readonly scopes and filters write tools.<!--]--><!--]--></td></tr><tr><td><code>--permissions service:level ...</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Space-separated per-service access levels, for example <!--]--><!--[0--><code class="desc-code svelte-107eqh3">--permissions gmail:send drive:readonly</code><!--]--><!--[-1-->. Env var: <!--]--><!--[0--><code class="desc-code svelte-107eqh3">WORKSPACE_MCP_PERMISSIONS</code><!--]--><!--[-1--> (space-separated).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[0--><table class="param-table levels-table svelte-1xmjmrw"><thead><tr><th>Service</th><th>Levels (least to most permissive)</th><th>Notes</th></tr></thead><tbody><!--[--><tr><td><code class="svelte-1xmjmrw">gmail</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">organize</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">drafts</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">send</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">organize</code><!--]--><!--[-1--> adds labels and modify, <!--]--><!--[0--><code class="svelte-1xmjmrw">drafts</code><!--]--><!--[-1--> adds compose, <!--]--><!--[0--><code class="svelte-1xmjmrw">send</code><!--]--><!--[-1--> adds sending, <!--]--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds basic settings.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">drive</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds full Drive access plus per-file access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">calendar</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds calendar and event write access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">docs</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[-1-->Both levels include Drive readonly; <!--]--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds document write plus per-file Drive access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">sheets</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[-1-->Both levels include Drive readonly; <!--]--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds spreadsheet write access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">slides</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds presentation write access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">forms</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds form editing; responses stay read-only at both levels.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">chat</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds message and space write access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">tasks</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">manage</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">manage</code><!--]--><!--[-1--> creates and updates tasks but denies <!--]--><!--[0--><code class="svelte-1xmjmrw">delete</code><!--]--><!--[-1--> and <!--]--><!--[0--><code class="svelte-1xmjmrw">clear_completed</code><!--]--><!--[-1-->; <!--]--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> lifts those restrictions.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">contacts</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds contact write access.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">search</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[-1-->Programmable Search is read-only by nature â both levels request the same scope.<!--]--><!--]--></td></tr><tr><td><code class="svelte-1xmjmrw">appscript</code></td><td><!--[--><!--[-1--><!--]--><code class="svelte-1xmjmrw">readonly</code><!--[0--><span class="level-sep svelte-1xmjmrw" aria-hidden="true">âº</span><!--]--><code class="svelte-1xmjmrw">full</code><!--]--></td><td><!--[--><!--[-1-->Readonly covers projects, deployments, processes, and metrics; <!--]--><!--[0--><code class="svelte-1xmjmrw">full</code><!--]--><!--[-1--> adds project and deployment write.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Reverse Proxy OAuth URL Overrides</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Use external URL overrides when running behind a reverse proxy so generated OAuth endpoints match public domains.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_EXTERNAL_URL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Sets a public base URL for OAuth-related endpoints.<!--]--><!--]--></td></tr><tr><td><code>GOOGLE_OAUTH_REDIRECT_URI</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Override only the OAuth callback URL.<!--]--><!--]--></td></tr><tr><td><code>OAUTH_CUSTOM_REDIRECT_URIS</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Comma-separated additional redirect URIs.<!--]--><!--]--></td></tr><tr><td><code>OAUTH_ALLOWED_ORIGINS</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Comma-separated additional CORS origins.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Attachment Storage</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Downloaded Gmail/Drive attachments are stored in persistent local storage and exposed by URL in HTTP mode.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_ATTACHMENT_DIR</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Override the default <!--]--><!--[0--><code class="desc-code svelte-107eqh3">~/.workspace-mcp/attachments/</code><!--]--><!--[-1--> location.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">OpenTelemetry Tracing (Optional)</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Distributed tracing via the <!--]--><!--[0--><code class="svelte-1xmjmrw">otel</code><!--]--><!--[-1--> extra (<!--]--><!--[0--><code class="svelte-1xmjmrw">pip install "workspace-mcp[otel]"</code><!--]--><!--[-1-->, included in the Docker image). Tracing is fully disabled unless an OTLP endpoint is configured; spans export only to the collector you specify. Standard OTLP variables for headers, TLS, sampling, and batching are honored.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>OTEL_EXPORTER_OTLP_ENDPOINT</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->OTLP collector endpoint. Unset means tracing is disabled.<!--]--><!--]--></td></tr><tr><td><code>OTEL_EXPORTER_OTLP_PROTOCOL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">grpc</code><!--]--><!--[-1--> (default) or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">http/protobuf</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>OTEL_SERVICE_NAME</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Service name â defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">google-workspace-mcp</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_OTEL_USER_EMAIL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Set <!--]--><!--[0--><code class="desc-code svelte-107eqh3">true</code><!--]--><!--[-1--> to record the authenticated user's email on spans. PII â off by default.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">Logging</h4> <!--[-1--><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Server logs default to <!--]--><!--[0--><code class="svelte-1xmjmrw">INFO</code><!--]--><!--[-1-->. <!--]--><!--[0--><code class="svelte-1xmjmrw">DEBUG</code><!--]--><!--[-1--> includes companion lines that may contain user text, so enable it only when needed and treat its output as sensitive.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>WORKSPACE_MCP_LOG_LEVEL</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">CRITICAL</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">ERROR</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">WARNING</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">INFO</code><!--]--><!--[-1--> (default), or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">DEBUG</code><!--]--><!--[-1-->. Invalid values fall back to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">INFO</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>WORKSPACE_MCP_LOG_DIR</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Directory for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">mcp_server_debug.log</code><!--]--><!--[-1--> â defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">~/.google_workspace_mcp/logs</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-calendar"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Calendar MCP</h3> <p class="doc-card__description">Calendar operations with consolidated event management, availability, and working-status tooling.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gcalendar/calendar_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_calendars</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Lists calendars accessible to the authenticated user.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>max_results</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum calendars to return in one page.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for the next page, taken from a previous response. Responses include a next page token whenever more calendars remain.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_events</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieves events for a calendar and time range.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>calendar_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">primary</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>time_min</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->RFC3339 or date.<!--]--><!--]--></td></tr><tr><td><code>time_max</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->RFC3339 or date.<!--]--><!--]--></td></tr><tr><td><code>max_results</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum events to return.<!--]--><!--]--></td></tr><tr><td><code>single_events</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to expand recurring series into individual instances. Defaults to true. Set to false to retrieve recurring master events and their RFC 5545 recurrence rules.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for the next page, taken from a previous response. With <!--]--><!--[0--><code class="desc-code svelte-107eqh3">single_events</code><!--]--><!--[-1--> true, also pass the response's pagination <!--]--><!--[0--><code class="desc-code svelte-107eqh3">time_min</code><!--]--><!--[-1--> as <!--]--><!--[0--><code class="desc-code svelte-107eqh3">time_min</code><!--]--><!--[-1--> (even if you omitted it on the first call) and keep every other query parameter unchanged. Ignored when <!--]--><!--[0--><code class="desc-code svelte-107eqh3">event_id</code><!--]--><!--[-1--> is set.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_event</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Consolidated create, update, and delete event operations.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1-->, or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>event_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1--> and <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>start_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Start time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->). A timestamp with a UTC offset is kept as that exact instant; omit the offset and pass a timezone to book a local wall-clock time. Date-only values create all-day events.<!--]--><!--]--></td></tr><tr><td><code>end_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->End time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->). Same offset rules as <!--]--><!--[0--><code class="desc-code svelte-107eqh3">start_time</code><!--]--><!--[-1-->; all-day end dates are exclusive.<!--]--><!--]--></td></tr><tr><td><code>start_timezone</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->IANA timezone for the start boundary, overriding the shared <!--]--><!--[0--><code class="desc-code svelte-107eqh3">timezone</code><!--]--><!--[-1-->. Offset-bearing timestamps keep their instant; offset-free ones are read as local time in this zone.<!--]--><!--]--></td></tr><tr><td><code>end_timezone</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->IANA timezone for the end boundary, overriding the shared <!--]--><!--[0--><code class="desc-code svelte-107eqh3">timezone</code><!--]--><!--[-1-->. Use separate boundary zones for events such as flights whose departure and arrival have different local times.<!--]--><!--]--></td></tr><tr><td><code>attachments</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Drive file IDs or share URLs to attach. On <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1--> the list replaces the event's existing attachments rather than adding to them, so pass the full set you want to keep.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_calendar</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create a new secondary Google Calendar.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>summary</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Name for the new calendar.<!--]--><!--]--></td></tr><tr><td><code>description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional calendar description.<!--]--><!--]--></td></tr><tr><td><code>timezone</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->
81IANA timezone (e.g., "America/New_York").<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">query_freebusy</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Query free/busy information across one or more calendars.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>time_min</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Start of the window (RFC3339).<!--]--><!--]--></td></tr><tr><td><code>time_max</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->End of the window (RFC3339).<!--]--><!--]--></td></tr><tr><td><code>calendar_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Calendar IDs to query. Defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">primary</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>group_expansion_max</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum calendars to expand per group.<!--]--><!--]--></td></tr><tr><td><code>calendar_expansion_max</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum calendars for which to return busy information.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_out_of_office</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, list, update, or delete Out of Office events.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">list</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1-->, or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>start_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Start time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->).<!--]--><!--]--></td></tr><tr><td><code>end_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->End time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->).<!--]--><!--]--></td></tr><tr><td><code>summary</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Event title.<!--]--><!--]--></td></tr><tr><td><code>auto_decline_mode</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->How conflicting meetings are declined.<!--]--><!--]--></td></tr><tr><td><code>decline_message</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Message sent with auto-declines.<!--]--><!--]--></td></tr><tr><td><code>recurrence</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->RRULE strings for recurring events.<!--]--><!--]--></td></tr><tr><td><code>event_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1--> and <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>calendar_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">primary</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_focus_time</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, list, update, or delete Focus Time events.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">list</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1-->, or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>start_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Start time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->).<!--]--><!--]--></td></tr><tr><td><code>end_time</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->End time (required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">create</code><!--]--><!--[-1-->).<!--]--><!--]--></td></tr><tr><td><code>summary</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Event title.<!--]--><!--]--></td></tr><tr><td><code>auto_decline_mode</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->How conflicting meetings are declined.<!--]--><!--]--></td></tr><tr><td><code>decline_message</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Message sent with auto-declines.<!--]--><!--]--></td></tr><tr><td><code>chat_status</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Chat availability during focus time (e.g., "doNotDisturb").<!--]--><!--]--></td></tr><tr><td><code>recurrence</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->RRULE strings for recurring events.<!--]--><!--]--></td></tr><tr><td><code>event_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">update</code><!--]--><!--[-1--> and <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>calendar_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">primary</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-drive"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Drive MCP</h3> <p class="doc-card__description">Drive content, sharing, import/export, and permission management.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gdrive/drive_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_drive_files</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Search Drive files and folders.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>query</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The search query string. Supports Google Drive search operators.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The maximum number of files to return. Defaults to 10.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Page token from a previous response's nextPageToken.<!--]--><!--]--></td></tr><tr><td><code>drive_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->ID of the shared drive to search.<!--]--><!--]--></td></tr><tr><td><code>file_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Restrict results to specific file type (e.g., 'folder', 'document', 'pdf').<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_drive_file_content</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Read file content with export support.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Drive file ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_drive_file_download_url</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Download Drive files via local path or HTTP attachment URL.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The Google Drive file ID to download.<!--]--><!--]--></td></tr><tr><td><code>export_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional export format for Google native files.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_drive_file</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create files from inline content or source URLs.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name for the new file.<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text content to write to the file.<!--]--><!--]--></td></tr><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the parent folder. Defaults to 'root'.<!--]--><!--]--></td></tr><tr><td><code>mime_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The MIME type of the file. Defaults to 'text/plain'.<!--]--><!--]--></td></tr><tr><td><code>fileUrl</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If provided, fetches file content from this URL (file://, http://, https://).<!--]--><!--]--></td></tr><tr><td><code>base64_content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Standard base64-encoded file bytes. Mutually exclusive with content and fileUrl.<!--]--><!--]--></td></tr><tr><td><code>content_mime_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->MIME type for base64_content uploads. Required when using base64_content.<!--]--><!--]--></td></tr><tr><td><code>base64_sha256</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Expected SHA-256 hex digest of the decoded payload for integrity verification.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_drive_folder</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create folders in My Drive or shared drives.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>folder_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name for the new folder.<!--]--><!--]--></td></tr><tr><td><code>parent_folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the parent folder. Defaults to 'root'.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">import_to_google_doc</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Import files (Markdown, DOCX, HTML, etc.) into Google Docs.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name for the new Google Doc (extension will be ignored).<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text content for text-based formats (MD, TXT, HTML).<!--]--><!--]--></td></tr><tr><td><code>file_path</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Local file path for binary formats (DOCX, ODT).<!--]--><!--]--></td></tr><tr><td><code>file_url</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Remote URL to fetch the file from (http/https).<!--]--><!--]--></td></tr><tr><td><code>source_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Source format hint ('md', 'markdown', 'docx', 'txt', 'html', 'rtf', 'odt').<!--]--><!--]--></td></tr><tr><td><code>base64_content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Standard base64-encoded file bytes for binary uploads. Mutually exclusive with content, file_path, and file_url.<!--]--><!--]--></td></tr><tr><td><code>base64_sha256</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Expected SHA-256 hex digest of the decoded payload for integrity verification.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">import_to_google_slides</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Import presentation files (PPTX, PPT, ODP) as Google Slides.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name for the new Google Slides presentation.<!--]--><!--]--></td></tr><tr><td><code>file_path</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Local file path to the presentation file.<!--]--><!--]--></td></tr><tr><td><code>file_url</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Remote URL to fetch the file from (http/https).<!--]--><!--]--></td></tr><tr><td><code>source_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Source format hint ('pptx', 'ppt', 'odp').<!--]--><!--]--></td></tr><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Destination folder ID. Defaults to 'root'.<!--]--><!--]--></td></tr><tr><td><code>base64_content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Standard base64-encoded file bytes for binary uploads. Mutually exclusive with file_path and file_url.<!--]--><!--]--></td></tr><tr><td><code>base64_sha256</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Expected SHA-256 hex digest of the decoded payload for integrity verification.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">import_to_google_sheets</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Import spreadsheet files (XLSX, CSV, TSV, etc.) as Google Sheets.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name for the new Google Sheet.<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Inline text content for text-based formats (CSV, TSV).<!--]--><!--]--></td></tr><tr><td><code>file_path</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Local file path for binary formats (XLSX, ODS).<!--]--><!--]--></td></tr><tr><td><code>file_url</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Remote URL to fetch the file from (http/https).<!--]--><!--]--></td></tr><tr><td><code>source_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Source format hint ('xlsx', 'csv', 'tsv', 'ods').<!--]--><!--]--></td></tr><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Destination folder ID. Defaults to 'root'.<!--]--><!--]--></td></tr><tr><td><code>base64_content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Standard base64-encoded file bytes for binary uploads. Mutually exclusive with content, file_path, and file_url.<!--]--><!--]--></td></tr><tr><td><code>base64_sha256</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Expected SHA-256 hex digest of the decoded payload for integrity verification.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_drive_shareable_link</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Generate shareable links for files.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file or folder to get the shareable link for.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_drive_items</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List folder contents or shared drives.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the Google Drive folder. Defaults to 'root'.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The maximum number of items to return. Defaults to 100.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Page token for pagination.<!--]--><!--]--></td></tr><tr><td><code>drive_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Shared drive ID to list from.<!--]--><!--]--></td></tr><tr><td><code>resource_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[0--><code class="desc-code svelte-107eqh3">items</code><!--]--><!--[-1--> (default) or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">drives</code><!--]--><!--[-1--> to list shared drives.<!--]--><!--]--></td></tr><tr><td><code>file_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Restrict results to specific file type.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">copy_drive_file</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Copy existing Drive files with optional renaming.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file to copy.<!--]--><!--]--></td></tr><tr><td><code>new_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New name for the copied file. If not provided, uses "Copy of [original name]".<!--]--><!--]--></td></tr><tr><td><code>parent_folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the folder where the copy should be created. Defaults to 'root'.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">update_drive_file</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Update metadata, move files, or replace/append to Google Apps content in place.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file to update.<!--]--><!--]--></td></tr><tr><td><code>name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New name for the file.<!--]--><!--]--></td></tr><tr><td><code>description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New description for the file.<!--]--><!--]--></td></tr><tr><td><code>add_parents</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Comma-separated folder IDs to add as parents.<!--]--><!--]--></td></tr><tr><td><code>remove_parents</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Comma-separated folder IDs to remove from parents.<!--]--><!--]--></td></tr><tr><td><code>starred</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Star or unstar the file.<!--]--><!--]--></td></tr><tr><td><code>trashed</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Move the file to or from the trash.<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Replacement text content (Markdown, TXT, HTML), preserving the file ID.<!--]--><!--]--></td></tr><tr><td><code>file_path</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Local file path for binary replacement content (DOCX, ODT, etc.).<!--]--><!--]--></td></tr><tr><td><code>file_url</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Remote URL to fetch replacement content from.<!--]--><!--]--></td></tr><tr><td><code>source_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Format hint for replacement content ('md', 'docx', 'txt', 'html', 'rtf', 'odt').<!--]--><!--]--></td></tr><tr><td><code>mode</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->'replace' (default), 'append', or 'prepend'. Append/prepend splice <!--]--><!--[0--><code class="desc-code svelte-107eqh3">content</code><!--]--><!--[-1--> onto the existing text server-side, so only the new text has to be sent.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_drive_access</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Grant, update, revoke permissions, and transfer ownership.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file or folder.<!--]--><!--]--></td></tr><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The access management action to perform ('grant', 'revoke', 'update', 'transfer_ownership').<!--]--><!--]--></td></tr><tr><td><code>share_with</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email address (user/group) or domain name.<!--]--><!--]--></td></tr><tr><td><code>role</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Permission role ('reader', 'writer', 'commenter', 'owner').<!--]--><!--]--></td></tr><tr><td><code>permission_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Permission ID for revoke/update actions.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">set_drive_file_permissions</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Configure link sharing and file-level sharing.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file or folder.<!--]--><!--]--></td></tr><tr><td><code>link_sharing</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Control "anyone with the link" access for the file.<!--]--><!--]--></td></tr><tr><td><code>writers_can_share</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether editors can change permissions and share.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_drive_file_permissions</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Get file metadata, parents, and detailed permission entries.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the file to check permissions for.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">check_drive_file_public_access</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Check whether a file is publicly accessible.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The name of the file to check.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="gmail"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Gmail MCP</h3> <p class="doc-card__description">Message, label, filter, thread, and attachment workflows.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gmail/gmail_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_gmail_messages</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Search mail using Gmail query operators.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>query</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The search query. Supports standard Gmail search operators.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The maximum number of messages to return. Defaults to 10.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for retrieving the next page of results.<!--]--><!--]--></td></tr><tr><td><code>include_headers</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If True, also return Subject, From, and Date per result. Costs one metadata fetch per result. Defaults to False.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_gmail_message_content</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve message content. With <!--]--><!--[0--><code class="svelte-1xmjmrw">full=True</code><!--]--><!--[-1-->, returns the complete untruncated message via file/URL (or inline when no file storage is available).<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The unique ID of the Gmail message to retrieve.<!--]--><!--]--></td></tr><tr><td><code>body_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Body output format: 'text' (default), 'html', or 'raw' (decoded MIME).<!--]--><!--]--></td></tr><tr><td><code>full</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If True, return the complete untruncated message.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_gmail_messages_content_batch</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Batch fetch message content.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_ids</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->List of Gmail message IDs to retrieve (max 25 per batch).<!--]--><!--]--></td></tr><tr><td><code>format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Message format. "full" includes body, "metadata" only headers.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">send_gmail_message</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Send email messages (supports replies, forwards, and attachments). When <!--]--><!--[0--><code class="svelte-1xmjmrw">thread_id</code><!--]--><!--[-1--> is set, threading headers are derived from the thread automatically.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>to</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Recipient email address. Optional when replying with <!--]--><!--[0--><code class="desc-code svelte-107eqh3">reply_all=True</code><!--]--><!--[-1-->, which derives it from the thread.<!--]--><!--]--></td></tr><tr><td><code>subject</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email subject. Required when sending; optional when forwarding (defaults to "Fwd: <original subject>").<!--]--><!--]--></td></tr><tr><td><code>body</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email body content. Required when sending. When forwarding, this is an optional note prepended above the quoted original.<!--]--><!--]--></td></tr><tr><td><code>body_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email body format ('plain' or 'html'). Defaults to 'plain'. With 'html', bare newlines between text become <!--]--><!--[0--><code class="desc-code svelte-107eqh3"><br></code><!--]--><!--[-1--> line breaks; well-formed block markup is left untouched.<!--]--><!--]--></td></tr><tr><td><code>cc</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional CC email address.<!--]--><!--]--></td></tr><tr><td><code>bcc</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional BCC email address.<!--]--><!--]--></td></tr><tr><td><code>thread_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Thread ID to reply within.<!--]--><!--]--></td></tr><tr><td><code>reply_all</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Derive reply-all recipients from the thread: To is the sender replied to, Cc the other participants, excluding the authenticated account. Requires <!--]--><!--[0--><code class="desc-code svelte-107eqh3">thread_id</code><!--]--><!--[-1-->; explicit <!--]--><!--[0--><code class="desc-code svelte-107eqh3">to</code><!--]--><!--[-1-->/<!--]--><!--[0--><code class="desc-code svelte-107eqh3">cc</code><!--]--><!--[-1--> win. Defaults to False.<!--]--><!--]--></td></tr><tr><td><code>quote_original</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Include the message being replied to as a quoted original. Only has an effect with <!--]--><!--[0--><code class="desc-code svelte-107eqh3">thread_id</code><!--]--><!--[-1-->. Defaults to False.<!--]--><!--]--></td></tr><tr><td><code>attachments</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional list of attachments (path or base64 content).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_gmail_thread_content</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve full thread content.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>thread_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The unique ID of the Gmail thread to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_gmail_attachment_content</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Download Gmail attachments to persistent attachment storage.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the Gmail message containing the attachment.<!--]--><!--]--></td></tr><tr><td><code>attachment_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the attachment to download.<!--]--><!--]--></td></tr><tr><td><code>return_base64</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If True, also return the attachment content as base64.<!--]--><!--]--></td></tr><tr><td><code>attachment_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Zero-based attachment position from the message-content response. Lets the server re-resolve Gmail's refreshed attachment IDs against current metadata before downloading.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">modify_gmail_message_labels</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Add/remove labels on a message.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the message to modify.<!--]--><!--]--></td></tr><tr><td><code>add_label_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of label IDs to add to the message.<!--]--><!--]--></td></tr><tr><td><code>remove_label_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of label IDs to remove from the message.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_gmail_labels</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List account labels.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>prefix</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Return only labels whose name starts with this string (case-sensitive). Useful for fetching a single subtree of a hierarchical label structure.<!--]--><!--]--></td></tr><tr><td><code>compact</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->When true, returns minimal JSON with just id and name per label, sorted by name.<!--]--><!--]--></td></tr><tr><td><code>include_system</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->When false, excludes Gmail system labels from the results. Defaults to true.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_gmail_filters</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List configured Gmail filters.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_gmail_label</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create/update/delete labels.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Action to perform on the label ('create', 'update', 'delete').<!--]--><!--]--></td></tr><tr><td><code>name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Label name. Required for create, optional for update.<!--]--><!--]--></td></tr><tr><td><code>label_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Label ID. Required for update and delete operations.<!--]--><!--]--></td></tr><tr><td><code>background_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Label background color as a hex string, e.g. <!--]--><!--[0--><code class="desc-code svelte-107eqh3">#fb4c2f</code><!--]--><!--[-1-->. Must be set together with text_color. Gmail accepts only its own palette, and an unsupported value is rejected before the request is sent. Applies to user labels, not system labels.<!--]--><!--]--></td></tr><tr><td><code>text_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Label text color as a hex string, e.g. <!--]--><!--[0--><code class="desc-code svelte-107eqh3">#ffffff</code><!--]--><!--[-1-->. Must be set together with background_color, from the same palette. On update, omitting both keeps the label's current color.<!--]--><!--]--></td></tr><tr><td><code>clear_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->On update, remove the label's current color. Cannot be combined with background_color or text_color.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_gmail_filter</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create/delete Gmail filters.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Action to perform - "create" or "delete".<!--]--><!--]--></td></tr><tr><td><code>criteria</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Filter criteria object (required for create).<!--]--><!--]--></td></tr><tr><td><code>filter_action</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Filter action object (required for create).<!--]--><!--]--></td></tr><tr><td><code>filter_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->ID of the filter to delete (required for delete).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">draft_gmail_message</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create Gmail drafts.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>subject</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Email subject.<!--]--><!--]--></td></tr><tr><td><code>body</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Email body content.<!--]--><!--]--></td></tr><tr><td><code>body_format</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email body format ('plain' or 'html'). Defaults to 'plain'.<!--]--><!--]--></td></tr><tr><td><code>to</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional recipient email address.<!--]--><!--]--></td></tr><tr><td><code>cc</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional CC email address.<!--]--><!--]--></td></tr><tr><td><code>attachments</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional list of attachments.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_gmail_threads_content_batch</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Batch fetch thread content.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>thread_ids</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->A list of Gmail thread IDs to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">batch_modify_gmail_message_labels</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Batch label modifications.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_ids</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->A list of message IDs to modify.<!--]--><!--]--></td></tr><tr><td><code>add_label_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of label IDs to add to the messages.<!--]--><!--]--></td></tr><tr><td><code>remove_label_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of label IDs to remove from the messages.<!--]--><!--]--></td></tr><tr><td><code>verify</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Read messages back and report per-ID outcomes. Defaults to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">true</code><!--]--><!--[-1-->; set to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">false</code><!--]--><!--[-1--> to avoid one extra batched read per message when an unverified result is acceptable.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">start_google_auth</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Legacy OAuth 2.0 auth helper (disabled with OAuth 2.1).<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-docs"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Docs MCP</h3> <p class="doc-card__description">Document creation, edits, exports, structured updates, and comment management.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gdocs/docs_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_doc_content</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Extract plain text document content.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to retrieve.<!--]--><!--]--></td></tr><tr><td><code>tab_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Read a single tab instead of the main document body. Take the ID from <!--]--><!--[0--><code class="desc-code svelte-107eqh3">inspect_doc_structure</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>preserve_context</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Return a readable plain-text view with link destinations, smart-chip values, table boundaries, headers, footers and footnotes. Off by default, because the default output stays index-aligned for editing.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_doc</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create new documents.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>title</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The title for the new document.<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Initial text content for the document.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">modify_doc_text</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Modify document text with formatting and links.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>start_index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Start position for operation (0-based).<!--]--><!--]--></td></tr><tr><td><code>end_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->End position for text replacement/formatting (if not provided with text, text is inserted).<!--]--><!--]--></td></tr><tr><td><code>text</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New text to insert or replace with (optional - can format existing text without changing it).<!--]--><!--]--></td></tr><tr><td><code>bold</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to make text bold (True/False/None to leave unchanged).<!--]--><!--]--></td></tr><tr><td><code>italic</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to make text italic (True/False/None to leave unchanged).<!--]--><!--]--></td></tr><tr><td><code>underline</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to underline text (True/False/None to leave unchanged).<!--]--><!--]--></td></tr><tr><td><code>font_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Font size in points.<!--]--><!--]--></td></tr><tr><td><code>font_family</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Font family name (e.g., "Arial", "Times New Roman").<!--]--><!--]--></td></tr><tr><td><code>text_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Foreground text color (#RRGGBB).<!--]--><!--]--></td></tr><tr><td><code>background_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Background/highlight color (#RRGGBB).<!--]--><!--]--></td></tr><tr><td><code>link_url</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Hyperlink URL (http/https).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_docs</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Search docs by name.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>query</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Search query to find documents by name.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of results to return.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">find_and_replace_doc</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Find and replace text.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>find_text</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Text to search for.<!--]--><!--]--></td></tr><tr><td><code>replace_text</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Text to replace with.<!--]--><!--]--></td></tr><tr><td><code>match_case</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to match case exactly.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_docs_in_folder</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List docs in a Drive folder.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the folder. Defaults to root.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of documents to return.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">insert_doc_elements</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Insert tables, lists, and page breaks.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>element_type</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Type of element to insert ("table", "list", "page_break").<!--]--><!--]--></td></tr><tr><td><code>index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Position to insert element (0-based).<!--]--><!--]--></td></tr><tr><td><code>rows</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of rows for table (required for table).<!--]--><!--]--></td></tr><tr><td><code>columns</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of columns for table (required for table).<!--]--><!--]--></td></tr><tr><td><code>list_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Type of list ("UNORDERED", "ORDERED") (required for list).<!--]--><!--]--></td></tr><tr><td><code>text</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Initial text content for list items.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">update_paragraph_style</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Apply heading and paragraph styles, including nested lists and per-edge borders.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Document ID to modify.<!--]--><!--]--></td></tr><tr><td><code>start_index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Start position (1-based).<!--]--><!--]--></td></tr><tr><td><code>end_index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->End position (exclusive) - should cover the entire paragraph.<!--]--><!--]--></td></tr><tr><td><code>heading_level</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Heading level 0-6 (0 = NORMAL_TEXT, 1 = H1, 2 = H2, etc.).<!--]--><!--]--></td></tr><tr><td><code>alignment</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text alignment.<!--]--><!--]--></td></tr><tr><td><code>line_spacing</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Line spacing value.<!--]--><!--]--></td></tr><tr><td><code>border_edges</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Border edges to update ('top', 'bottom', 'left', 'right', 'between'). Omit to update all four outer edges.<!--]--><!--]--></td></tr><tr><td><code>border_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Border color as #RRGGBB. Defaults to black.<!--]--><!--]--></td></tr><tr><td><code>border_width</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Border width in points. Defaults to 1.<!--]--><!--]--></td></tr><tr><td><code>border_padding</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Border padding in points. Defaults to 4.<!--]--><!--]--></td></tr><tr><td><code>border_dash</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Border dash style ('SOLID', 'DOT', or 'DASH'). Defaults to 'SOLID'.<!--]--><!--]--></td></tr><tr><td><code>list_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List type for creating lists.<!--]--><!--]--></td></tr><tr><td><code>list_nesting_level</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Nesting level for lists.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_doc_as_markdown</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Export a document as formatted Markdown.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the Google Doc (or full URL).<!--]--><!--]--></td></tr><tr><td><code>include_comments</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include comments (default: True).<!--]--><!--]--></td></tr><tr><td><code>comment_mode</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->How to display comments.<!--]--><!--]--></td></tr><tr><td><code>include_resolved</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include resolved comments (default: False).<!--]--><!--]--></td></tr><tr><td><code>tab_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Export a single tab instead of the main document body. Take the ID from <!--]--><!--[0--><code class="desc-code svelte-107eqh3">inspect_doc_structure</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">export_doc_to_pdf</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Export a doc to PDF.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the Google Doc to export.<!--]--><!--]--></td></tr><tr><td><code>pdf_filename</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Name for the PDF file (optional - if not provided, uses original name + "_PDF").<!--]--><!--]--></td></tr><tr><td><code>folder_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Drive folder ID to save PDF in (optional - if not provided, saves in root).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_document_comments</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List all document comments.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_document_comment</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, reply, or resolve comments.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">insert_doc_image</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Insert images from Drive or URLs.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>image_source</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Drive file ID or public image URL.<!--]--><!--]--></td></tr><tr><td><code>index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Position to insert image (0-based).<!--]--><!--]--></td></tr><tr><td><code>width</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Image width in points (optional).<!--]--><!--]--></td></tr><tr><td><code>height</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Image height in points (optional).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">update_doc_headers_footers</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Update headers and footers.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>section_type</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Type of section to update ("header" or "footer").<!--]--><!--]--></td></tr><tr><td><code>content</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Text content for the header/footer.<!--]--><!--]--></td></tr><tr><td><code>header_footer_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Type of header/footer ("DEFAULT", "FIRST_PAGE_ONLY", "EVEN_PAGE").<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">batch_update_doc</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Execute multiple doc operations in one call.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>operations</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->List of operation dictionaries.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">inspect_doc_structure</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Inspect structural document elements. Both modes also report paragraph layout stats: empty-paragraph counts, up to 100 paragraph ranges with a truncation flag, and whether the last paragraph is empty or a list item.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to inspect.<!--]--><!--]--></td></tr><tr><td><code>detailed</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to return detailed structure information. Detailed output adds list membership and object anchors.<!--]--><!--]--></td></tr><tr><td><code>tab_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Inspect a single tab instead of the main document body.<!--]--><!--]--></td></tr><tr><td><code>preview_chars</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum characters of paragraph, header, and footer text preview (default 100). Pass <!--]--><!--[0--><code class="desc-code svelte-107eqh3">0</code><!--]--><!--[-1--> or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">None</code><!--]--><!--[-1--> for the full text, which you need to locate a token inside a longer paragraph: add its UTF-16 offset to the paragraph's <!--]--><!--[0--><code class="desc-code svelte-107eqh3">start_index</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_table_with_data</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create populated tables.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>table_data</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->2D list of strings - EXACT format: [["col1", "col2"], ["row1col1", "row1col2"]].<!--]--><!--]--></td></tr><tr><td><code>index</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Document position (get from inspect_doc_structure 'total_length').<!--]--><!--]--></td></tr><tr><td><code>bold_headers</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to make first row bold (default: true).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">debug_table_structure</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Debug table structures.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to inspect.<!--]--><!--]--></td></tr><tr><td><code>table_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Which table to debug (0 = first table, 1 = second table, etc.).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_doc_tab</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, rename, delete, or populate document tabs from markdown.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>document_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->ID of the document to update.<!--]--><!--]--></td></tr><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->'create', 'rename', 'delete', or 'populate_from_markdown'.<!--]--><!--]--></td></tr><tr><td><code>tab_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Tab ID (required for rename, delete, and populate).<!--]--><!--]--></td></tr><tr><td><code>title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Tab title (required for create and rename).<!--]--><!--]--></td></tr><tr><td><code>index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Position for the new tab.<!--]--><!--]--></td></tr><tr><td><code>parent_tab_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Parent tab ID for nested tabs.<!--]--><!--]--></td></tr><tr><td><code>markdown_text</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Markdown content for populate_from_markdown.<!--]--><!--]--></td></tr><tr><td><code>replace_existing</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether populate replaces existing tab content (default: True).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-sheets"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Sheets MCP</h3> <p class="doc-card__description">Spreadsheet reads/writes, formatting, comments, and conditional formatting.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gsheets/sheets_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">read_sheet_values</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Read values from ranges.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>range_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The range to read (e.g., "Sheet1!A1:D10", "A1:D10"). Defaults to "A1:Z1000".<!--]--><!--]--></td></tr><tr><td><code>include_hyperlinks</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If True, also fetch hyperlink metadata for the range.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">modify_sheet_values</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Write, update, and clear range values.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>range_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The range to modify (e.g., "Sheet1!A1:D10", "A1:D10").<!--]--><!--]--></td></tr><tr><td><code>values</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->2D array of values to write/update. Can be a JSON string or Python list. Required unless clear_values=True.<!--]--><!--]--></td></tr><tr><td><code>value_input_option</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->How to interpret input values ("RAW" or "USER_ENTERED"). Defaults to "USER_ENTERED".<!--]--><!--]--></td></tr><tr><td><code>clear_values</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->If True, clears the range instead of writing values. Defaults to False.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_spreadsheet</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create spreadsheets.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>title</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The title of the new spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>sheet_names</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of sheet names to create. If not provided, creates one sheet with default name.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_spreadsheets</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List available spreadsheets.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>max_results</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of spreadsheets to return. Defaults to 25.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_spreadsheet_info</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Read spreadsheet metadata and sheet info.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet to get info for.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">format_sheet_range</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Apply styling and number/text formats to ranges.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>range_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->A1-style range (optionally with sheet name).<!--]--><!--]--></td></tr><tr><td><code>background_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Hex background color (e.g., "#FFEECC").<!--]--><!--]--></td></tr><tr><td><code>text_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Hex text color (e.g., "#000000").<!--]--><!--]--></td></tr><tr><td><code>number_format_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Sheets number format type (e.g., "DATE").<!--]--><!--]--></td></tr><tr><td><code>number_format_pattern</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Custom pattern for the number format.<!--]--><!--]--></td></tr><tr><td><code>wrap_strategy</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text wrap strategy (WRAP, OVERFLOW_CELL, CLIP).<!--]--><!--]--></td></tr><tr><td><code>horizontal_alignment</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Horizontal alignment.<!--]--><!--]--></td></tr><tr><td><code>vertical_alignment</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Vertical alignment.<!--]--><!--]--></td></tr><tr><td><code>bold</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to make text bold.<!--]--><!--]--></td></tr><tr><td><code>italic</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to make text italic.<!--]--><!--]--></td></tr><tr><td><code>font_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Font size.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_sheet_tables</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List structured tables with IDs, names, ranges, and columns.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_sheet</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Add sheets to existing spreadsheets.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>sheet_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The name of the new sheet. Defaults to a Google-assigned name when omitted.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_sheet_tab</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Manage the lifecycle of an existing tab: rename, delete, hide, unhide, or reorder it. Use create_sheet to add a tab and resize_sheet_dimensions for row and column changes.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>sheet_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Title of the existing tab to act on.<!--]--><!--]--></td></tr><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->One of <!--]--><!--[0--><code class="desc-code svelte-107eqh3">rename</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">delete</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">hide</code><!--]--><!--[-1-->, <!--]--><!--[0--><code class="desc-code svelte-107eqh3">unhide</code><!--]--><!--[-1-->, or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">reorder</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>new_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New title. Required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">rename</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><tr><td><code>new_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New zero-based position. Required for <!--]--><!--[0--><code class="desc-code svelte-107eqh3">reorder</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">append_table_rows</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Append rows to a structured table, auto-extending the table range.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>table_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the table (from list_sheet_tables).<!--]--><!--]--></td></tr><tr><td><code>values</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->2D array of row values to append.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">move_sheet_rows</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Move rows between sheets within a spreadsheet.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>source_sheet</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Name of the sheet to move rows from.<!--]--><!--]--></td></tr><tr><td><code>start_row</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->First row to move (1-based).<!--]--><!--]--></td></tr><tr><td><code>end_row</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Last row to move (inclusive).<!--]--><!--]--></td></tr><tr><td><code>destination_sheet</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Name of the sheet to move rows to.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">resize_sheet_dimensions</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Resize, hide, freeze, insert, or delete rows and columns.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>sheet_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Sheet to modify. Defaults to the first sheet.<!--]--><!--]--></td></tr><tr><td><code>column_sizes</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Map of column letters to pixel widths.<!--]--><!--]--></td></tr><tr><td><code>row_sizes</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Map of row numbers to pixel heights.<!--]--><!--]--></td></tr><tr><td><code>auto_resize_columns</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Columns to auto-fit to content.<!--]--><!--]--></td></tr><tr><td><code>frozen_row_count</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of frozen header rows.<!--]--><!--]--></td></tr><tr><td><code>frozen_column_count</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of frozen columns.<!--]--><!--]--></td></tr><tr><td><code>hide_columns</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Columns to hide (unhide_columns reverses).<!--]--><!--]--></td></tr><tr><td><code>hide_rows</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Rows to hide (unhide_rows reverses).<!--]--><!--]--></td></tr><tr><td><code>insert_rows</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of rows to insert (with insert_rows_at).<!--]--><!--]--></td></tr><tr><td><code>insert_columns</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of columns to insert (with insert_columns_at).<!--]--><!--]--></td></tr><tr><td><code>delete_rows</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Rows to delete.<!--]--><!--]--></td></tr><tr><td><code>delete_columns</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Columns to delete.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_spreadsheet_comments</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List comments on spreadsheets.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_spreadsheet_comment</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, reply, and resolve spreadsheet comments.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_conditional_formatting</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Add, update, and remove conditional formatting rules.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The operation to perform ("add", "update", "remove").<!--]--><!--]--></td></tr><tr><td><code>range_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Range to apply conditional formatting to.<!--]--><!--]--></td></tr><tr><td><code>condition_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Type of condition.<!--]--><!--]--></td></tr><tr><td><code>condition_values</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Values for the condition.<!--]--><!--]--></td></tr><tr><td><code>background_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Background color for formatting.<!--]--><!--]--></td></tr><tr><td><code>text_color</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text color for formatting.<!--]--><!--]--></td></tr><tr><td><code>rule_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Index of rule to update/remove.<!--]--><!--]--></td></tr><tr><td><code>gradient_points</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Gradient points for gradient formatting.<!--]--><!--]--></td></tr><tr><td><code>sheet_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Sheet name for the range.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_named_range</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List, create, update, and delete named ranges.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>spreadsheet_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the spreadsheet.<!--]--><!--]--></td></tr><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The operation to perform ("list", "create", "update", "delete").<!--]--><!--]--></td></tr><tr><td><code>name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Name of the named range. Required for create; identifies the range for update/delete.<!--]--><!--]--></td></tr><tr><td><code>range_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Target range in A1 notation, e.g. "Sheet1!A1:D10". Required for create.<!--]--><!--]--></td></tr><tr><td><code>named_range_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->ID of the named range to update or delete.<!--]--><!--]--></td></tr><tr><td><code>new_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New name for the named range (update).<!--]--><!--]--></td></tr><tr><td><code>new_range</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->New A1-style range for the named range (update).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-slides"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Slides MCP</h3> <p class="doc-card__description">Presentations, page retrieval, thumbnails, and comment management.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gslides/slides_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_presentation</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create presentations.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The title for the new presentation. Defaults to "Untitled Presentation".<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_presentation</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve presentation details.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>presentation_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the presentation to retrieve.<!--]--><!--]--></td></tr><tr><td><code>include_speaker_notes</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Also report each slide's speaker notes and its notes shape ID (needed to edit notes via batch_update_presentation). Defaults to False.<!--]--><!--]--></td></tr><tr><td><code>include_geometry</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Also list each slide's elements with their placement: transform (translate, plus scale/shear when not identity) and intrinsic size, in raw EMU. Set this when adding slides to an existing deck so new elements can match its established margins. Defaults to False.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">batch_update_presentation</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Apply multiple slide updates in one request.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>presentation_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the presentation to update.<!--]--><!--]--></td></tr><tr><td><code>requests</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->List of update requests to apply.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_page</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve a specific page/slide.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>presentation_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the presentation.<!--]--><!--]--></td></tr><tr><td><code>page_object_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The object ID of the page/slide to retrieve.<!--]--><!--]--></td></tr><tr><td><code>include_geometry</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Also report each element's placement: transform (translate, plus scale/shear when not identity) and intrinsic size, in raw EMU. This is the only way to discover an existing deck's margins, gutters, and content area before adding elements. Defaults to False.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_page_thumbnail</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Generate slide thumbnails.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>presentation_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the presentation.<!--]--><!--]--></td></tr><tr><td><code>page_object_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The object ID of the page/slide.<!--]--><!--]--></td></tr><tr><td><code>thumbnail_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Size of thumbnail ("LARGE", "MEDIUM", "SMALL"). Defaults to "MEDIUM".<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_presentation_comments</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List all presentation comments.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_presentation_comment</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, reply, and resolve presentation comments.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-forms"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Forms MCP</h3> <p class="doc-card__description">Form creation, response retrieval, publish settings, and batch updates.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gforms/forms_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_form</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create forms.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>title</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The title of the form.<!--]--><!--]--></td></tr><tr><td><code>description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The description of the form.<!--]--><!--]--></td></tr><tr><td><code>document_title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The document title (shown in browser tab).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_form</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve form metadata and URLs.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>form_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the form to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_form_responses</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List responses with pagination.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>form_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the form.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of responses to return. Defaults to 10.<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for retrieving next page of results.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">set_publish_settings</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Configure whether a form is published and accepting responses.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>form_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the form to update publish settings for.<!--]--><!--]--></td></tr><tr><td><code>is_published</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether the form is published and visible to responders. Defaults to True.<!--]--><!--]--></td></tr><tr><td><code>is_accepting_responses</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether the form accepts responses. Only takes effect when the form is published. Defaults to True.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_form_response</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve an individual response.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>form_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the form.<!--]--><!--]--></td></tr><tr><td><code>response_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the response to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">batch_update_form</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Apply batch updates to form structure/settings.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>form_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the form to update.<!--]--><!--]--></td></tr><tr><td><code>requests</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->List of update requests to apply.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-tasks"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Tasks MCP</h3> <p class="doc-card__description">Consolidated task and task-list management APIs.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gtasks/tasks_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_tasks</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List tasks with filters.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>task_list_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task list to retrieve tasks from.<!--]--><!--]--></td></tr><tr><td><code>max_results</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of tasks to return (default: 20, max: 10000).<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for pagination.<!--]--><!--]--></td></tr><tr><td><code>show_completed</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include completed tasks (default: True).<!--]--><!--]--></td></tr><tr><td><code>show_deleted</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include deleted tasks (default: False).<!--]--><!--]--></td></tr><tr><td><code>show_hidden</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include hidden tasks (default: False).<!--]--><!--]--></td></tr><tr><td><code>show_assigned</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to include assigned tasks (default: False).<!--]--><!--]--></td></tr><tr><td><code>completed_max</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Upper bound for completion date (RFC 3339 timestamp).<!--]--><!--]--></td></tr><tr><td><code>completed_min</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Lower bound for completion date (RFC 3339 timestamp).<!--]--><!--]--></td></tr><tr><td><code>due_max</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Upper bound for due date (RFC 3339 timestamp).<!--]--><!--]--></td></tr><tr><td><code>due_min</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Lower bound for due date (RFC 3339 timestamp).<!--]--><!--]--></td></tr><tr><td><code>updated_min</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Lower bound for last modification time (RFC 3339 timestamp).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_task</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve task details.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>task_list_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task list containing the task.<!--]--><!--]--></td></tr><tr><td><code>task_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_task</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Consolidated create, update, delete, and move task operations.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The action to perform ("create", "update", "delete", "move").<!--]--><!--]--></td></tr><tr><td><code>task_list_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task list.<!--]--><!--]--></td></tr><tr><td><code>task_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task (required for "update", "delete", and "move").<!--]--><!--]--></td></tr><tr><td><code>title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The title of the task (required for "create", optional for "update").<!--]--><!--]--></td></tr><tr><td><code>notes</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Notes/description for the task.<!--]--><!--]--></td></tr><tr><td><code>status</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Task status ("needsAction" or "completed").<!--]--><!--]--></td></tr><tr><td><code>due</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Due date in RFC 3339 format.<!--]--><!--]--></td></tr><tr><td><code>parent</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Parent task ID (for subtasks).<!--]--><!--]--></td></tr><tr><td><code>previous</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Previous sibling task ID (for positioning).<!--]--><!--]--></td></tr><tr><td><code>destination_task_list</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Destination task list ID (for moving between lists).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_task_lists</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List task lists.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>max_results</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of task lists to return (default: 1000, max: 1000).<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for pagination.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_task_list</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve task-list details.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>task_list_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task list to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_task_list</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Consolidated create/update/delete/clear-completed for task lists.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The action to perform ("create", "update", "delete", "clear_completed").<!--]--><!--]--></td></tr><tr><td><code>task_list_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The ID of the task list (required for "update", "delete", and "clear_completed").<!--]--><!--]--></td></tr><tr><td><code>title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The title for the task list (required for "create" and "update").<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-contacts"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Contacts MCP</h3> <p class="doc-card__description">People API contact and group workflows.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gcontacts/contacts_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_contacts</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Search by name, email, and phone.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>query</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Search query string (searches names, emails, phone numbers).<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of results to return (default: 30, max: 30).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_contact</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve detailed contact profiles.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>contact_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The contact ID (e.g., "c1234567890" or full resource name "people/c1234567890").<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_contacts</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List contacts with pagination.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of contacts to return (default: 100, max: 1000).<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for pagination.<!--]--><!--]--></td></tr><tr><td><code>sort_order</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Sort order: "LAST_MODIFIED_ASCENDING", "LAST_MODIFIED_DESCENDING", "FIRST_NAME_ASCENDING", or "LAST_NAME_ASCENDING".<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_contact</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, update, or delete contacts.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The action to perform: "create", "update", or "delete".<!--]--><!--]--></td></tr><tr><td><code>contact_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The contact ID (required for "update" and "delete").<!--]--><!--]--></td></tr><tr><td><code>given_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->First name (for create/update).<!--]--><!--]--></td></tr><tr><td><code>family_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Last name (for create/update).<!--]--><!--]--></td></tr><tr><td><code>email</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Email address (for create/update).<!--]--><!--]--></td></tr><tr><td><code>phone</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Phone number (for create/update).<!--]--><!--]--></td></tr><tr><td><code>organization</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Company/organization name (for create/update).<!--]--><!--]--></td></tr><tr><td><code>job_title</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Job title (for create/update).<!--]--><!--]--></td></tr><tr><td><code>notes</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Additional notes (for create/update).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_contact_groups</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List contact groups.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of groups to return (default: 100, max: 1000).<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for pagination.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_contact_group</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve group details and members.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>group_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The contact group ID.<!--]--><!--]--></td></tr><tr><td><code>max_members</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of members to return (default: 100, max: 1000).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_contacts_batch</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Batch create, update, or delete contacts.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The action to perform: "create", "update", or "delete".<!--]--><!--]--></td></tr><tr><td><code>contacts</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of contact dicts for "create" action.<!--]--><!--]--></td></tr><tr><td><code>updates</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of update dicts for "update" action.<!--]--><!--]--></td></tr><tr><td><code>contact_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of contact IDs for "delete" action.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_contact_group</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, update, delete groups, and manage membership.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The action to perform: "create", "update", "delete", or "modify_members".<!--]--><!--]--></td></tr><tr><td><code>group_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The contact group ID (required for "update", "delete", and "modify_members").<!--]--><!--]--></td></tr><tr><td><code>name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Group name (required for "create", optional for "update").<!--]--><!--]--></td></tr><tr><td><code>delete_contacts</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to delete contacts when deleting group.<!--]--><!--]--></td></tr><tr><td><code>add_contact_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Contact IDs to add to group.<!--]--><!--]--></td></tr><tr><td><code>remove_contact_ids</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Contact IDs to remove from group.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-chat"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Chat MCP</h3> <p class="doc-card__description">Space messaging, reactions, search, and attachment download.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gchat/chat_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_messages</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve messages in a space.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>space_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the space to retrieve messages from.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of messages to return.<!--]--><!--]--></td></tr><tr><td><code>order_by</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->How to order the messages.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">send_message</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Send messages to spaces, or edit a message already sent.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>space_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The ID of the space to send the message to.<!--]--><!--]--></td></tr><tr><td><code>message_text</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The text content of the message.<!--]--><!--]--></td></tr><tr><td><code>thread_key</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Reply in a thread by app-defined key (creates thread if not found).<!--]--><!--]--></td></tr><tr><td><code>thread_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Reply in an existing thread by its resource name (e.g. spaces/X/threads/Y).<!--]--><!--]--></td></tr><tr><td><code>message_name</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Edit this message in place instead of sending a new one, given as <!--]--><!--[0--><code class="desc-code svelte-107eqh3">spaces/X/messages/Y</code><!--]--><!--[-1-->. The message must belong to <!--]--><!--[0--><code class="desc-code svelte-107eqh3">space_id</code><!--]--><!--[-1-->, and this cannot be combined with <!--]--><!--[0--><code class="desc-code svelte-107eqh3">thread_key</code><!--]--><!--[-1--> or <!--]--><!--[0--><code class="desc-code svelte-107eqh3">thread_name</code><!--]--><!--[-1-->.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_messages</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Search chat history.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>query</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Text to search for. If omitted, only <!--]--><!--[0--><code class="desc-code svelte-107eqh3">time_filter</code><!--]--><!--[-1--> is applied.<!--]--><!--]--></td></tr><tr><td><code>space_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional space ID to limit search to.<!--]--><!--]--></td></tr><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of results to return.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_reaction</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Add emoji reactions to messages.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The message resource name (e.g. spaces/X/messages/Y).<!--]--><!--]--></td></tr><tr><td><code>emoji_unicode</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The emoji character to react with (e.g. ð).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_spaces</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->
81List spaces and DMs. Direct messages and unnamed group chats are labelled after their members.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Maximum number of spaces to return.<!--]--><!--]--></td></tr><tr><td><code>space_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Filter by space type: "all" (default), "room", or "dm".<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">download_chat_attachment</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Download chat attachments.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>message_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The message resource name (e.g. spaces/X/messages/Y).<!--]--><!--]--></td></tr><tr><td><code>attachment_index</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Zero-based index of the attachment to download (default 0).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-search"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Custom Search MCP</h3> <p class="doc-card__description">Programmable Search Engine queries and metadata.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gsearch/search_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">search_custom</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Run custom search queries with optional site restrictions.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>q</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The search query.<!--]--><!--]--></td></tr><tr><td><code>num</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of results to return (1-10). Defaults to 10.<!--]--><!--]--></td></tr><tr><td><code>start</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The index of the first result to return (1-based). Defaults to 1.<!--]--><!--]--></td></tr><tr><td><code>safe</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Safe search level. Defaults to "off".<!--]--><!--]--></td></tr><tr><td><code>search_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Search for images if set to "image".<!--]--><!--]--></td></tr><tr><td><code>site_search</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Restrict search to a specific site/domain.<!--]--><!--]--></td></tr><tr><td><code>site_search_filter</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Exclude ("e") or include ("i") site_search results.<!--]--><!--]--></td></tr><tr><td><code>date_restrict</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Restrict results by date (e.g., "d5" for past 5 days, "m3" for past 3 months).<!--]--><!--]--></td></tr><tr><td><code>file_type</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Filter by file type (e.g., "pdf", "doc").<!--]--><!--]--></td></tr><tr><td><code>language</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Language code for results (e.g., "lang_en").<!--]--><!--]--></td></tr><tr><td><code>country</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Country code for results (e.g., "countryUS").<!--]--><!--]--></td></tr><tr><td><code>sites</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->List of sites/domains to restrict search to (e.g., ["example.com", "docs.example.com"]).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_search_engine_info</h4> <!--[0--><span class="tier-badge tier-badge--complete svelte-1xmjmrw">Complete</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve search engine configuration metadata.<!--]--><!--]--></p> <!--[-1--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><section id="google-apps-script"><div class="doc-card"><div class="doc-card__header"><h3 class="doc-card__title svelte-18cm2ic">Google Apps Script MCP</h3> <p class="doc-card__description">Create, execute, and manage Apps Script projects and deployments.</p> <!--[0--><p class="doc-source svelte-18cm2ic">Source: <code class="svelte-18cm2ic">gappsscript/apps_script_tools.py</code></p><!--]--></div> <div class="doc-card__content"><!--[--><!--[--><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_script_projects</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List available script projects.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of results per page (default: 50).<!--]--><!--]--></td></tr><tr><td><code>page_token</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Token for pagination (optional).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_script_project</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve full project structure and files.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_script_content</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Read a script file from a project.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>file_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Name of the file to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_script_project</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create standalone or bound script projects.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>title</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Project title.<!--]--><!--]--></td></tr><tr><td><code>parent_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional Drive folder ID or bound container ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">update_script_content</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create or update script files.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>files</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->List of file objects with name, type, and source.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">run_script_function</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Execute deployed script functions with args.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>function_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Name of function to execute.<!--]--><!--]--></td></tr><tr><td><code>parameters</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional list of parameters to pass.<!--]--><!--]--></td></tr><tr><td><code>dev_mode</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Whether to run latest code vs deployed version.<!--]--><!--]--></td></tr><tr><td><code>deployment_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->API Executable deployment ID; defaults to the highest-versioned one.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">generate_trigger_code</h4> <!--[0--><span class="tier-badge tier-badge--core svelte-1xmjmrw">Core</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Generate Apps Script code for time-driven and event triggers.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>trigger_type</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The kind of trigger to generate code for.<!--]--><!--]--></td></tr><tr><td><code>function_name</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Function the trigger should invoke.<!--]--><!--]--></td></tr><tr><td><code>schedule</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Schedule expression for time-driven triggers.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_deployments</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List deployments for a project.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">manage_deployment</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create, update, or delete deployments.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>action</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->Action to perform - "create", "update", or "delete".<!--]--><!--]--></td></tr><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>deployment_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->The deployment ID (required for update and delete).<!--]--><!--]--></td></tr><tr><td><code>description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Deployment description (required for create and update).<!--]--><!--]--></td></tr><tr><td><code>version_description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional version description (for create only).<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_versions</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->List saved versions of a script project.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">create_version</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Create an immutable version from the current project state.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>description</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional version description.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_version</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve details for a specific version.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>version_number</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The version number to retrieve.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">delete_script_project</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Permanently delete a script project (cannot be undone).<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">list_script_processes</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Inspect recent executions and status.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>page_size</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Number of results (default: 50).<!--]--><!--]--></td></tr><tr><td><code>script_id</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Optional script ID. When set, lists every process for that script visible to you, including runs by other users.<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><div class="tool-section svelte-1xmjmrw"><div class="tool-head svelte-1xmjmrw"><h4 class="tool-title svelte-1xmjmrw">get_script_metrics</h4> <!--[0--><span class="tier-badge tier-badge--extended svelte-1xmjmrw">Extended</span><!--]--></div> <p class="tool-description svelte-1xmjmrw"><!--[--><!--[-1-->Retrieve execution metrics for a script project.<!--]--><!--]--></p> <!--[0--><!--[0--><table class="param-table"><thead><tr><th>
81Parameter</th><th>Required</th><th>Description</th></tr></thead><tbody><!--[--><tr><td><code>script_id</code></td><td><!--[0--><span class="param-required">Required</span><!--]--></td><td><!--[--><!--[-1-->The script project ID.<!--]--><!--]--></td></tr><tr><td><code>metrics_granularity</code></td><td><!--[-1--><span class="param-optional svelte-107eqh3">Optional</span><!--]--></td><td><!--[--><!--[-1-->Granularity of metrics data (default: "DAILY").<!--]--><!--]--></td></tr><!--]--></tbody></table><!--]--><!--]--> <!--[-1--><!--]--> <!--[-1--><!--]--></div><!--]--><!--]--></div></div><!----></section><!--]--></main></div></div><!--]--><!--]--></main> <footer class="footer svelte-jz8lnl"><div class="footer-inner svelte-jz8lnl"><div class="footer-grid svelte-jz8lnl"><div class="footer-brand"><div class="brand-mark svelte-jz8lnl"><span class="mark svelte-jz8lnl">W</span> <span class="brand-name svelte-jz8lnl">Workspace MCP</span></div> <p class="brand-desc svelte-jz8lnl">The most complete MCP server for Google Workspace. 82 Connect AI to Gmail, Drive, Docs, Sheets, and more.</p></div> <div class="footer-col"><p class="col-title svelte-jz8lnl">Services</p> <nav class="col-links col-links--two svelte-jz8lnl"><a href="/gmail" class="svelte-jz8lnl">Gmail MCP</a> <a href="/google-drive" class="svelte-jz8lnl">Drive MCP</a> <a href="/google-calendar" class="svelte-jz8lnl">Calendar MCP</a> <a href="/google-docs" class="svelte-jz8lnl">Docs MCP</a> <a href="/google-sheets" class="svelte-jz8lnl">Sheets MCP</a> <a href="/google-slides" class="svelte-jz8lnl">Slides MCP</a> <a href="/google-forms" class="svelte-jz8lnl">Forms MCP</a> <a href="/google-tasks" class="svelte-jz8lnl">Tasks MCP</a> <a href="/google-contacts" class="svelte-jz8lnl">Contacts MCP</a> <a href="/google-chat" class="svelte-jz8lnl">Chat MCP</a> <a href="/google-apps-script" class="svelte-jz8lnl">Apps Script MCP</a> <a href="/google-search" class="svelte-jz8lnl">Custom Search</a></nav></div> <div class="footer-col"><p class="col-title svelte-jz8lnl">Get Started</p> <nav class="col-links svelte-jz8lnl"><a href="/quick-start" class="svelte-jz8lnl">Quick Start Guide</a> <a href="/docs" class="svelte-jz8lnl">Full Documentation</a> <a href="/docs#authentication" class="svelte-jz8lnl">OAuth 2.1 Setup</a> <a href="/workspace-mcp-cloud" class="svelte-jz8lnl">Managed Cloud Hosting</a></nav></div> <div class="footer-col"><p class="col-title svelte-jz8lnl">Community</p> <nav class="col-links svelte-jz8lnl"><a href="https://github.com/taylorwilsdon/google_workspace_mcp" target="_blank" rel="noopener noreferrer" class="svelte-jz8lnl">GitHub</a> <a href="https://modelcontextprotocol.io" target="_blank" rel="noopener noreferrer" class="svelte-jz8lnl">MCP Protocol</a></nav></div></div> <div class="footer-bottom svelte-jz8lnl"><p class="copyright svelte-jz8lnl">© 2026 Workspace MCP</p> <div class="legal svelte-jz8lnl"><a href="/privacy" class="svelte-jz8lnl">Privacy</a> <span class="dot svelte-jz8lnl">·</span> <a href="/terms" class="svelte-jz8lnl">Terms</a> <span class="dot svelte-jz8lnl">·</span> <a href="https://github.com/taylorwilsdon/google_workspace_mcp/blob/main/LICENSE" target="_blank" rel="noopener noreferrer" class="svelte-jz8lnl">MIT License</a></div></div> <p class="trademark-note svelte-jz8lnl">Workspace MCP is an independent open-source project and is not affiliated with, endorsed by, or sponsored by Google LLC. Google and Google Workspace are trademarks of Google LLC.</p></div></footer><!----></div><!--]--><!--]--> <!--[-1--><!--]--><!--]--> 83 84
84<script> 85 { 86 __sveltekit_1p8wk7r = { 87 base: new URL(".", location).pathname.slice(0, -1) 88 }; 89 90 const element = document.currentScript.parentElement; 91 92 Promise.all([ 93 import("./_app/immutable/entry/start.CKoYa73z.js"), 94 import("./_app/immutable/entry/app.DWFS0oec.js") 95 ]).then(([kit, app]) => { 96 kit.start(app, element, { 97 node_ids: [0, 5], 98 data: [null,null], 99 form: null, 100 error: null 101 }); 102 }); 103 } 104 </script>
104 105 </div> 106 107 <!-- Google Analytics (deferred to avoid blocking render) --> 108
108<script> 109 if (location.hostname === "workspacemcp.com") { 110 window.dataLayer = window.dataLayer || []; 111 window.gtag = function () { 112 window.dataLayer.push(arguments); 113 }; 114 gtag("js", new Date()); 115 gtag("config", "G-ZRM8QSDLF3", { 116 ...(new URLSearchParams(location.search).get("debug_mode") === "true" 117 ? { debug_mode: true } 118 : {}), 119 }); 120 var s = document.createElement("script"); 121 s.src = "https://www.googletagmanager.com/gtag/js?id=G-ZRM8QSDLF3"; 122 s.async = true; 123 document.body.appendChild(s); 124 } 125 </script>
125 126
126<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"18b2bb21a30845a69844a4aff7559ba3","r":1,"spa":2}' crossorigin="anonymous"></script>
126 127</body> 128</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.