# How to connect Eraser MCP with ChatGPT Work

```json
{
  "title": "How to connect Eraser MCP with ChatGPT Work",
  "toolkit": "Eraser MCP",
  "toolkit_slug": "eraser_mcp",
  "framework": "ChatGPT Work",
  "framework_slug": "chatgpt",
  "url": "https://composio.dev/toolkits/eraser_mcp/framework/chatgpt",
  "markdown_url": "https://composio.dev/toolkits/eraser_mcp/framework/chatgpt.md",
  "updated_at": "2026-09-01T05:39:30.390Z"
}
```

## Introduction

### How to connect Eraser MCP with ChatGPT Work
[ChatGPT Work](https://openai.com/chatgpt-work/) is an agent inside ChatGPT built for your most ambitious work. It takes action across your apps and files, stays with a project for hours, and turns a goal into finished materials like sheets, slides, and docs - not just answers.
In this guide, I will explain the easiest and most secure way to connect your Eraser account to ChatGPT Work via Composio Connect, so it can generate diagrams, create and edit documents, search your workspace, export diagrams, and organize files through natural language commands without ever putting your account credentials at risk.

## Also integrate Eraser MCP with

- [Claude Cowork](https://composio.dev/toolkits/eraser_mcp/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/eraser_mcp/framework/hermes-agent)

## TL;DR

### Why use Composio over default connectors?
- Apps with read and write access. Default connectors mostly can read your data. Composio's Eraser integration lets ChatGPT Work take actions like creating drafts, sending updates, labeling records, and more.
- 1,000+ SaaS toolkits out of the box. Composio gives you instant access to a vast catalog of pre-built connectors, from Gmail and Slack to Notion, Linear, and Salesforce.
- One MCP server for every app. Connect any of your applications on demand through a single endpoint, rather than juggling a separate server for each app.
- Smart, context-aware tool loading. Unlike traditional MCP servers that dump every available tool into the LLM context window, Composio searches for and loads only the tools relevant to the task at hand.
- Cross-app automation. Chain actions across multiple apps in a single run - fetch a thread, summarize it in Notion, and post highlights to Slack without leaving the conversation.

## Connect Eraser MCP to ChatGPT Work

### Prerequisites
- A ChatGPT account with access to ChatGPT Work (rolling out across Pro, Enterprise, Edu, Plus, and Business plans). We will use the [ChatGPT desktop app](https://openai.com/chatgpt/download/), which is available on every plan.
- Access to the Eraser workspace you want to connect.
- [Composio MCP](https://dashboard.composio.dev/login?utm_source=toolkits&utm_medium=framework_template&utm_campaign=chatgpt&utm_content=composio_connect&next=%2F~%2Forg%2Fconnect%2Fclients%2Fchatgpt).
Note: Composio connects through OAuth. You will be asked to sign in and approve specific permissions. Review the permission screen carefully if you are using a work account.
### Step-by-step: Connect Eraser to ChatGPT Work
### 1. Open the MCP settings
In ChatGPT Work, go to Settings and open the Plugins section. Inside the Plugins page, click the MCP tab.
### 2. Add the server
Click Add server. In the Name field enter Composio, for Type select Streamable HTTP, and in the URL field paste the Composio MCP server URL:

```bash
https://connect.composio.dev/mcp
```

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

The Eraser MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Eraser account. It provides structured and secure access so your agent can perform Eraser operations on your behalf.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `ERASER_MCP_ADD_OR_REMOVE_TEMPLATE_OR_REFERENCE` | Add or remove template or reference | Attach or detach an EXISTING file as a template (style anchor) or reference (terminology/concept anchor) of a preset. Use this tool when: - the user has an existing workspace they want to promote into a preset (e.g. 'use this file as a template for the System Design preset'), - you need to detach a file from a preset, - or you just created a template via `create_template_or_reference` WITHOUT a `presetId` and need to attach it now. To create a NEW template/reference file and attach it in a single call, use `create_template_or_reference` with `presetId` set — that avoids leaving a detached file in the team. When removing a file leaves it orphaned from all presets, the file is archived automatically. Templates and references are inherently team-scoped (no private/personal templates exist); the preset choice is the only scoping decision. |
| `ERASER_MCP_CREATE_DIAGRAM` | Create diagram | PREFERRED for creating a diagram from a natural-language prompt — Eraser's AI picks the diagram type, generates the DSL, and renders it. DO NOT pre-classify the user's request into a diagram type yourself. Pass `text` only (plus destination params) and LEAVE `diagramType` UNSET unless the user EXPLICITLY named a type (e.g. 'make this a sequence diagram', 'use a cloud architecture diagram'). Eraser's render service has type-specific heuristics and will pick a better type from the prompt than your guess will, especially on ambiguous asks like 'show how X works' or 'diagram the architecture'. BEFORE calling this tool, if the user has not already specified the destination, ASK them these questions (skip any the user has already answered): 1. 'Should I create a new file for this diagram, or add it to an existing file?' — if existing, ask which fileId (or use one they just referenced). 2. If NEW file: 'Should the file be private (just for you) or shared with your team in a folder?' 3. If shared in a folder: 'Which folder?' (or offer to place it at the team root). Do NOT call list_folders or get_folder to invent a destination yourself — ask the user. Pick destination params based on the answers: - Existing file → pass targetFileId - New private file → omit targetFileId, omit folderId, do NOT set isTeamFile - New shared file at team root → omit targetFileId, omit folderId, set isTeamFile: true - New shared file in a folder → omit targetFileId, pass folderId (this implies shared) Returns the new diagram's id in the `diagrams[].id` field so a follow-up update_diagram/manually_update_diagram call does NOT need a list_diagrams round-trip. Prefer over manually_create_diagram unless you already have hand-written DSL/JSON. |
| `ERASER_MCP_CREATE_DOCUMENT` | Create document | PREFERRED for populating a document from a natural-language prompt — Eraser's AI generates the markdown. Only callable on a file with an empty document body; if the file already has content, this returns an error and you should call update_document (for natural-language edits) or manually_update_document (to replace verbatim) instead. Prefer over manually_create_document unless you have pre-written markdown to insert verbatim. |
| `ERASER_MCP_CREATE_FILE` | Create file | Create an empty file, or duplicate an existing file when sourceFileId is provided. Never populates content from a prompt — use create_document/create_diagram for AI generation. BEFORE calling this tool, if the user has not specified destination, ASK: 1. 'Should the file be private (just for you) or shared with your team in a folder?' 2. If shared in a folder: 'Which folder?' (or offer to place it at the team root). Do NOT call list_folders to invent a destination — ask the user. Pick params: - Private file → omit folderId, do NOT set isTeamFile - Shared at team root → omit folderId, set isTeamFile: true - Shared in a folder → pass folderId (this implies shared) |
| `ERASER_MCP_CREATE_FOLDER` | Create folder | Create a new folder. |
| `ERASER_MCP_CREATE_PRESET` | Create preset | Create a new preset (the team-level container for AI styling: templates, references, and rules). After creating, the typical next steps to make the preset useful are: 1. Add example files as templates/references via `add_or_remove_template_or_reference` (or `create_template_or_reference` to spin up a fresh template file from a prompt). Templates anchor the visual style; references anchor terminology and concepts. 2. Set the preset's rules via `update_rules` (e.g. 'always use dark backgrounds', 'prefer sequence diagrams for auth flows'). 3. Optionally mark the preset as the team default by calling `update_preset` with `isDefault: true`. This tool only creates the empty preset shell; an agent that stops here will produce a preset with no styling power. Chain the steps above unless the user explicitly only wanted the shell. |
| `ERASER_MCP_CREATE_TEMPLATE_OR_REFERENCE` | Create template or reference | Create a new template (style anchor) or reference (terminology/concept anchor) file and, when `presetId` is provided, attach it to that preset in a single call. Auto-publishes the file's first version. Templates and references are ALWAYS team-scoped resources under AI Presets — there is no concept of a private/personal template or reference. DO NOT ask the user 'team template or private template?' — that is not a real choice. The only sharing question is which preset to attach it to. Typical use: - User says 'make this a template under ' → pass `presetId` so the file is attached immediately. - User says 'make a template from this file' without naming a preset → ASK them which preset before calling (or list_presets to show options). DO NOT silently omit `presetId`; an unattached template is invisible to AI generation and almost never what the user wanted. - User says 'duplicate this file as a template' → pass `sourceFileId` (and `presetId`). When `presetId` is omitted the response includes a warning that the file is detached; treat that as a signal to follow up with `add_or_remove_template_or_reference` rather than leaving it dangling. |
| `ERASER_MCP_DELETE_DIAGRAM` | Delete diagram | Delete a diagram from a file. |
| `ERASER_MCP_DELETE_DOCUMENT` | Delete document | Clear a file's document body to an empty markdown document. |
| `ERASER_MCP_DELETE_FILE` | Delete file | Archive a file. |
| `ERASER_MCP_DELETE_FOLDER` | Delete folder | Delete a folder. Rejects when the folder is not empty. |
| `ERASER_MCP_DELETE_PRESET` | Delete preset | Delete a preset. Rejects when the preset has any rules, templates, or references. |
| `ERASER_MCP_EXPORT_DIAGRAM` | Export diagram | Render a canvas diagram to PNG or JPEG and return a temporary image URL. Tell the user to download it from the returned imageUrl. Set format: "drawio" instead to export an editable draw.io (diagrams.net) document — that returns fileUrl rather than imageUrl; download it and save it with a .drawio extension. draw.io export requires a paid plan; on a free team it returns an upgrade error, so fall back to png/jpeg. |
| `ERASER_MCP_EXPORT_DOCUMENT` | Export document | Export a file's markdown document body as a downloadable artifact. |
| `ERASER_MCP_EXPORT_FILE` | Export file | Returns the Eraser file URL for PDF export. NOTE: programmatic PDF export is not yet available via MCP — this returns a link for the user to export from the Eraser app's export menu, not a downloadable PDF. For a diagram image, use export_diagram; for the document body as markdown, use export_document. |
| `ERASER_MCP_GET_DIAGRAM` | Get diagram | Fetch a diagram's metadata and DSL/JSON code. For freeform diagrams, set includeFreeformDefinition: true to get the full scene structure (elements, connections, titles). Need a PNG image of the diagram? Use export_diagram instead. |
| `ERASER_MCP_GET_DOCUMENT` | Get document | Fetch the full markdown body of a file's document. |
| `ERASER_MCP_GET_FILE` | Get file | Fetch a file's metadata, document outline (headers), and the list of diagrams in it. |
| `ERASER_MCP_GET_FOLDER` | Get folder | Fetch a folder by id. |
| `ERASER_MCP_GET_ME` | Get me | Fetch the current user, active team, and team memberships. |
| `ERASER_MCP_GET_PRESET` | Get preset | Fetch a preset including its rules, templates, and references. |
| `ERASER_MCP_GET_TEMPLATE_OR_REFERENCE` | Get template or reference | Fetch a template/reference's metadata, document outline, and diagram list. |
| `ERASER_MCP_LIST_DIAGRAMS` | List diagrams | List the diagrams contained in a file. |
| `ERASER_MCP_LIST_FILES` | List files | List files in the team workspace, optionally scoped to a folder. |
| `ERASER_MCP_LIST_FOLDERS` | List folders | List folders. Pass `parentFolderId` to scope to direct children of a folder (or `null` for top-level only). Pass `nameContains` to resolve a folder the user names by string (e.g. 'the Engineering folder') without paging through the entire tree. Combining the two narrows further (e.g. top-level folders containing 'eng'). |
| `ERASER_MCP_LIST_PRESETS` | List presets | List the team's presets. Pass `nameContains` to resolve a preset the user names by string (e.g. 'the Marketing preset') without scanning the full list — much cheaper in context tokens. |
| `ERASER_MCP_LIST_TEAMS` | List teams | List the teams the current user belongs to (OAuth only). |
| `ERASER_MCP_MANUALLY_CREATE_DIAGRAM` | Manually create diagram | ADVANCED — most callers should use create_diagram instead. This tool writes a caller-supplied diagram definition VERBATIM into a new diagram; no AI runs. For DSL diagrams (flowchart-dsl, sequence-dsl, etc.) pass the DSL source as `code`. For freeform diagrams pass a freeform definition as `code` — either JSON ({"title"?: string, "elements": [ ... ]}) or the equivalent XML; it is parsed and laid out through the freeform render pass (text measurement, connection routing, etc.). Use ONLY WHEN: the user gave you a literal diagram definition to paste, you are converting from a non-Eraser source (other tool's export, programmatic generation), or you need byte-exact output for a reason the AI path cannot satisfy. For any natural-language description of what the diagram should contain (e.g. 'a sequence diagram showing checkout'), use create_diagram — it picks the diagram type, generates the definition, and renders it for a fraction of the output tokens of composing it yourself. |
| `ERASER_MCP_MANUALLY_CREATE_DOCUMENT` | Manually create document | ADVANCED — most callers should use create_document instead. This tool populates an empty file's document body with caller-supplied markdown VERBATIM; no AI runs and the bytes you pass are exactly what gets stored. Only callable on a file with an empty document body; if the file already has content, call manually_update_document (verbatim overwrite) or update_document (targeted AI edit) instead. USE ONLY WHEN: the user gave you literal markdown to paste, you are converting from another format (HTML, Confluence export, programmatic generation), or you need byte-exact output. For any natural-language description of what the document should say, use create_document. |
| `ERASER_MCP_MANUALLY_UPDATE_DIAGRAM` | Manually update diagram | ADVANCED — most callers should use update_diagram instead. This tool writes a diagram's complete DSL/JSON (or freeform edits) VERBATIM; no AI runs and the bytes you pass are exactly what gets stored. USE ONLY WHEN: - the user gave you literal DSL/JSON they want pasted as-is, - you are converting from a non-Eraser source (other tool's export, programmatic generation), - or you need byte-exact output for a reason an AI refinement cannot satisfy. DO NOT use this tool just because the current diagram code happens to be in your context (e.g. you just called create_diagram and want to apply a small refinement). For ANY user request phrased as a natural-language edit ('remove the X group', 'add a step', 'change the color', 'rename Y to Z') — even when you already have the full DSL in front of you — call update_diagram instead. Re-emitting the entire DSL here to apply a conceptual edit costs the user large amounts of output tokens, risks accidental edits to unrelated parts, and gives a worse UX than letting Eraser apply the targeted change. |
| `ERASER_MCP_MANUALLY_UPDATE_DOCUMENT` | Manually update document | ADVANCED — most callers should use update_document instead. This tool replaces a file's document body with caller-supplied markdown VERBATIM; no AI runs and the WHOLE body is overwritten (no targeted block edits, no preservation of unrelated sections beyond what you re-emit). USE ONLY WHEN: - the user gave you literal markdown they want pasted as-is, - you are converting from a non-Eraser source (HTML, Confluence export, programmatic generation), - or you need byte-exact output for a reason an AI refinement cannot satisfy. DO NOT use this tool just because the current document markdown happens to be in your context. For ANY user request phrased as a natural-language edit ('add a section', 'fix the wording', 'remove that paragraph') — even when you already have the full body in front of you — call update_document instead. Re-emitting the entire body here to apply a conceptual edit costs the user large amounts of output tokens, risks accidental edits to unrelated sections, and gives a worse UX than letting Eraser apply targeted block edits. |
| `ERASER_MCP_MANUALLY_UPDATE_FILE` | Manually update file | Replace a file's document markdown and/or diagram code in one call. No AI — caller supplies exact markdown/DSL/JSON. |
| `ERASER_MCP_PUBLISH_TEMPLATE_OR_REFERENCE` | Publish template or reference | Publish a new version of a template/reference file. |
| `ERASER_MCP_SEARCH` | Search | Full-text and semantic search across files or diagrams. Omit 'kind' for content search (finds matching blocks). Use kind: 'file' only to look up a file by name (no block content returned). Use kind: 'diagram' to search within diagram code/titles. |
| `ERASER_MCP_SELECT_TEAM` | Select team | Set the active team for the session when the user belongs to multiple teams (OAuth only). |
| `ERASER_MCP_UPDATE_DIAGRAM` | Update diagram | USE THIS for any user request that describes the change in natural language — verbs like 'add', 'remove', 'change', 'rename', 'recolor', 'make it more X', etc. Eraser's AI applies the change to the existing diagram in place; you only send the short instruction (e.g. `text: "remove the External Integrations group"`), NOT the full new DSL. IMPORTANT: pick this tool even when the full diagram code is already in your context (e.g. from the previous create_diagram or get_diagram response). Re-emitting the entire DSL via manually_update_diagram to apply a one-line conceptual edit is the WRONG default — it wastes a large number of output tokens, increases the chance of accidental edits/typos, and gives a worse UX than letting Eraser apply a targeted change. Only fall back to manually_update_diagram when the user gave you literal code to paste, you are converting from a non-Eraser format, or you need byte-exact output that the AI rewrite path cannot guarantee. |
| `ERASER_MCP_UPDATE_DOCUMENT` | Update document | USE THIS for any user request that describes the change in natural language — verbs like 'add a section', 'rewrite the intro', 'fix the typo', 'remove the deprecated paragraph', etc. Eraser's AI applies targeted block-level edits to the existing markdown; you only send the short instruction, NOT the full rewritten document. IMPORTANT: pick this tool even when the full document markdown is already in your context (e.g. from a previous create_document or get_file response). Re-emitting the entire body via manually_update_document to apply a conceptual edit is the WRONG default — it wastes large amounts of output tokens, risks accidental edits/typos in unrelated sections, and gives a worse UX than letting Eraser apply a targeted change. Only fall back to manually_update_document when the user gave you literal markdown to paste, you are converting from another format, or you need byte-exact output the AI rewrite path cannot guarantee. |
| `ERASER_MCP_UPDATE_FILE` | Update file | Update file metadata (title, folder, sharing). When applyTemplate is provided, AI fills the file's document and diagrams from a preset template. |
| `ERASER_MCP_UPDATE_FOLDER` | Update folder | Rename or move a folder, or bulk-apply a link-sharing setting to every file inside it (recursively). Note: folders do not store linkAccess themselves — to change sharing you MUST pass both `linkAccess` and `applySharingToDescendantFiles: true` together. |
| `ERASER_MCP_UPDATE_PRESET` | Update preset | Rename a preset or update its metadata (`name`, `description`, `isDefault`). Does NOT modify rules or templates/references — use `update_rules` and `add_or_remove_template_or_reference` for those. |
| `ERASER_MCP_UPDATE_RULES` | Update rules | Add, update, or remove rules on a preset in a single batched call. Rules are natural-language instructions the AI will follow when generating diagrams/documents under this preset (e.g. 'use dark theme', 'all auth flows should be sequence diagrams'). Typically called as step 3 of the create-preset chain (after `create_preset` and `add_or_remove_template_or_reference`), but can be called any time to tune an existing preset. |
| `ERASER_MCP_UPDATE_TEMPLATE_OR_REFERENCE` | Update template or reference | Rename a template or reference file. |

## Supported Triggers

None listed.

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

Once connected, ChatGPT Work can access the Eraser MCP server via Composio to run actions that you authorize, directly in your workspace.

## Complete Code

None listed.

## How to build Eraser MCP Agent with another framework

- [Claude Cowork](https://composio.dev/toolkits/eraser_mcp/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/eraser_mcp/framework/hermes-agent)

## Related Toolkits

- [Figma](https://composio.dev/toolkits/figma) - Figma is a collaborative interface design tool for teams and individuals. It streamlines design workflows with real-time collaboration and easy sharing.
- [Abyssale](https://composio.dev/toolkits/abyssale) - Abyssale is a creative automation platform for generating images, videos, GIFs, PDFs, and HTML5 content programmatically. It streamlines and scales visual content production for marketing, design, and operations teams.
- [Alttext ai](https://composio.dev/toolkits/alttext_ai) - AltText.ai is a service that generates alt text for images automatically. It helps boost accessibility and SEO for your visual content.
- [Are.na](https://composio.dev/toolkits/arena) - Are.na is a creative research platform for collecting images, links, notes, and ideas in channels. Use it to organize inspiration, build knowledge maps, and connect research across projects.
- [Bannerbear](https://composio.dev/toolkits/bannerbear) - Bannerbear is an API-driven platform for generating images and videos automatically at scale. It helps businesses create custom graphics, social visuals, and marketing assets using powerful templates.
- [Bannerbite](https://composio.dev/toolkits/bannerbite) - Bannerbite is a creative automation platform for generating images and videos from reusable projects and templates. It helps teams produce on-brand visual assets faster without rebuilding designs from scratch.
- [Builder.io](https://composio.dev/toolkits/builder_io) - Builder.io is a visual development platform for managing content, models, assets, and Space configuration. Use it to ship editable digital experiences faster without waiting on every code change.
- [Canva](https://composio.dev/toolkits/canva) - Canva is a drag-and-drop design suite for creating professional graphics, presentations, and marketing materials. It makes it easy for anyone to design with beautiful templates and a vast library of elements.
- [Canva MCP](https://composio.dev/toolkits/canva_mcp) - Canva MCP is Canva's remote MCP server for accessing designs and content. It centralizes design assets and enables programmatic design workflows.
- [Claid ai](https://composio.dev/toolkits/claid_ai) - Claid.ai delivers AI-driven image editing APIs for tasks like background removal, upscaling, and color correction. It helps automate and enhance image workflows with powerful, developer-friendly tools.
- [Cloudinary](https://composio.dev/toolkits/cloudinary) - Cloudinary is a cloud-based platform for managing, uploading, and transforming images and videos. It streamlines media workflows and delivers optimized assets globally.
- [Contentdrips](https://composio.dev/toolkits/contentdrips) - Contentdrips is an asynchronous rendering API for branded graphics and carousels. It turns reusable templates into on-brand social visuals at scale.
- [Creatomate](https://composio.dev/toolkits/creatomate) - Creatomate is an API for generating automated videos, images, GIFs, and reusable media templates. Use it to turn structured data into polished visual content at scale.
- [Cults](https://composio.dev/toolkits/cults) - Cults is a digital marketplace for 3D printing models, connecting designers and makers. It lets creators share, sell, and discover a huge variety of printable designs easily.
- [DeepImage](https://composio.dev/toolkits/deepimage) - DeepImage is an AI-powered image enhancer and upscaler. Get higher-quality images with just a few clicks.
- [Dreamstudio](https://composio.dev/toolkits/dreamstudio) - DreamStudio is Stability AI’s platform for generating and editing images with AI. It lets you easily turn ideas into stunning visuals, fast.
- [Dynamic Mockups](https://composio.dev/toolkits/dynamic_mockups) - Dynamic Mockups is an API platform for generating product mockups, rendering templates, and managing visual asset catalogs. Use it to automate high-quality product visuals, AI images, and motion assets at scale.
- [Dynapictures](https://composio.dev/toolkits/dynapictures) - Dynapictures is a cloud-based platform for generating personalized images at scale. Instantly create hundreds of custom visuals using your data sources, like Google Sheets.
- [Excalidraw MCP](https://composio.dev/toolkits/excalidraw_mcp) - Excalidraw MCP is a no-auth MCP server for creating hand-drawn style diagrams in Excalidraw. Use it to generate visual sketches with viewport camera control and fullscreen editing.
- [Fal.ai](https://composio.dev/toolkits/fal_ai) - Fal.ai is a generative media platform offering 600+ AI models for images, video, voice, and audio. Developers use Fal.ai for fast, scalable access to cutting-edge generative AI tools.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Eraser MCP?

With a standalone Eraser MCP server, the agents and LLMs can only access a fixed set of Eraser tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Eraser and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with ChatGPT Work?

Yes, you can. ChatGPT Work fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Eraser tools.

### Can I manage the permissions and scopes for Eraser while using Tool Router?

Yes, absolutely. You can configure which Eraser scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Eraser data and credentials are handled as safely as possible.

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