# How to connect Google Sheets to Muse

```json
{
  "title": "How to connect Google Sheets to Muse",
  "toolkit": "Google Sheets",
  "toolkit_slug": "googlesheets",
  "framework": "Muse",
  "framework_slug": "muse",
  "url": "https://composio.dev/toolkits/googlesheets/framework/muse",
  "markdown_url": "https://composio.dev/toolkits/googlesheets/framework/muse.md",
  "updated_at": "2026-10-04T16:35:20.753Z"
}
```

## Introduction

Muse is Meta's AI assistant. It can connect to outside tools through custom connectors, which use the Model Context Protocol (MCP).
This guide explains how to connect Google Sheets to Muse using Composio Connect, which handles OAuth, token refresh, and reliability so you do not have to. You add Composio as a custom connector once, then ask Muse to work with Google Sheets in plain language.

## Also integrate Google Sheets with

- [Claude Code](https://composio.dev/toolkits/googlesheets/framework/claude-code)
- [Cursor](https://composio.dev/toolkits/googlesheets/framework/cursor)
- [ChatGPT](https://composio.dev/toolkits/googlesheets/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/googlesheets/framework/claude-cowork)
- [Antigravity](https://composio.dev/toolkits/googlesheets/framework/antigravity)
- [OpenAI Agents SDK](https://composio.dev/toolkits/googlesheets/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/googlesheets/framework/claude-agents-sdk)
- [Grok Bot](https://composio.dev/toolkits/googlesheets/framework/grok-bot)
- [Codex](https://composio.dev/toolkits/googlesheets/framework/codex)
- [Kimi Code](https://composio.dev/toolkits/googlesheets/framework/kimi)
- [Grok Build](https://composio.dev/toolkits/googlesheets/framework/grok-build)
- [VS Code](https://composio.dev/toolkits/googlesheets/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/googlesheets/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/googlesheets/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/googlesheets/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/googlesheets/framework/atomic-agent)
- [CLI](https://composio.dev/toolkits/googlesheets/framework/cli)
- [Google ADK](https://composio.dev/toolkits/googlesheets/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/googlesheets/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/googlesheets/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/googlesheets/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/googlesheets/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/googlesheets/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/googlesheets/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/googlesheets/framework/autogen)

## TL;DR

- Cross-app workflows across 1,500+ apps from a single plugin layer.
- On-demand tool loading so Muse only loads the tools needed for the current task.
- Programmatic tool calling through a remote workbench for complex, multi-step workflows.
- Multi-account support so users can connect and switch between multiple accounts for the same app.
- Shared account access so teams or agents can work through common business accounts and service connections.
- Managed authentication with OAuth handling, credential storage, and token refresh managed by Composio.
- Safer credential handling so app credentials stay outside the model context and tool responses.
- User-level account isolation so actions run against the correct connected account instead of mixing user access.

## Connect Google Sheets to Muse

### Connecting Google Sheets to Muse
You add Composio to Muse once as a custom connector, then connect Google Sheets from the chat.

## What is the Google Sheets MCP server, and what's possible with it?

The Google Sheets MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Google Sheets account. It provides structured and secure access to your spreadsheets, worksheets, cell values, charts, and file metadata, so your agent can create spreadsheets, read and update data, organize worksheets, manage charts, and export reports on your behalf.
- Spreadsheet creation and discovery: Have your agent create new spreadsheets, search existing files, inspect spreadsheet details, and list worksheet names.
- Data reading and updates: Let the agent retrieve cell ranges, append new records, update values in bulk, clear ranges, and update or insert rows by a chosen key.
- Worksheet organization: Direct your agent to add, copy, rename, reorder, hide, or delete worksheets, as well as insert, remove, resize, or hide rows and columns.
- Data cleanup and controls: Instruct your agent to sort ranges, apply or clear filters, find and replace text, add dropdown validation, and manage conditional formatting rules.
- Charts and report exports: Have your agent inspect existing charts, move or resize them, and export spreadsheets or selected worksheet ranges as PDF, XLSX, CSV, TSV, ODS, or ZIP files.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `GOOGLESHEETS_ADD_SHEET` | Add Sheet to Existing Spreadsheet | Adds a new sheet to a spreadsheet. Supports three sheet types: GRID, OBJECT, and DATA_SOURCE. SHEET TYPES: - GRID (default): Standard spreadsheet with rows/columns. Use properties to set dimensions, tab color, etc. - OBJECT: Sheet containing a chart. Requires objectSheetConfig with chartSpec (basicChart or pieChart). - DATA_SOURCE: Sheet connected to BigQuery. Requires dataSourceConfig with bigQuery spec and bigquery.readonly OAuth scope. OTHER NOTES: - Sheet names must be unique; use forceUnique=true to auto-append suffix (_2, _3) if name exists - For tab colors, use EITHER rgbColor OR themeColor, not both - Avoid 'index' when creating sheets in parallel (causes errors) - OBJECT sheets are created via addChart with position.newSheet=true - DATA_SOURCE sheets require bigquery.readonly OAuth scope Use cases: Add standard grid sheet, create chart on dedicated sheet, connect to BigQuery data source. |
| `GOOGLESHEETS_AGGREGATE_COLUMN_DATA` | Aggregate Column Data | Searches for rows where a specific column matches a value and performs mathematical operations on data from another column. |
| `GOOGLESHEETS_APPEND_DIMENSION` | Append Dimension | Tool to append new rows or columns to a sheet, increasing its size. Use when you need to add empty rows or columns to an existing sheet. |
| `GOOGLESHEETS_AUTO_RESIZE_DIMENSIONS` | Auto-Resize Rows or Columns | Auto-fit column widths or row heights for a dimension range using batchUpdate.autoResizeDimensions. Use when you need to automatically adjust row heights or column widths to fit content after writing data. |
| `GOOGLESHEETS_BATCH_CLEAR_VALUES_BY_DATA_FILTER` | Batch Clear Values By Data Filter | Clears one or more ranges of values from a spreadsheet using data filters. The caller must specify the spreadsheet ID and one or more DataFilters. Ranges matching any of the specified data filters will be cleared. Only values are cleared -- all other properties of the cell (such as formatting, data validation, etc..) are kept. |
| `GOOGLESHEETS_BATCH_GET` | Batch get spreadsheet | Retrieves data from specified cell ranges in a Google Spreadsheet. |
| `GOOGLESHEETS_BATCH_UPDATE_VALUES_BY_DATA_FILTER` | Batch Update Values by Data Filter | Tool to update values in ranges matching data filters. Use when you need to update specific data in a Google Sheet based on criteria rather than fixed cell ranges. |
| `GOOGLESHEETS_CLEAR_BASIC_FILTER` | Clear Basic Filter | Tool to clear the basic filter from a sheet. Use when you need to remove an existing basic filter from a specific sheet within a Google Spreadsheet. |
| `GOOGLESHEETS_CLEAR_VALUES` | Clear spreadsheet values | Clears cell content (preserving formatting and notes) from a specified A1 notation range in a Google Spreadsheet; the range must correspond to an existing sheet and cells. |
| `GOOGLESHEETS_CREATE_CHART` | Create Chart in Google Sheets | Create a chart in a Google Sheets spreadsheet using the specified data range and chart type. Conditional requirements: - Provide either a simple chart via chart_type + data_range (basicChart), OR supply a full chart_spec supporting all chart types. Exactly one approach should be used. - When using chart_spec, set exactly one of the union fields (basicChart \| pieChart \| bubbleChart \| candlestickChart \| histogramChart \| waterfallChart \| treemapChart \| orgChart \| scorecardChart). |
| `GOOGLESHEETS_CREATE_GOOGLE_SHEET1` | Create a Google Sheet | Creates a new Google Spreadsheet in Google Drive. If a title is provided, the spreadsheet will be created with that name. If no title is provided, Google will create a spreadsheet with a default name like 'Untitled spreadsheet'. Optionally create the spreadsheet in a specific folder by providing either: - folder_id: The Google Drive folder ID (preferred, unambiguous) - folder_name: The folder name (searches for exact match; if multiple folders match, returns choices) If neither folder_id nor folder_name is provided, the spreadsheet is created in the root Drive folder. |
| `GOOGLESHEETS_CREATE_SPREADSHEET_COLUMN` | Create spreadsheet column | Creates a new column in a Google Spreadsheet. Specify the target sheet using sheet_id (numeric) or sheet_name (text). If neither is provided, defaults to the first sheet (sheet_id=0). |
| `GOOGLESHEETS_CREATE_SPREADSHEET_ROW` | Create spreadsheet row | Inserts a new, empty row into a specified sheet of a Google Spreadsheet at a given index, optionally inheriting formatting from the row above. |
| `GOOGLESHEETS_DELETE_CHART` | Delete Chart from Google Sheets | Delete an existing chart from a Google Sheets spreadsheet. Use this action when you need to remove a chart that is no longer needed or needs to be replaced. This action is irreversible — once a chart is deleted, it cannot be recovered. The chart data source (the cells containing the data) remains unchanged; only the chart visualization is removed. |
| `GOOGLESHEETS_DELETE_DIMENSION` | Delete Dimension (Rows/Columns) | Tool to delete specified rows or columns from a sheet in a Google Spreadsheet. Use when you need to remove a range of rows or columns. |
| `GOOGLESHEETS_DELETE_SHEET` | Delete Sheet | Tool to delete a sheet (worksheet) from a spreadsheet. Use when you need to remove a specific sheet from a Google Sheet document. |
| `GOOGLESHEETS_FIND_REPLACE` | Find and Replace in Spreadsheet | Tool to find and replace text in a Google Spreadsheet. Use when you need to fix formula errors, update values, or perform bulk text replacements across cells. Common use cases: - Fix #ERROR! cells by replacing with empty string or correct formula - Update old values with new ones across multiple cells - Fix formula references or patterns - Clean up data formatting issues |
| `GOOGLESHEETS_FORMAT_CELL` | Format cell | Applies text and background cell formatting to a specified range in a Google Sheets worksheet. |
| `GOOGLESHEETS_GET_CONDITIONAL_FORMAT_RULES` | Get conditional format rules | List conditional formatting rules for each sheet (or a selected sheet) in a normalized, easy-to-edit form. Use when you need to view, audit, or prepare to modify conditional format rules. |
| `GOOGLESHEETS_GET_DATA_VALIDATION_RULES` | Get Data Validation Rules | Tool to extract data validation rules from a Google Sheets spreadsheet. Use when you need to understand dropdown lists, allowed values, custom formulas, or other validation constraints for cells. |
| `GOOGLESHEETS_GET_SHEET_NAMES` | Get sheet names | Lists all worksheet names from a specified Google Spreadsheet (which must exist), useful for discovering sheets before further operations. |
| `GOOGLESHEETS_GET_SPREADSHEET_BY_DATA_FILTER` | Get Spreadsheet by Data Filter | Returns the spreadsheet at the given ID, filtered by the specified data filters. Use this tool when you need to retrieve specific subsets of data from a Google Sheet based on criteria like A1 notation, developer metadata, or grid ranges. Important: This action is designed for filtered data retrieval. While it accepts empty filters and returns full metadata in that case, GOOGLESHEETS_GET_SPREADSHEET_INFO is the recommended action for unfiltered spreadsheet retrieval. |
| `GOOGLESHEETS_GET_SPREADSHEET_INFO` | Get spreadsheet info | Retrieves metadata for a Google Spreadsheet using its ID. By default, returns essential information (ID, title, sheet properties) to avoid payload size issues. Use the fields parameter for comprehensive metadata or specific fields. |
| `GOOGLESHEETS_INSERT_DIMENSION` | Insert Dimension in Google Sheet | Tool to insert new rows or columns into a sheet at a specified location. Use when you need to add empty rows or columns within an existing Google Sheet. |
| `GOOGLESHEETS_LOOKUP_SPREADSHEET_ROW` | Look up spreadsheet row | Finds the first row in a Google Spreadsheet where a cell's entire content exactly matches the query string, searching within a specified A1 notation range or the first sheet by default. |
| `GOOGLESHEETS_MUTATE_CONDITIONAL_FORMAT_RULES` | Mutate conditional format rules | Add, update, delete, or reorder conditional format rules on a Google Sheet. Use when you need to create, modify, or remove conditional formatting without manually building batchUpdate requests. Supports four operations: ADD (create new rule), UPDATE (replace existing rule), DELETE (remove rule), MOVE (reorder rules by changing index). |
| `GOOGLESHEETS_SEARCH_DEVELOPER_METADATA` | Search Developer Metadata | Tool to search for developer metadata in a spreadsheet. Use when you need to find specific metadata entries based on filters. |
| `GOOGLESHEETS_SEARCH_SPREADSHEETS` | Search Spreadsheets | Search for Google Spreadsheets using various filters including name, content, date ranges, and more. |
| `GOOGLESHEETS_SET_BASIC_FILTER` | Set Basic Filter | Tool to set a basic filter on a sheet in a Google Spreadsheet. Use when you need to filter or sort data within a specific range on a sheet. |
| `GOOGLESHEETS_SET_DATA_VALIDATION_RULE` | Set Data Validation Rule | Tool to set or clear data validation rules (including dropdowns) on a range in Google Sheets. Use when you need to apply dropdown lists, range-based dropdowns, or custom formula validation to cells. |
| `GOOGLESHEETS_SPREADSHEETS_SHEETS_COPY_TO` | Copy Sheet to Another Spreadsheet | Tool to copy a single sheet from a spreadsheet to another spreadsheet. Use when you need to duplicate a sheet into a different spreadsheet. |
| `GOOGLESHEETS_SPREADSHEETS_VALUES_APPEND` | Append Values to Spreadsheet | Tool to append values to a spreadsheet. Use when you need to add new data to the end of an existing table in a Google Sheet. |
| `GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_CLEAR` | Batch Clear Spreadsheet Values | Tool to clear one or more ranges of values from a spreadsheet. Use when you need to remove data from specific cells or ranges while keeping formatting and other properties intact. |
| `GOOGLESHEETS_SPREADSHEETS_VALUES_BATCH_GET_BY_DATA_FILTER` | Batch Get Spreadsheet Values by Data Filter | Tool to return one or more ranges of values from a spreadsheet that match the specified data filters. Use when you need to retrieve specific data sets based on filtering criteria rather than entire sheets or fixed ranges. |
| `GOOGLESHEETS_UPDATE_CHART` | Update Chart in Google Sheets | Update the specification of an existing chart in a Google Sheets spreadsheet. Use this action when you need to modify an existing chart's properties such as its title, chart type, data ranges, colors, axes, or other visual settings. This action updates the chart's specification but does not change its position or size on the sheet. |
| `GOOGLESHEETS_UPDATE_DIMENSION_PROPERTIES` | Update Dimension Properties (Hide/Unhide & Resize) | Tool to hide/unhide rows or columns and set row heights or column widths. Use when you need to change visibility or pixel sizing of dimensions in a Google Sheet. |
| `GOOGLESHEETS_UPDATE_SHEET_PROPERTIES` | Update Sheet Properties | Tool to update properties of a sheet (worksheet) within a Google Spreadsheet, such as its title, index, visibility, tab color, or grid properties. Use this when you need to modify the metadata or appearance of a specific sheet. |
| `GOOGLESHEETS_UPDATE_SPREADSHEET_PROPERTIES` | Update Spreadsheet Properties | Tool to update SPREADSHEET-LEVEL properties such as the spreadsheet's title, locale, time zone, or auto-recalculation settings. Use when you need to modify the overall configuration of a Google Spreadsheet. NOTE: To update individual SHEET properties (like renaming a specific sheet/tab), use GOOGLESHEETS_UPDATE_SHEET_PROPERTIES instead. |
| `GOOGLESHEETS_UPDATE_VALUES_BATCH` | Batch update spreadsheet values | Tool to set values in one or more ranges of a spreadsheet. Use when you need to update multiple ranges in a single operation for better performance. |
| `GOOGLESHEETS_UPSERT_ROWS` | Upsert Rows (Smart Update/Insert) | Upsert rows - update existing rows by key, append new ones. Automatically handles column mapping and partial updates. Use for: CRM syncs (match Lead ID), transaction imports (match Transaction ID), inventory updates (match SKU), calendar syncs (match Event ID). Features: - Auto-adds missing columns to sheet - Partial column updates (only update Phone + Status, preserve other columns) - Column order doesn't matter (auto-maps by header name) - Prevents duplicates by matching key column Example inputs: - Contact update: keyColumn='Email', headers=['Email','Phone','Status'], data=[['john@ex.com','555-0101','Active']] - Inventory sync: keyColumn='SKU', headers=['SKU','Stock','Price'], data=[['WIDGET-001',50,9.99],['GADGET-002',30,19.99]] - CRM lead update: keyColumn='Lead ID', headers=['Lead ID','Score','Status'], data=[['L-12345',85,'Hot']] - Partial update: keyColumn='Email', headers=['Email','Phone'] (only updates Phone, preserves Name/Address/etc) |
| `GOOGLESHEETS_VALUES_GET` | Get spreadsheet values | Returns a range of values from a spreadsheet. Use when you need to read data from specific cells or ranges in a Google Sheet. |
| `GOOGLESHEETS_VALUES_UPDATE` | Update spreadsheet values | Tool to set values in a range of a Google Spreadsheet. Use when you need to update or overwrite existing cell values in a specific range. |

## Supported Triggers

| Trigger slug | Name | Description |
|---|---|---|
| `GOOGLESHEETS_AGGREGATE_METRIC_CHANGED_TRIGGER` | Aggregate Metric Changed | Triggers when an aggregate metric (SUM/COUNT/AVG/MIN/MAX) changes in a Google Sheets spreadsheet. This trigger monitors an aggregate calculation on a target column (optionally filtered by a search column/value) and fires when the calculated result changes. |
| `GOOGLESHEETS_CELL_RANGE_VALUES_CHANGED_TRIGGER` | Cell Range Values Changed | Triggers when values in a specified A1 range change in Google Sheets. This trigger monitors a specific cell or range of cells and fires when any values change. |
| `GOOGLESHEETS_CONDITIONAL_FORMAT_RULE_CHANGED_TRIGGER` | Conditional Format Rule Changed | Triggers when conditional formatting rules change in a Google Spreadsheet. Detects when rules are added, updated, or removed. Uses snapshot-based diffing to detect changes between polls. |
| `GOOGLESHEETS_DATA_VALIDATION_RULE_CHANGED_TRIGGER` | Data Validation Rule Changed | Triggers when data validation rules change (added/updated/removed) in a Google Spreadsheet. Uses snapshot-based diffing to detect changes between polls. |
| `GOOGLESHEETS_DEVELOPER_METADATA_CHANGED_TRIGGER` | Developer Metadata Changed | Triggers when developer metadata entries change (new/updated/removed) in a Google Spreadsheet. Uses snapshot-based diffing to detect changes between polls. |
| `GOOGLESHEETS_FILTERED_RANGE_VALUES_CHANGED_TRIGGER` | Filtered Range Values Changed | Polling trigger that monitors Google Sheets filtered ranges for value changes. Uses snapshot-based diffing to detect when values matching a data filter change. Emits the matched values when changes are detected. |
| `GOOGLESHEETS_NEW_ROWS_TRIGGER` | New Rows in Google Sheet | Simple polling trigger that monitors Google Sheets for new rows. Detects when new rows are added and returns the complete row data. Perfect for triggering any workflow based on new sheet entries. |
| `GOOGLESHEETS_NEW_SHEET_ADDED_TRIGGER` | New Sheet Added in Google Spreadsheet | Polling trigger that detects when a new sheet is added to a Google Spreadsheet. |
| `GOOGLESHEETS_NEW_SPREADSHEET_CREATED_TRIGGER` | New Spreadsheet Created | Triggers when a new Google Spreadsheet is created. This trigger monitors Google Spreadsheets and fires when new spreadsheets are detected. Uses timestamp filtering to efficiently detect newly created spreadsheets. |
| `GOOGLESHEETS_SPREADSHEET_METADATA_CHANGED_TRIGGER` | Spreadsheet Metadata Changed | Polling trigger that detects when a Google Spreadsheet's metadata changes. Uses snapshot-based diffing to detect any changes in spreadsheet properties, sheets, named ranges, developer metadata, data sources, etc. |
| `GOOGLESHEETS_SPREADSHEET_PROPERTIES_CHANGED_TRIGGER` | Spreadsheet Properties Changed | Polling trigger that detects when a Google Spreadsheet's top-level properties change. Monitors properties such as title, locale, timeZone, and autoRecalc settings. |
| `GOOGLESHEETS_SPREADSHEET_ROW_CHANGED_TRIGGER` | Spreadsheet Row Changed | Triggers when a looked-up spreadsheet row changes. This trigger monitors a specific row (located by searching for a query value within a user-specified range) and fires when the row's values change, when the row appears, or when the row disappears. |
| `GOOGLESHEETS_SPREADSHEET_SEARCH_MATCH_TRIGGER` | Spreadsheet Search Match | Triggers when a new spreadsheet appears that matches a saved search. This trigger uses snapshot-based diffing to detect when spreadsheets matching the search criteria are newly created or become visible to the user. |
| `GOOGLESHEETS_TABLE_QUERY_RESULT_CHANGED_TRIGGER` | Table Query Result Changed | Triggers when the result set of a saved table query changes in Google Sheets. Detects rows added, removed, or updated in the query output. This trigger monitors the result of a SQL query against a Google Sheets table and fires when changes are detected. |
| `GOOGLESHEETS_TABLE_SCHEMA_CHANGED_TRIGGER` | Table Schema Changed | Polling trigger that detects when a table's schema changes in Google Sheets. Monitors columns added/removed/renamed and inferred type/format changes. Uses snapshot-based diffing to compare schemas between polls. |
| `GOOGLESHEETS_WORKSHEET_NAMES_CHANGED_TRIGGER` | Worksheet Names Changed | Triggers when the set of worksheet/tab names changes in a Google Spreadsheet. Detects when sheets are added, deleted, or renamed. |

## Troubleshooting

### 1. Why doesn't Muse show a button to add my API key?

Muse shows the button only when you ask it to open the secure credentials store.
- Start a new chat.
- Send the message from step 1 exactly as written.
- If Muse asks for the key in the chat, do not paste it. Ask Muse to open the secure credentials store.

### 2. Why does the Composio connection fail after I add my API key?

The key or the connector settings are not correct.
- Copy the full key from the Composio dashboard. It starts with ck_.
- Make sure the URL is https://connect.composio.dev/mcp and the header is x-consumer-api-key.
- Remove the Composio connector in Muse settings, then do steps 1 to 3 again.

### 3. Why doesn't Muse use the Composio tools for Google Sheets?

Muse may not pick the Composio connector for the request.
- Ask Muse to list its Composio tools.
- Name Composio and Google Sheets in your request, for example: Use Composio to connect to Google Sheets.
- If it still does not work, start a new chat and try again.

### 4. Why does Muse ask me to connect Google Sheets again?

Your Google Sheets connection expired or was removed.
- Open the link Muse gives you and sign in to Google Sheets again.
- Check that the Google Sheets connection shows as ACTIVE in the Composio dashboard.

### 5. What do I do if I pasted my API key into the chat?

Treat the key as exposed.
- Create a new API key in the Composio dashboard and delete the old one.
- Add the new key in Muse's secure credentials store, not in the chat.

## Creating MCP Server - Stand-alone vs Composio SDK

Once connected, Muse can access the Google Sheets MCP server through Composio to run the actions you authorize, using plain language in the chat.

## Complete Code

None listed.

## Conclusion

### Way Forward
Now that Google Sheets is connected, extend your setup by connecting the other apps you already use every day, so Muse can run true cross-app workflows end to end.
- Connect Calendar to turn threads into scheduled meetings automatically.
- Connect Slack or Teams to post summaries, approvals, and alerts where your team works.
- Connect Notion, Linear, Jira, or Asana to convert requests into tickets, tasks, and docs.
- Connect Drive, Dropbox, or OneDrive to fetch, file, and share attachments without manual steps.
Start with one workflow you do repeatedly, then keep adding apps as you find new handoffs. With everything behind a single connection, Muse can coordinate multiple tools safely and reliably in one conversation.

## How to build Google Sheets MCP Agent with another framework

- [Claude Code](https://composio.dev/toolkits/googlesheets/framework/claude-code)
- [Cursor](https://composio.dev/toolkits/googlesheets/framework/cursor)
- [ChatGPT](https://composio.dev/toolkits/googlesheets/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/googlesheets/framework/claude-cowork)
- [Antigravity](https://composio.dev/toolkits/googlesheets/framework/antigravity)
- [OpenAI Agents SDK](https://composio.dev/toolkits/googlesheets/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/googlesheets/framework/claude-agents-sdk)
- [Grok Bot](https://composio.dev/toolkits/googlesheets/framework/grok-bot)
- [Codex](https://composio.dev/toolkits/googlesheets/framework/codex)
- [Kimi Code](https://composio.dev/toolkits/googlesheets/framework/kimi)
- [Grok Build](https://composio.dev/toolkits/googlesheets/framework/grok-build)
- [VS Code](https://composio.dev/toolkits/googlesheets/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/googlesheets/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/googlesheets/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/googlesheets/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/googlesheets/framework/atomic-agent)
- [CLI](https://composio.dev/toolkits/googlesheets/framework/cli)
- [Google ADK](https://composio.dev/toolkits/googlesheets/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/googlesheets/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/googlesheets/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/googlesheets/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/googlesheets/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/googlesheets/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/googlesheets/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/googlesheets/framework/autogen)

## Related Toolkits

- [Notion](https://composio.dev/toolkits/notion) - Notion is a collaborative workspace for notes, docs, wikis, and tasks. It streamlines team knowledge, project tracking, and workflow customization in one place.
- [Airtable](https://composio.dev/toolkits/airtable) - Airtable combines the flexibility of spreadsheets with the power of a database for easy project and data management. Teams use Airtable to organize, track, and collaborate with custom views and automations.
- [Asana](https://composio.dev/toolkits/asana) - Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.
- [Google Tasks](https://composio.dev/toolkits/googletasks) - Google Tasks is a to-do list and task management tool integrated into Gmail and Google Calendar. It helps you organize, track, and complete tasks across your Google ecosystem.
- [Linear](https://composio.dev/toolkits/linear) - Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.
- [Jira](https://composio.dev/toolkits/jira) - Jira is Atlassian’s platform for bug tracking, issue tracking, and agile project management. It helps teams organize work, prioritize tasks, and deliver projects efficiently.
- [Clickup](https://composio.dev/toolkits/clickup) - ClickUp is an all-in-one productivity platform for managing tasks, docs, goals, and team collaboration. It streamlines project workflows so teams can work smarter and stay organized in one place.
- [Monday](https://composio.dev/toolkits/monday) - Monday.com is a customizable work management platform for project planning and collaboration. It helps teams organize tasks, automate workflows, and track progress in real time.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agiled](https://composio.dev/toolkits/agiled) - Agiled is an all-in-one business management platform for CRM, projects, and finance. It helps you streamline workflows, consolidate client data, and manage business processes in one place.
- [AirOps MCP](https://composio.dev/toolkits/airops_mcp) - AirOps MCP is AirOps' managed content platform exposing brand context, knowledge bases, and workflows. Use it to give agents brand-aware content, automate content workflows, and track Brand Kit edits.
- [Amazing Marvin](https://composio.dev/toolkits/amazing_marvin) - Amazing Marvin is a personal productivity app for tasks, projects, habits, planning, time tracking, and rewards. It helps you build a flexible workflow that matches how you actually work.
- [ApptiveGrid](https://composio.dev/toolkits/apptivegrid) - ApptiveGrid is a collaborative no-code database and app platform for spaces, grids, forms, and structured records. It helps teams organize operational data, collect inputs, and build lightweight business apps without custom backend work.
- [Ascora](https://composio.dev/toolkits/ascora) - Ascora is a cloud-based field service management platform for service businesses. It streamlines scheduling, invoicing, and customer operations in one place.
- [Basecamp](https://composio.dev/toolkits/basecamp) - Basecamp is a project management and team collaboration tool by 37signals. It helps teams organize tasks, share files, and communicate efficiently in one place.
- [Boxhero](https://composio.dev/toolkits/boxhero) - Boxhero is a cloud-based inventory management platform for SMBs, offering real-time updates, barcode scanning, and team collaboration. It helps businesses streamline stock tracking and analytics for smarter inventory decisions.
- [Breathe HR](https://composio.dev/toolkits/breathehr) - Breathe HR is cloud-based HR software for SMEs to manage employee data, absences, and performance. It simplifies HR admin, making it easy to keep employee records accurate and up to date.
- [Breeze](https://composio.dev/toolkits/breeze) - Breeze is a project management platform designed to help teams plan, track, and collaborate on projects. It streamlines workflows and keeps everyone on the same page.
- [Bugherd](https://composio.dev/toolkits/bugherd) - Bugherd is a visual feedback and bug tracking tool for websites. It helps teams and clients report website issues directly on live sites for faster fixes.
- [Canny](https://composio.dev/toolkits/canny) - Canny is a platform for managing customer feedback and feature requests. It helps teams prioritize product decisions based on real user insights.

## Frequently Asked Questions

### Does Muse support MCP?

Yes. Muse supports custom connectors that use the Model Context Protocol (MCP). Composio connects as one custom connector over remote streamable HTTP at https://connect.composio.dev/mcp, and gives Muse access to Google Sheets and 1,500+ other apps.

### Where do I get the API key for the Composio connector?

Copy it from the Composio dashboard. It starts with ck_. Enter it only in Muse's secure credentials store, never in the chat.

### Can I connect more than one Google Sheets account to Muse?

Yes. Composio supports multiple connected accounts for the same app. Give each Google Sheets connection a name, such as work or personal, and tell Muse which one to use.

### How safe is my Google Sheets data with Composio?

Tokens, keys, and configuration are encrypted at rest and in transit. Your Composio API key stays in Muse's secure credentials store, not in the chat or the model context. Composio is SOC 2 Type 2 compliant.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
