{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-taylorwilsdon-google_workspace_mcp","slug":"mcp-taylorwilsdon-google_workspace_mcp","name":"google_workspace_mcp","type":"mcp","url":"https://github.com/taylorwilsdon/google_workspace_mcp","page_url":"https://unfragile.ai/mcp-taylorwilsdon-google_workspace_mcp","categories":["mcp-servers"],"tags":["ai","g-suite","gmail","google-calendar","google-chat","google-docs","google-drive","google-forms","google-sheets","google-tasks","google-workspace","gsuite","llm","llm-tools","mcp","mcp-server","model-context-protocol","model-context-protocol-server","model-context-protocol-servers","workspace"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_0","uri":"capability://tool.use.integration.multi.service.mcp.tool.registry.with.dynamic.tier.based.loading","name":"multi-service mcp tool registry with dynamic tier-based loading","description":"Exposes 90+ tools across 12 Google Workspace services (Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, Chat, Custom Search, Contacts, Apps Script) through a unified MCP protocol interface. Uses a ToolTierLoader system (core/tool_tier_loader.py) that dynamically imports tool modules based on CLI-specified tiers (core/extended/complete), allowing selective API exposure to manage quota consumption and complexity. Tools are registered in a dictionary mapping (main.py 176-187) and loaded at server startup, with each service module implementing standardized tool patterns for consistent MCP schema generation.","intents":["I want to expose Gmail, Calendar, and Drive tools to Claude Desktop without loading all 90+ tools and hitting API quotas","I need to selectively enable only core Gmail and Drive functionality for a multi-user deployment","I want to add new Google Workspace services without modifying the core MCP server logic"],"best_for":["AI assistant builders integrating Google Workspace into Claude Desktop or LM Studio","Teams deploying multi-user MCP servers with quota constraints","Developers building custom AI agents that need selective Google Workspace access"],"limitations":["Tool tier system is static at startup — cannot dynamically enable/disable tools per user session without server restart","No built-in tool usage analytics or per-user quota tracking — quota management is delegated to Google API quotas","Tool discovery is MCP-based only — no web UI or dashboard for browsing available tools"],"requires":["Python 3.10+","MCP-compatible client (Claude Desktop, LM Studio, VS Code MCP Client)","Google OAuth 2.0 or 2.1 credentials configured","core/tool_tiers.yaml configuration file with tier definitions"],"input_types":["CLI arguments (--tools, --tool-tier, --transport)","Environment variables (.env file)","MCP protocol requests (JSON-RPC)"],"output_types":["MCP tool schema definitions (JSON)","Tool execution results (JSON/text)","Error responses with retry metadata"],"categories":["tool-use-integration","mcp-server"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_1","uri":"capability://tool.use.integration.oauth.2.0.2.1.session.based.authentication.with.credential.persistence","name":"oauth 2.0/2.1 session-based authentication with credential persistence","description":"Implements dual OAuth authentication modes (OAuth 2.0 legacy flow and OAuth 2.1 with session management) via service authentication decorators that inject credentials into tool execution contexts. Credentials are stored persistently (location configurable via storage backend) and session context is maintained across tool calls, eliminating per-call re-authentication. The authentication system (core/auth.py) handles token refresh, expiration, and multi-user credential isolation in cloud deployments. Single-user mode (--single-user flag) uses local credential storage; multi-user mode requires external session storage (Redis, database) for credential isolation.","intents":["I want to authenticate once and have all subsequent Gmail/Drive/Calendar tools use cached credentials","I need to deploy this MCP server for multiple users without credential leakage between sessions","I want to support both OAuth 2.0 (legacy) and OAuth 2.1 (modern) flows for backward compatibility"],"best_for":["Solo developers using Claude Desktop with local credential storage","Teams deploying multi-user cloud MCP servers with session isolation requirements","Organizations migrating from OAuth 2.0 to OAuth 2.1 incrementally"],"limitations":["Credential storage is not encrypted by default — requires external secure storage backend (Redis, encrypted database) for production","Token refresh logic relies on Google's token expiration signals — no proactive refresh before expiration","Single-user mode stores credentials in plaintext on disk — suitable only for local development, not production"],"requires":["Google OAuth 2.0 or 2.1 credentials (client ID, client secret)","Redirect URI configured in Google Cloud Console matching deployment URL","For multi-user: Redis or database backend for session storage (configuration via environment variables)","Python 3.10+ with google-auth library"],"input_types":["OAuth authorization code (from user browser redirect)","Stored refresh tokens (from credential storage)","Service account JSON (optional, for Apps Script automation)"],"output_types":["Access tokens (injected into tool execution context)","Session metadata (user ID, expiration time)","Error responses (invalid token, expired session)"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_10","uri":"capability://tool.use.integration.google.chat.message.sending.and.conversation.management","name":"google chat message sending and conversation management","description":"Provides 6+ Chat tools for sending messages to spaces and direct messages, retrieving conversation history, and managing chat spaces. Tools support message formatting (bold, italic, links) and file attachments. Chat operations include creating spaces, adding members, and retrieving message threads. The Chat module (tools/chat.py) handles message threading and implements pagination for conversation history. Supports both direct messages (DM) and space-based conversations.","intents":["I want to send a formatted message to a Google Chat space with attachments","I need to retrieve conversation history from a specific chat thread","I want to create a new Chat space and add members programmatically"],"best_for":["AI assistants automating team communication and notifications","Developers building Chat-integrated agents for message delivery","Teams automating chat workflows and conversation management"],"limitations":["Message formatting is limited to basic styles (bold, italic, links) — no rich formatting (tables, code blocks)","File attachments require public URLs — local file uploads not supported","Conversation history retrieval is limited to 100 messages per query — pagination required","Message editing is not supported — only deletion and new message creation"],"requires":["Google Chat API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Chat scope (chat.messages.create or chat.messages.readonly)","Valid Google Chat account with space access"],"input_types":["Space ID or direct message recipient (email or user ID)","Message text with formatting (bold, italic, links)","File attachment URL (public, accessible without authentication)","Thread ID (for threaded replies)"],"output_types":["Message metadata (message ID, sender, timestamp, thread ID)","Message content (text, formatting, attachments)","Conversation history (message list with metadata)","Space metadata (space ID, name, member list)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_11","uri":"capability://tool.use.integration.http.server.deployment.with.stdio.and.streamable.http.transport.modes","name":"http server deployment with stdio and streamable-http transport modes","description":"Implements dual transport modes for MCP server deployment: stdio (for local/desktop use) and streamable-http (for cloud/multi-user deployments). The SecureFastMCP class (core/server.py) extends FastMCP and configures transport based on CLI flag (--transport). Stdio mode pipes JSON-RPC requests/responses through standard input/output for Claude Desktop integration. Streamable-http mode exposes an HTTP server (configurable port) for remote client connections. Both modes support the same MCP protocol and tool registry. The server initialization (main.py) handles transport selection and startup.","intents":["I want to run this MCP server locally in Claude Desktop using stdio transport","I need to deploy this MCP server to a cloud server and expose it via HTTP for remote clients","I want to support both local and cloud deployments with the same codebase"],"best_for":["Solo developers using Claude Desktop with local MCP server","Teams deploying multi-user MCP servers to cloud infrastructure (Docker, Kubernetes)","Organizations supporting both desktop and cloud deployment models"],"limitations":["Stdio mode is single-connection only — not suitable for multi-user deployments","Streamable-http mode requires external reverse proxy (nginx, load balancer) for production TLS/SSL","No built-in rate limiting or request throttling — relies on Google API quotas for protection","No authentication/authorization layer in HTTP mode — assumes trusted network or external auth proxy"],"requires":["Python 3.10+ with FastMCP library","For stdio: Claude Desktop or compatible MCP client","For streamable-http: HTTP client library (requests, httpx) and network connectivity","Optional: Docker for containerized deployment"],"input_types":["CLI arguments (--transport stdio|streamable-http, --port for HTTP mode)","MCP protocol requests (JSON-RPC format)","Environment variables for configuration"],"output_types":["MCP protocol responses (JSON-RPC format)","HTTP status codes (for streamable-http mode)","Server logs (startup, request/response, errors)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_12","uri":"capability://safety.moderation.error.handling.and.retry.logic.with.exponential.backoff.for.api.quota.limits","name":"error handling and retry logic with exponential backoff for api quota limits","description":"Implements automatic retry logic with exponential backoff for transient API failures (rate limits, quota exhaustion, temporary service unavailability). The error handling system (core/error_handling.py or integrated in tool modules) detects quota-related errors from Google APIs and automatically retries with increasing delays (1s, 2s, 4s, 8s, etc.). Maximum retry attempts are configurable (default 3). Non-transient errors (authentication failures, invalid parameters) fail immediately without retry. Retry metadata is included in error responses to inform clients of retry attempts.","intents":["I want automatic retry on quota limit errors without manual intervention","I need to handle transient API failures gracefully and continue execution","I want visibility into retry attempts and backoff delays for debugging"],"best_for":["AI assistants running long-lived workflows that may encounter quota limits","Developers building resilient agents that need automatic failure recovery","Teams deploying multi-user servers with shared API quotas"],"limitations":["Retry logic is per-tool call only — no cross-tool transaction support for partial failures","Exponential backoff is fixed (1s, 2s, 4s, 8s) — not configurable per tool or quota type","Quota exhaustion errors are detected by HTTP status code (429) — may not catch all quota scenarios","No circuit breaker pattern — will continue retrying even if service is down for extended period"],"requires":["Python 3.10+ with retry/backoff libraries (tenacity, backoff)","Google API error responses with standard HTTP status codes"],"input_types":["API error responses (HTTP status code, error message)","Retry configuration (max attempts, backoff strategy)"],"output_types":["Retry metadata (attempt count, backoff delay, next retry time)","Final error response (after max retries exhausted)","Success response (after successful retry)"],"categories":["safety-moderation","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_13","uri":"capability://search.retrieval.custom.search.integration.for.web.search.and.result.ranking","name":"custom search integration for web search and result ranking","description":"Exposes 2+ Custom Search tools that integrate with Google Custom Search Engine (CSE) for web search and result ranking. Tools support search queries with optional filters (site:, filetype:) and return ranked results with metadata (title, URL, snippet, rank). The Custom Search module (tools/custom_search.py) uses the Custom Search API for server-side query execution and result ranking. Results are limited to top 10 by default (configurable). Supports both web search and image search modes.","intents":["I want to search the web for information and get ranked results with snippets","I need to search within specific domains or file types programmatically","I want to integrate web search results into an AI agent's knowledge base"],"best_for":["AI assistants augmenting knowledge with web search results","Developers building search-integrated agents for information retrieval","Teams automating research and competitive intelligence workflows"],"limitations":["Custom Search Engine (CSE) requires setup in Google Cloud Console — not automatic","Free tier is limited to 100 queries per day — paid tier required for higher volume","Results are limited to top 10 by default — pagination not supported","Search filters are limited to site: and filetype: — no advanced query operators"],"requires":["Google Custom Search API enabled in Google Cloud Console","Custom Search Engine (CSE) ID configured","API key for Custom Search API","Optional: Paid Custom Search tier for >100 queries/day"],"input_types":["Search query string (with optional site: and filetype: filters)","Result limit (1-10, default 10)"],"output_types":["Search results list (title, URL, snippet, rank)","Result metadata (total results count, search time)","Error responses (quota exceeded, invalid query)"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_14","uri":"capability://search.retrieval.google.contacts.directory.access.and.contact.metadata.retrieval","name":"google contacts directory access and contact metadata retrieval","description":"Provides 4+ Contacts tools for retrieving contact information from Google Contacts directory, including name, email, phone, and organization metadata. Tools support contact search by name or email and batch retrieval of contact lists. The Contacts module (tools/contacts.py) uses the People API to access contact data with structured metadata extraction. Supports filtering by contact group (personal, work, etc.). Contact creation and editing are not supported (read-only access).","intents":["I want to look up a contact's email address and phone number by name","I need to retrieve all contacts in a specific group (work, personal, etc.)","I want to find a contact's organization and title information"],"best_for":["AI assistants automating contact lookup and information retrieval","Developers building contact-integrated agents for directory access","Teams automating contact management and communication workflows"],"limitations":["Contact creation and editing are not supported — read-only access only","Contact search is limited to name and email — no advanced search filters","Contact retrieval is limited to 100 contacts per query — pagination required for large directories","Contact groups are limited to built-in groups (personal, work, etc.) — no custom groups"],"requires":["Google People API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Contacts scope (contacts.readonly)","Valid Google Contacts directory"],"input_types":["Contact name or email (for search)","Contact group filter (personal, work, etc.)"],"output_types":["Contact metadata (name, email, phone, organization, title)","Contact list with metadata","Contact group list"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_15","uri":"capability://tool.use.integration.google.apps.script.execution.and.deployment.management","name":"google apps script execution and deployment management","description":"Exposes 3+ Apps Script tools for executing Apps Script functions and managing script deployments. Tools support function execution with parameters and return value retrieval. The Apps Script module (tools/apps_script.py) uses the Apps Script API to execute scripts and retrieve execution results. Supports both synchronous and asynchronous function execution. Script deployments can be listed and managed. Execution errors are captured and returned with stack traces.","intents":["I want to execute a custom Apps Script function and get the return value","I need to run automation scripts on Google Workspace data programmatically","I want to integrate custom business logic via Apps Script with AI agents"],"best_for":["Developers extending Google Workspace with custom Apps Script logic","Teams automating complex workflows that require custom business logic","Organizations integrating legacy Apps Script automation with AI agents"],"limitations":["Apps Script execution is limited to functions defined in the script — no dynamic code execution","Execution timeout is 6 minutes — long-running scripts will fail","Function parameters are limited to primitive types (string, number, boolean) — no complex objects","Execution results are limited to 1MB — large return values will be truncated"],"requires":["Google Apps Script API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Apps Script scope (script.projects)","Valid Google Apps Script project with deployed functions"],"input_types":["Script project ID","Function name","Function parameters (string, number, boolean)"],"output_types":["Function return value (JSON-serializable)","Execution metadata (execution time, status)","Error responses (execution error, stack trace)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_2","uri":"capability://tool.use.integration.gmail.tool.suite.with.message.search.composition.and.label.management","name":"gmail tool suite with message search, composition, and label management","description":"Provides 15+ Gmail-specific tools including message search with advanced filters (from, to, subject, date range, labels), message composition with attachments, label creation/management, and thread operations. Tools use the Gmail API's query language for server-side filtering, reducing data transfer. Message retrieval returns structured metadata (sender, subject, date, labels) with optional full body/attachments. Label operations support hierarchical organization. The Gmail tool module (tools/gmail.py) implements common patterns: query building, pagination, error handling for quota limits, and automatic retry on transient failures.","intents":["I want to search Gmail for messages from a specific sender within a date range and extract metadata","I need to compose and send emails with attachments programmatically via AI assistant","I want to organize emails by creating labels and moving messages to folders"],"best_for":["AI assistants automating email workflows (inbox triage, response drafting)","Developers building email-integrated agents that need structured message retrieval","Teams automating email organization and label management at scale"],"limitations":["Message body retrieval is limited to 100KB per message — large emails with embedded content may be truncated","Attachment handling is metadata-only (filename, size) — binary attachment content is not exposed for security reasons","Search is limited to 500 results per query — pagination required for larger result sets","Draft composition does not support HTML formatting — plain text only"],"requires":["Gmail API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Gmail scope (gmail.modify or gmail.readonly)","Valid Gmail account with active mailbox"],"input_types":["Search query string (Gmail query syntax: from:, to:, subject:, before:, after:, label:)","Message composition parameters (to, subject, body, attachments)","Label names (string)"],"output_types":["Message list with metadata (ID, sender, subject, date, labels, snippet)","Full message object (headers, body, attachments metadata)","Label list with hierarchy","Composition confirmation (message ID, timestamp)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_3","uri":"capability://tool.use.integration.google.calendar.event.management.with.availability.checking.and.conflict.detection","name":"google calendar event management with availability checking and conflict detection","description":"Exposes 12+ Calendar tools for event creation, retrieval, updates, and deletion with built-in conflict detection and availability checking. Tools query calendar events within date ranges, extract attendee lists, and check for scheduling conflicts before creating new events. The Calendar module (tools/calendar.py) uses the Calendar API's freebusy endpoint for efficient availability queries without fetching full event details. Event creation supports recurrence rules (RRULE), attendee invitations, and reminder configuration. Supports multiple calendar access (primary and secondary calendars).","intents":["I want to check if a time slot is available before scheduling a meeting with specific attendees","I need to create a recurring calendar event with attendee notifications","I want to find all meetings on a specific date and extract attendee information"],"best_for":["AI assistants automating meeting scheduling and conflict resolution","Developers building calendar-integrated agents for availability checking","Teams automating calendar management and attendee coordination"],"limitations":["Freebusy queries are limited to 50 calendars per request — large multi-calendar deployments require batching","Recurring event modifications only support updating all instances or single instance, not partial series","Attendee availability is based on freebusy status only — does not account for calendar visibility settings","Timezone handling requires explicit timezone specification — defaults to UTC if not provided"],"requires":["Google Calendar API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Calendar scope (calendar.modify or calendar.readonly)","Valid Google Calendar account"],"input_types":["Date/time range (ISO 8601 format)","Event details (title, description, start time, end time, attendees)","Recurrence rules (RRULE format)","Calendar ID (primary or secondary calendar identifier)"],"output_types":["Event list with metadata (ID, title, start/end time, attendees, status)","Freebusy status (busy/free for time slots)","Conflict detection results (overlapping events)","Event creation confirmation (event ID, calendar link)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_4","uri":"capability://tool.use.integration.google.drive.file.operations.with.search.metadata.extraction.and.permission.management","name":"google drive file operations with search, metadata extraction, and permission management","description":"Provides 18+ Drive tools for file/folder operations including advanced search with filters (name, type, owner, modified date), file upload/download, metadata extraction (size, MIME type, permissions), and permission management (share, revoke access). Search uses Drive API's query language for server-side filtering. File operations support batch processing (list 100+ files). Permission management includes role-based access control (viewer, commenter, editor, owner). The Drive module (tools/drive.py) handles file streaming for large uploads/downloads and implements pagination for result sets.","intents":["I want to search for all spreadsheets modified in the last week and extract their metadata","I need to upload a file to Drive and share it with specific users with editor permissions","I want to list all files in a folder and check who has access to each file"],"best_for":["AI assistants automating file management and document organization","Developers building Drive-integrated agents for search and metadata extraction","Teams automating file sharing and permission management at scale"],"limitations":["File download is limited to 5GB per file — larger files require streaming or resumable download implementation","Search results are limited to 1000 files per query — pagination required for larger result sets","Permission changes are not retroactive — changing permissions does not affect previously shared links","Batch operations (move, delete) are not atomic — partial failures possible without transaction support"],"requires":["Google Drive API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Drive scope (drive.modify or drive.readonly)","Valid Google Drive account with storage quota"],"input_types":["Search query string (Drive query syntax: name:, mimeType:, modifiedTime:, owners:, trashed:)","File path or folder ID","File content (for upload)","Permission details (email, role: viewer/commenter/editor/owner)"],"output_types":["File list with metadata (ID, name, MIME type, size, owner, modified date, permissions)","File content (for download)","Permission list (email, role, access type)","Operation confirmation (file ID, action timestamp)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_5","uri":"capability://tool.use.integration.google.docs.document.editing.with.content.insertion.and.formatting","name":"google docs document editing with content insertion and formatting","description":"Exposes 8+ Docs tools for document creation, content retrieval, text insertion, and basic formatting operations. Tools use the Docs API's batchUpdate mechanism for atomic multi-step edits (insert text, apply formatting, update styles in single request). Document content is retrieved as structured text with formatting metadata. Text insertion supports position-based insertion (at specific character offset) and search-and-replace operations. Formatting includes bold, italic, underline, and heading styles. The Docs module (tools/docs.py) handles document structure parsing and implements error handling for concurrent edit conflicts.","intents":["I want to create a new Google Doc and insert formatted text with headings","I need to find and replace text in an existing document programmatically","I want to retrieve the full content of a document for analysis or summarization"],"best_for":["AI assistants automating document creation and content generation","Developers building document-integrated agents for content insertion and formatting","Teams automating document workflows and bulk content updates"],"limitations":["Formatting is limited to basic styles (bold, italic, underline, headings) — no support for complex formatting (tables, images, embedded objects)","Concurrent edits may cause revision conflicts — no built-in conflict resolution, requires manual retry","Document content retrieval is text-only — embedded images, charts, and objects are not returned","Search-and-replace is limited to plain text — no regex support"],"requires":["Google Docs API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Docs scope (docs.modify or docs.readonly)","Valid Google Docs document"],"input_types":["Document ID (from Drive or Docs URL)","Text content (for insertion)","Position/offset (for insertion location)","Search string and replacement text (for find-and-replace)","Formatting style (bold, italic, underline, heading level)"],"output_types":["Document content (structured text with formatting metadata)","Document metadata (title, owner, last modified)","Edit confirmation (revision ID, timestamp)","Formatting applied confirmation"],"categories":["tool-use-integration","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_6","uri":"capability://tool.use.integration.google.sheets.data.manipulation.with.cell.operations.and.formula.support","name":"google sheets data manipulation with cell operations and formula support","description":"Provides 12+ Sheets tools for spreadsheet operations including cell read/write, range operations, formula insertion, and data retrieval. Tools use the Sheets API's batchUpdate for atomic multi-cell updates. Data retrieval supports range queries (A1:Z100 notation) and returns structured data (values, formulas, formatting). Cell writes support formulas, numbers, text, and dates. The Sheets module (tools/sheets.py) implements automatic type detection (formula vs literal value) and includes error handling for invalid ranges and circular references. Supports multiple sheet tabs within a workbook.","intents":["I want to read data from a specific range in a spreadsheet and extract values","I need to write calculated formulas to cells and update multiple cells atomically","I want to append data to a sheet and retrieve the updated range"],"best_for":["AI assistants automating data entry and spreadsheet calculations","Developers building Sheets-integrated agents for data manipulation and analysis","Teams automating data workflows and bulk spreadsheet updates"],"limitations":["Range operations are limited to 10,000 cells per request — large spreadsheets require batching","Formula support is limited to Google Sheets native functions — no custom functions or Apps Script integration","Formatting operations are limited to basic styles (bold, color, alignment) — no conditional formatting","Circular reference detection is not automatic — requires manual validation"],"requires":["Google Sheets API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Sheets scope (spreadsheets.modify or spreadsheets.readonly)","Valid Google Sheets spreadsheet"],"input_types":["Spreadsheet ID (from Sheets URL or Drive)","Range notation (A1:Z100, Sheet1!A1:B10)","Cell values (text, numbers, dates, formulas)","Sheet tab name"],"output_types":["Cell values (structured data with types)","Formulas (formula text and calculated values)","Range metadata (dimensions, formatting)","Update confirmation (cells modified, timestamp)"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_7","uri":"capability://tool.use.integration.google.slides.presentation.creation.and.content.insertion","name":"google slides presentation creation and content insertion","description":"Exposes 6+ Slides tools for presentation creation, slide management, and content insertion (text, shapes, images). Tools use the Slides API's batchUpdate for atomic multi-element edits. Slide operations include adding/removing slides, inserting text boxes and shapes, and applying basic formatting. The Slides module (tools/slides.py) handles slide layout selection and element positioning. Content insertion supports text with formatting (bold, italic, color) and shape insertion with styling. Supports multiple slide layouts (title slide, content slide, blank).","intents":["I want to create a new presentation and add slides with formatted text","I need to insert text boxes and shapes into specific slides programmatically","I want to add images to slides and position them at specific coordinates"],"best_for":["AI assistants automating presentation generation and slide creation","Developers building Slides-integrated agents for content insertion","Teams automating presentation workflows and bulk slide generation"],"limitations":["Image insertion requires public image URLs — local file uploads not supported","Formatting is limited to basic styles (bold, italic, color) — no advanced formatting (shadows, gradients)","Slide layouts are limited to Google Slides built-in templates — custom layouts not supported","Element positioning requires pixel coordinates — no relative positioning or alignment helpers"],"requires":["Google Slides API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Slides scope (presentations.modify or presentations.readonly)","Valid Google Slides presentation"],"input_types":["Presentation ID (from Slides URL or Drive)","Slide layout type (title, content, blank)","Text content with formatting (bold, italic, color)","Image URL (public, accessible without authentication)","Element position (x, y coordinates in points)"],"output_types":["Slide list with metadata (slide ID, layout, element count)","Element metadata (type, position, size, formatting)","Creation confirmation (slide ID, element ID, timestamp)"],"categories":["tool-use-integration","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_8","uri":"capability://tool.use.integration.google.forms.survey.creation.and.response.collection","name":"google forms survey creation and response collection","description":"Provides 5+ Forms tools for form creation, question insertion, and response retrieval. Tools support multiple question types (multiple choice, short answer, paragraph, dropdown, linear scale). Form creation uses the Forms API's batchUpdate for atomic form structure definition. Response retrieval returns structured data (question ID, answer text, timestamp). The Forms module (tools/forms.py) handles question validation and response parsing. Supports form sharing and link generation for distribution.","intents":["I want to create a survey with multiple question types and get a shareable link","I need to retrieve all responses from a form and extract answers by question","I want to add new questions to an existing form programmatically"],"best_for":["AI assistants automating survey creation and data collection","Developers building Forms-integrated agents for feedback collection","Teams automating survey workflows and response analysis"],"limitations":["Question types are limited to Google Forms built-in types — no custom question types","Response retrieval is limited to 10,000 responses per query — large surveys require pagination","Form customization is limited to title and description — no custom branding or styling","Conditional logic (skip logic) is not supported — all questions appear in sequence"],"requires":["Google Forms API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Forms scope (forms.modify or forms.readonly)","Valid Google Forms form"],"input_types":["Form ID (from Forms URL or Drive)","Question type (multiple_choice, short_answer, paragraph, dropdown, linear_scale)","Question text and options","Form title and description"],"output_types":["Form metadata (title, description, response count, edit link)","Question list with metadata (question ID, type, text, options)","Response list (question ID, answer text, timestamp, respondent email)","Shareable form link"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-taylorwilsdon-google_workspace_mcp__cap_9","uri":"capability://tool.use.integration.google.tasks.task.list.management.with.hierarchical.organization","name":"google tasks task list management with hierarchical organization","description":"Exposes 8+ Tasks tools for task creation, retrieval, updates, and list management with hierarchical organization (parent-child task relationships). Tools support task status tracking (needsAction, completed), due dates, and notes. Task lists can be created and organized hierarchically. The Tasks module (tools/tasks.py) handles task completion status updates and implements pagination for large task lists. Supports moving tasks between lists and updating task metadata (title, notes, due date).","intents":["I want to create a task list and add tasks with due dates and subtasks","I need to mark tasks as complete and retrieve all pending tasks","I want to organize tasks hierarchically with parent-child relationships"],"best_for":["AI assistants automating task management and to-do list organization","Developers building Tasks-integrated agents for productivity workflows","Teams automating task tracking and project management"],"limitations":["Task hierarchy is limited to 2 levels (parent-child) — no deep nesting","Task retrieval is limited to 100 tasks per query — pagination required for large lists","Recurring tasks are not supported — one-time tasks only","Task assignment to other users is not supported — tasks are personal only"],"requires":["Google Tasks API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Tasks scope (tasks.modify or tasks.readonly)","Valid Google Tasks account"],"input_types":["Task list ID (primary or custom list)","Task title and description","Due date (ISO 8601 format)","Parent task ID (for subtasks)","Task status (needsAction, completed)"],"output_types":["Task list with metadata (list ID, title, task count)","Task list with metadata (task ID, title, due date, status, parent task ID)","Task completion confirmation (task ID, status, timestamp)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":50,"verified":false,"data_access_risk":"high","permissions":["Python 3.10+","MCP-compatible client (Claude Desktop, LM Studio, VS Code MCP Client)","Google OAuth 2.0 or 2.1 credentials configured","core/tool_tiers.yaml configuration file with tier definitions","Google OAuth 2.0 or 2.1 credentials (client ID, client secret)","Redirect URI configured in Google Cloud Console matching deployment URL","For multi-user: Redis or database backend for session storage (configuration via environment variables)","Python 3.10+ with google-auth library","Google Chat API enabled in Google Cloud Console","OAuth 2.0/2.1 credentials with Chat scope (chat.messages.create or chat.messages.readonly)"],"failure_modes":["Tool tier system is static at startup — cannot dynamically enable/disable tools per user session without server restart","No built-in tool usage analytics or per-user quota tracking — quota management is delegated to Google API quotas","Tool discovery is MCP-based only — no web UI or dashboard for browsing available tools","Credential storage is not encrypted by default — requires external secure storage backend (Redis, encrypted database) for production","Token refresh logic relies on Google's token expiration signals — no proactive refresh before expiration","Single-user mode stores credentials in plaintext on disk — suitable only for local development, not production","Message formatting is limited to basic styles (bold, italic, links) — no rich formatting (tables, code blocks)","File attachments require public URLs — local file uploads not supported","Conversation history retrieval is limited to 100 messages per query — pagination required","Message editing is not supported — only deletion and new message creation","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.5445777859232113,"quality":0.5,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-05-03T14:23:34.856Z","last_commit":"2026-05-03T14:21:23Z"},"community":{"stars":2274,"forks":701,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-taylorwilsdon-google_workspace_mcp","compare_url":"https://unfragile.ai/compare?artifact=mcp-taylorwilsdon-google_workspace_mcp"}},"signature":"OhRxszP23xuugVDnJgK4xkrWNIaQLOohSAgN6ZhhtHSALv1GBZ9hmJaxeMNe9PhcOtF8GYOHO6szID2tC7uABg==","signedAt":"2026-06-20T09:39:03.470Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-taylorwilsdon-google_workspace_mcp","artifact":"https://unfragile.ai/mcp-taylorwilsdon-google_workspace_mcp","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-taylorwilsdon-google_workspace_mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}