Skip to content

Commit e89d085

Browse files
EricGustinclaude
andcommitted
docs(gmail): publish email attachments capability, per-host setup, and coverage matrix (TOO-981)
Add two documentationChunks to gmail.json (after_available_tools, below the tool list): a compact capability note with a per-host setup Tabs widget (Cursor / Claude Code / Codex CLI / VS Code chat), and a host coverage matrix. The hook script is referenced via the tool's setup response rather than inlined so the page cannot drift from HOOK_SCRIPT. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c9aa0ef commit e89d085

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

toolkit-docs-generator/data/toolkits/gmail.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1885,6 +1885,22 @@
18851885
"location": "auth",
18861886
"position": "after",
18871887
"content": "The Arcade Gmail MCP Server uses the [Google auth provider](/references/auth-providers/google) to connect to users' Google accounts.\n---"
1888+
},
1889+
{
1890+
"type": "markdown",
1891+
"location": "after_available_tools",
1892+
"position": "after",
1893+
"content": "## Email attachments\n\n`Gmail.SendEmail`, `Gmail.WriteDraftEmail`, `Gmail.ReplyToEmail`, and `Gmail.WriteDraftReplyEmail` take an `attachments` parameter for local files. The agent emits only the file path; a client-side `preToolUse` hook swaps in the bytes before the request leaves your machine, so file contents never enter the model's context window.\n\nThe first time you attach a file, your agent installs the one-time hook for you after you approve. To set it up by hand, save the hook script (the one the tool returns in its setup response) to an absolute path and register it for your client:\n\n<Tabs items={[\"Cursor\", \"Claude Code\", \"Codex CLI\", \"VS Code chat\"]}>\n\n<Tabs.Tab>\n\nAdd to `~/.cursor/hooks.json`, merging the `preToolUse` entry. Cursor reloads on save.\n\n```json\n{\n \"version\": 1,\n \"hooks\": {\n \"preToolUse\": [\n { \"command\": \"python3 /abs/path/arcade_attachment_substitution.py --client cursor\", \"failClosed\": true, \"timeout\": 30 }\n ]\n }\n}\n```\n\n</Tabs.Tab>\n\n<Tabs.Tab>\n\nClaude Code v2.0.10+. Add to `~/.claude/settings.json`, merging the `PreToolUse` entry. Replace `<gmail_server>` with the name you registered the Arcade Gmail MCP server under (for `mcp__arcade__Gmail_SendEmail`, use `mcp__arcade__.*`).\n\n```json\n{\n \"hooks\": {\n \"PreToolUse\": [\n { \"matcher\": \"mcp__<gmail_server>__.*\", \"hooks\": [{ \"type\": \"command\", \"command\": \"python3 /abs/path/arcade_attachment_substitution.py --client claude-code\", \"timeout\": 30 }] }\n ]\n }\n}\n```\n\n</Tabs.Tab>\n\n<Tabs.Tab>\n\nCodex CLI v0.131+. Add to `~/.codex/hooks.json` (same shape as Claude Code), then trust the hook via `/hooks`.\n\n```json\n{\n \"hooks\": {\n \"PreToolUse\": [\n { \"matcher\": \"mcp__<gmail_server>__.*\", \"hooks\": [{ \"type\": \"command\", \"command\": \"python3 /abs/path/arcade_attachment_substitution.py --client codex\", \"timeout\": 30 }] }\n ]\n }\n}\n```\n\n</Tabs.Tab>\n\n<Tabs.Tab>\n\nVS Code 1.112+, in agent mode. Save a JSON file in `~/.copilot/hooks/`, then reload the window.\n\n```json\n{\n \"hooks\": {\n \"PreToolUse\": [\n { \"type\": \"command\", \"command\": \"python3 /abs/path/arcade_attachment_substitution.py --client vscode\", \"timeout\": 30 }\n ]\n }\n}\n```\n\n</Tabs.Tab>\n\n</Tabs>\n\nGmail caps total message size at 25 MB, and a `file://` URI belongs only in `source`.",
1894+
"header": "## Email attachments",
1895+
"priority": 10
1896+
},
1897+
{
1898+
"type": "markdown",
1899+
"location": "after_available_tools",
1900+
"position": "after",
1901+
"content": "## Host coverage\n\n| Host | Status | Notes |\n| --- | --- | --- |\n| Cursor | Supported | App, plus Cursor cloud and background agents. |\n| Claude Code | Supported | v2.0.10+. |\n| Codex CLI | Supported | v0.131+; trust the hook via `/hooks`. |\n| VS Code chat (GitHub Copilot) | Supported | 1.112+, agent mode. |\n| Claude Cowork | Documented limitation | Sandboxed to one folder; cannot install a user-scope hook. |\n| Claude Desktop | Documented limitation | No client-side hook layer. |\n| ChatGPT desktop | Documented limitation | No client-side hook surface. |\n| Microsoft 365 Copilot | Documented limitation | No host-side rewrite hook. |\n\nOn an unsupported host the tool returns a clear error and sends nothing.",
1902+
"header": "## Host coverage",
1903+
"priority": 20
18881904
}
18891905
],
18901906
"customImports": [

0 commit comments

Comments
 (0)