In this article, you will learn how to enable MCP integration in your Stripo workspace, connect your AI assistant, and install the Stripo Agent Plugin in supported tools. You’ll also learn how to verify your setup and start working with your emails.
The MCP connection gives your assistant access to Stripo: it can find and read emails, templates and modules; create and edit emails; generate and edit images; export HTML and screenshots; and delete content. MCP stands for Model Context Protocol.
The Stripo Agent Plugin adds ready-made workflows, called skills, for creating emails from a brief or reference, editing existing content, and maintaining business profiles. The plugin is free; it requires a connected Stripo MCP server.
For the email creation and editing workflows in this guide, install the plugin or its skills in a supported agent alongside the MCP connection.
Your assistant always acts with your own Stripo permissions in the workspaces you belong to.
Choose your AI tool
Follow one tool guide. These are alternative setup paths, not steps to complete in order.
Your AI tool | Setup covered in this guide |
Install the plugin and connect MCP. | |
Install the plugin and connect MCP in the CLI, IDE extension or desktop app. | |
Connect MCP and copy the plugin's skills into Cursor, in the terminal or with the agent. | |
Connect MCP and copy the plugin's skills into VS Code. | |
Connect MCP through a custom connector. This path does not install the Stripo Agent Plugin. | |
Check compatibility, then use native remote MCP or the local bridge. |
Already connected through MCP?
You can add the plugin or its skills to an existing MCP connection. Keep your saved Client ID unless your Owner or Admin gives you a replacement.
Use the setup prompt for Claude Code, Codex, Cursor or VS Code. Its direct configuration steps preserve a working connection while the agent prepares missing software and installs or checks the skills. Invoking the plugin's connect skill can also migrate the connection, as described below.
In a setup prompt, leave YOUR_CLIENT_ID unchanged to reuse the saved ID. The agent must never save the placeholder. For a check that does not change configuration, ask the agent to call whoami through the existing connection.
What the connect skill changes
The connect skill can check, register or repair Stripo MCP. It reuses the saved Client ID, including one stored in an mcp-remote bridge, unless you explicitly provide a replacement. Reusing the ID does not always preserve the connection's transport or scope.
In Claude Code and Codex, it keeps a matching user-level HTTP entry with no local/project override. Other configurations, including working bridge or project-only connections, are migrated to user-level HTTP. It explains the migration first, saves the user-level entry, then removes Stripo overrides from the current project's configuration; in Claude Code, this includes both local and project scopes. The resulting connection is available across projects. Other MCP server entries remain unchanged.
In Cursor and VS Code, connect creates or updates a native HTTP entry in the user configuration by default. Explicitly request a project-only connection if that is what you need. If a project override still selects a different entry, follow conflicting settings.
If a matching connection is already available and whoami succeeds, no new sign-in is needed. Otherwise, the skill gives you the required restart and sign-in steps; you complete browser sign-in yourself.
Before you start
Requirement | What you need |
Stripo plan | Medium, Pro or Prime. |
Enable the integration | An Owner or Admin enables it in Workspace Settings. |
Connect your AI tool | Any workspace member can connect using the workspace's Client ID. Ask your Owner or Admin for it. |
Sign in | A confirmed Stripo email address and access through email and password, Google, or your company SSO. |
Choose the setup method for your tool. With an agent-assisted setup, paste the tool's prompt below: the agent checks the environment, installs missing supporting software, and sets up Stripo. With a manual setup, complete the listed environment checks and commands yourself. For Cursor, this guide recommends the terminal steps and provides an agent-assisted alternative. The Claude custom connector needs no local software preparation.
You may need to approve an installation, restart your AI tool or computer, or sign in to Stripo. If your help is needed, the agent will give you one specific action at a time and continue after you complete it. On a company-managed computer, it may identify a step that needs your administrator.
Enable the integration in Stripo
If an Owner or Admin already gave you the Client ID, continue to your tool guide.
In Stripo, click your organization name in the top-right corner and open Settings.
Go to Workspace → Workspace Configuration.
Find MCP integration and turn on Connect AI tools.
Click Copy Client ID.
If the toggle is disabled and you see “Available on Medium, Pro and Prime”, your workspace needs an eligible plan.
The Client ID identifies the workspace's connection; it is not your password. Share it only with the people and tools that need it. Keep it out of public repositories and publicly shared prompts. Each person signs in with their own Stripo account.
When copying a command or configuration, replace only YOUR_CLIENT_ID. Keep the surrounding quotes and backslashes exactly as shown. In a form field, paste the Client ID without adding quotes. Never use the placeholder as an actual ID.
Connect Claude Code
Open Claude Code and sign in through your Claude plan or an Anthropic Console account. Your agent will check the version and supporting software. Stripo sign-in is separate.
Set up Claude Code with your agent
Paste this prompt into Claude Code. Replace YOUR_CLIENT_ID for a new connection, or leave it unchanged to reuse a saved ID. Let the agent complete setup before continuing to sign-in.
Set up the Stripo Agent Plugin and MCP connection in Claude Code.
Client ID: YOUR_CLIENT_ID
Handle technical preparation for me. Use official installation instructions and the normal approval flow. Preserve unrelated servers, plugins and settings; back up edited configuration. Fix recoverable setup errors and retry the failed step. If blocked, explain the exact action needed to continue without disabling global protections.
1. Detect the OS and the environment where this agent actually runs. Before switching environments, locate existing Stripo settings so the saved connection and Client ID can be reused. Check Node.js 20.18.1+, curl, Git and a POSIX shell. Reuse compatible tools; install missing dependencies or update unsupported versions with the existing package manager or official installers. For a new Node.js installation, choose a supported LTS release meeting the minimum. On local Windows, reuse or set up WSL 2 and run Claude Code there; do not install local WSL for an agent already running on remote Linux. Make the Claude CLI available in that environment using its official installation method; use claude update if its commands are unsupported. If an OS approval, restart, Linux account setup or reopening Claude Code needs my action, give me one exact step and a short progress summary so we can resume. Never ask for passwords. After any change, rerun dependency checks in the agent's actual environment.
2. Inspect stripo-mcp at user, local and project scope without printing credentials. For the direct setup steps below, keep a working connection unless I supply a replacement ID. If you invoke the plugin's connect skill instead, first explain that it migrates bridge and local/project entries to user-level HTTP and removes Stripo overrides from the current project's local and project scopes after saving the user entry. Use my supplied ID, otherwise the saved one; ask only if neither exists. Never save YOUR_CLIENT_ID. For a missing connection, substitute the selected ID and run:
claude mcp add --transport http --scope user --client-id YOUR_CLIENT_ID stripo-mcp https://mcp.stripo.email/mcp
For repairs, explain the Stripo-only change and check local/project overrides. Do not blindly remove a working entry.
3. If the stripo marketplace is missing, run:
claude plugin marketplace add stripoinc/agent-plugin
If stripo@stripo is missing, run:
claude plugin install stripo@stripo --scope user
If it is already installed, reuse it and ensure it is enabled; claude plugin install does not update an existing plugin. Run claude plugin marketplace update stripo and, if the marketplace offers a newer version, claude plugin update stripo@stripo in the installation's scope. For this local Claude Code marketplace installation, enable auto-updates in the active Claude settings file (normally ~/.claude/settings.json): set extraKnownMarketplaces.stripo.autoUpdate to true while preserving other keys. This configures the local Claude Code marketplace; do not report a separate Desktop account plugin's update policy as verified.
4. Check claude plugin list and the effective MCP entry. Summarize the result without dumping configuration. Let me complete browser sign-in.
5. Guide me through restarting Claude Code and, if needed, /mcp > stripo-mcp > Authenticate. After I return, verify that the Stripo skills load, its MCP tools are available, and whoami returns my expected account. Report those three results separately; leave any unverified result pending.
Finish Claude Code sign-in
Exit Claude Code and start it again so the plugin and any new MCP configuration load.
If sign-in is needed, run
/mcp, select stripo-mcp, and choose Authenticate.Sign in to Stripo in the browser with email and password, Google, or SSO.
On a remote or SSH machine, run claude mcp login stripo-mcp --no-browser in an interactive terminal and follow its prompts.
Verify Claude Code setup
Ask the agent to complete the setup check. It should confirm the following:
/mcpshows stripo-mcp as connected and exposes its tools;claude mcp listalso reports the connection status./pluginlists stripo as enabled. Typing/stripo:offersemail-from-reference,email-model-editor,business-profileandconnect.whoamisucceeds and identifies your expected Stripo account.
Manual reference: Claude Code plugin and MCP
The setup prompt handles these steps and prepares the environment for you. The commands below are for manual installation or troubleshooting after that preparation.
1. Install the plugin.
In Claude Code, run the first command only if the marketplace is missing, and the second only if the plugin is missing:
/plugin marketplace add stripoinc/agent-plugin
/plugin install stripo@stripo
The installation dialog may ask for a Stripo Client ID, the plugin's only option. Paste the workspace Client ID without quotes, or leave the field empty if stripo-mcp is already configured: /stripo:connect uses this value only when no connection exists. To set it later without the dialog, run this in your terminal, replacing YOUR_CLIENT_ID:
echo '{"client_id":"YOUR_CLIENT_ID"}' | claude plugin configure stripo@stripo --values-stdinIf the plugin is already installed, /plugin install does not update it: see Update the plugin or copied skills.
2. Configure the MCP connection. This is where you use your Stripo Client ID. If stripo-mcp already works, keep the existing connection and skip this step.
For a new connection, run this in your terminal, replacing YOUR_CLIENT_ID with the ID copied from Stripo:
claude mcp add --transport http --scope user \
--client-id "YOUR_CLIENT_ID" \
stripo-mcp https://mcp.stripo.email/mcp
The command saves the Client ID in Claude Code's MCP configuration. Stripo does not require a Client Secret. --scope user makes the connection available across projects. If an existing entry needs correction, see conflicting settings or Update a Client ID.
3. Restart and sign in. Restart Claude Code to load the plugin and MCP settings, then follow Finish Claude Code sign-in. You can then run /stripo:connect to check or repair the connection; it reuses the saved Client ID and may migrate the configuration. Complete the setup check.
For updates, follow the instructions for your interface in Update the plugin or copied skills: the Code tab of the Claude Desktop app, which has a graphical plugin screen, or Claude Code in a terminal.
Connect OpenAI Codex
Open Codex in the desktop app, IDE extension or terminal and sign in. Your agent will check the version, prepare the supporting software, and find the settings used by your installation.
Set up Codex with your agent
Paste this prompt into Codex. Replace YOUR_CLIENT_ID for a new connection; leave it unchanged to reuse a saved ID. Let the agent complete setup before continuing to sign-in.
Set up the Stripo Agent Plugin and MCP connection in Codex.
Client ID: YOUR_CLIENT_ID
Handle technical preparation for me. Use official installation instructions and the normal approval flow. Preserve unrelated servers, plugins and settings; back up edited configuration. Fix recoverable setup errors and retry the failed step. If blocked, explain the exact action needed to continue without disabling global protections.
1. Detect the OS and the environment where this agent actually runs. Before switching environments, locate existing Stripo settings so the saved connection and Client ID can be reused. Check Node.js 20.18.1+, curl, Git and a POSIX shell. Reuse compatible tools; install missing dependencies or update unsupported versions with the existing package manager or official installers. For a new Node.js installation, choose a supported LTS release meeting the minimum. On local Windows, reuse or set up WSL 2 and switch the actual Codex agent environment to WSL; changing only the integrated terminal is insufficient. Do not install local WSL for an agent already running on remote Linux. If an OS approval, restart, Linux account setup or app setting needs my action, give me one exact step and a short progress summary so we can resume. Never ask for passwords. After any change, rerun dependency checks in the agent's actual environment.
2. Locate the CLI, configuration and plugin directories used by this Codex installation; if the CLI is missing, set it up using the official Codex instructions and confirm it uses this client's configuration. Check codex --version and support for codex plugin; update through the existing installation method if necessary. Respect CODEX_HOME when set. Do not assume a separately installed WSL CLI shares the desktop app's configuration or authentication. Inspect stripo-mcp and project overrides without printing credentials. For the direct setup steps below, keep a working connection unless I supply a replacement ID. If you invoke the plugin's connect skill instead, first explain that it migrates bridge and project entries to user-level HTTP and removes Stripo project overrides after saving the user entry. Select my supplied ID, otherwise the saved one; ask only if neither exists. Use the active client's configuration and plugin locations for the following steps.
3. If the stripo marketplace is missing, run:
codex plugin marketplace add stripoinc/agent-plugin
If stripo@stripo is missing, run:
codex plugin add stripo@stripo
Reuse an existing installation and ensure it is enabled.
4. Only for a missing or incorrect entry, write these settings with the selected ID; never save YOUR_CLIENT_ID. Preserve unrelated tables. If replacing Stripo's stdio entry, remove its obsolete transport fields. Check project overrides.
[mcp_servers.stripo-mcp]
enabled = true
url = "https://mcp.stripo.email/mcp"
scopes = ["mcp:tools", "offline_access"]
[mcp_servers.stripo-mcp.oauth]
client_id = "YOUR_CLIENT_ID"
5. Check codex plugin list and codex mcp get stripo-mcp. Summarize status. Do not run codex mcp add or login: they can start browser sign-in. Do not change email content.
6. If needed, guide me to Authenticate in this client's MCP settings, or give me the command below with the exact terminal/environment to use:
codex mcp login stripo-mcp --scopes mcp:tools,offline_access
Let me complete browser sign-in and guide me through starting a new session. After I return, verify that the Stripo skills load, its MCP tools are available, and whoami returns my expected account. Report those three results separately; leave any unverified result pending.
Finish Codex sign-in
Follow the agent's sign-in instructions. Where available in the desktop app or IDE extension, open Settings → MCP servers and choose Authenticate next to stripo-mcp. Sign in to Stripo in the browser.
For a terminal setup, the agent will tell you where to run:
codex mcp login stripo-mcp --scopes mcp:tools,offline_access
Start a new Codex session to load newly installed skills and MCP settings.
Verify Codex setup
Ask the agent to complete the setup check. It should confirm the following:
codex mcp listlists stripo-mcp as enabled;/mcpin an interactive CLI session, or the app's MCP settings, shows its tools. An OAuth label alone does not prove successful sign-in.codex plugin listshows stripo@stripo as installed and enabled. Its skills include$stripo:email-from-reference,$stripo:email-model-editor,$stripo:business-profileand$stripo:connect.whoamisucceeds and identifies your expected Stripo account.
Manual reference: Codex plugin and MCP
The setup prompt handles these steps and prepares the environment for you. The commands below are for manual installation or troubleshooting after that preparation.
Run the two codex plugin commands from the prompt, skipping existing installations. In a new session, use the app's plugin setup step or ask for $stripo:connect. It reuses the saved ID, asks only if missing, and may migrate the connection to user-level HTTP. It explains any configuration change and required sign-in.
To register MCP manually, run this in your terminal if no connection exists. The --oauth-client-id option requires Codex 0.134.0 or later. Install the plugin above for the email workflows:
codex mcp add stripo-mcp --url https://mcp.stripo.email/mcp --oauth-client-id YOUR_CLIENT_ID
This command can open browser sign-in immediately. If it does not, use Finish Codex sign-in. For an existing entry with the wrong ID, use Update a Client ID.
Connect Cursor
Open Cursor and start an Agent chat. Cursor supports plugins; this guide uses native MCP and a local copy of the Stripo skills and SDK.
The terminal steps below are the recommended path: they are deterministic, and Cursor's sandbox blocks the agent from writing ~/.cursor/mcp.json and from network access unless you approve each command outside it. The agent prompt is an alternative.
Set up Cursor in the terminal (recommended)
Check the environment first: the Stripo skills need Node.js 20.18.1+, curl, Git and a POSIX shell. See Prepare and verify the agent's environment; on Windows, use WSL 2 and connect Cursor to it.
1. Configure the MCP connection
If MCP already works, skip to step 2.
Open Customize → MCPs → Connect External Tools with MCP → + New. For a connection across projects, edit
~/.cursor/mcp.json.Add
stripo-mcpinsidemcpServers. If the file already contains servers, merge this entry into it instead of replacing the file. ReplaceYOUR_CLIENT_ID:
{
"mcpServers": {
"stripo-mcp": {
"url": "https://mcp.stripo.email/mcp",
"auth": {
"CLIENT_ID": "YOUR_CLIENT_ID",
"scopes": ["mcp:tools", "offline_access"]
}
}
}
}Save the file and add the Stripo skills below before restarting. If the skills are already installed, continue to Cursor sign-in.
2. Add the Stripo skills to Cursor
The paths below use the standard ~/.cursor layout. Keep the repository at a permanent location: you will use it for updates.
Before cloning or copying
Inspect destination paths. For an existing ~/stripo-agent-plugin, check its origin with git -C ~/stripo-agent-plugin remote get-url origin and changes with git -C ~/stripo-agent-plugin status --short. Only for a clean Stripo checkout, replace cloning with git -C ~/stripo-agent-plugin pull --ff-only. Resolve a different origin or local changes before continuing.
Back up existing destination files to a separate folder and overwrite only files confirmed to belong to Stripo. Preserve other skills and packages. If you cannot identify a file's owner, stop and contact support. Never delete the whole shared skills or packages directory.
git clone https://github.com/stripoinc/agent-plugin.git ~/stripo-agent-plugin
mkdir -p ~/.cursor/skills
cp -R ~/stripo-agent-plugin/plugins/stripo/skills/. ~/.cursor/skills/
cp -R ~/stripo-agent-plugin/plugins/stripo/packages ~/.cursor/
cp ~/stripo-agent-plugin/plugins/stripo/mcp-tools.json ~/stripo-agent-plugin/plugins/stripo/bundle.json ~/.cursor/
Keep skills, packages, mcp-tools.json and bundle.json together in ~/.cursor. The skills need the accompanying SDK. Use actual folders for this installation, so skill discovery does not depend on symbolic-link handling. Then continue to Cursor sign-in.
Alternative: set up Cursor with your agent
Choose a capable model in Agent chat before pasting the prompt: the free default models have not completed this setup reliably, downloading files one by one instead of running the copy commands. Paste this prompt into Agent chat. Replace YOUR_CLIENT_ID for a new connection; leave it unchanged to reuse a saved ID. Approve commands that Cursor asks to run outside its sandbox. Let the agent complete setup before continuing to sign-in.
Set up the Stripo MCP connection and the Stripo Agent Plugin skills in Cursor.
Client ID: YOUR_CLIENT_ID
Handle technical preparation for me. Use official installation instructions and Cursor's normal approval flow. Preserve unrelated servers, settings, skills and packages; back up edited configuration and replaced files. Fix recoverable setup errors and retry the failed step. If blocked, explain the exact action needed to continue without disabling global protections.
Install or update the Stripo plugin package only with the git clone/pull and copy commands below, adapting paths to the actual environment. Never download plugin files individually, recreate or hand-write them, or generate an installer for the package. Read-only inspection, dependency checks and installation, backups, and targeted edits to the Stripo MCP entry are allowed; use normal shell commands, structured edits or a short script to preserve unrelated configuration. If Cursor's sandbox blocks writing ~/.cursor/mcp.json, the skills location or network access, ask me to approve running that command outside the sandbox and continue; do not stop at the first sandbox error.
1. Detect the OS and the environment where this agent actually runs. Before switching environments, locate existing Stripo settings so the saved connection and Client ID can be reused. Check Node.js 20.18.1+, curl, Git and a POSIX shell. Reuse compatible tools; install missing dependencies or update unsupported versions with the existing package manager or official installers. For a new Node.js installation, choose a supported LTS release meeting the minimum. On local Windows, reuse or set up WSL 2 and connect Cursor's workspace and agent to it; changing only a terminal is insufficient. Do not install local WSL for an agent already running on remote Linux. If an OS approval, restart, Linux account setup or reconnecting Cursor needs my action, give me one exact step and a short progress summary so we can resume. Never ask for passwords. After any change, rerun dependency checks in the agent's actual environment.
2. Locate Cursor's effective user MCP configuration and personal skills directory, including any local/remote split. Inspect stripo-mcp in the user configuration (normally ~/.cursor/mcp.json) and the project's .cursor/mcp.json without printing credentials. Keep a working connection unless I supply a replacement ID. Never save YOUR_CLIENT_ID: reuse the saved ID or ask if missing. For a missing/incorrect entry, edit only mcpServers.stripo-mcp: url = https://mcp.stripo.email/mcp, auth.CLIENT_ID = the selected ID, auth.scopes = ["mcp:tools", "offline_access"]. Preserve other entries and check project overrides.
3. Inspect checkout and destination paths. Back up existing destination files; replace only verified Stripo files and stop on unclear ownership. Clone if missing:
git clone https://github.com/stripoinc/agent-plugin.git ~/stripo-agent-plugin
If the folder already exists, verify that it is a clean checkout of that repository, then run git -C ~/stripo-agent-plugin pull --ff-only instead. Stop for a different origin or local changes.
4. Copy the complete package into the personal skills location read by this agent. For the standard ~/.cursor layout in the agent's environment, run:
mkdir -p ~/.cursor/skills
cp -R ~/stripo-agent-plugin/plugins/stripo/skills/. ~/.cursor/skills/
cp -R ~/stripo-agent-plugin/plugins/stripo/packages ~/.cursor/
cp ~/stripo-agent-plugin/plugins/stripo/mcp-tools.json ~/stripo-agent-plugin/plugins/stripo/bundle.json ~/.cursor/
If the effective location differs, use it consistently and keep skills, packages, mcp-tools.json and bundle.json together. Use real folders. Do not recreate or alter the plugin's files, invent an installer, or delete shared directories.
5. Check the copied package and guide me through restarting Cursor and, if needed, Customize > MCPs > stripo-mcp > Authenticate. Let me complete browser sign-in. After I return, verify that the Stripo skills load, its MCP tools are available, and whoami returns my expected account. Report those three results separately; leave any unverified result pending. Do not change email content.
Finish Cursor sign-in
Restart Cursor to load newly copied skills and settings.
Open Customize → MCPs. If
stripo-mcpneeds authentication, click Authenticate.Sign in to Stripo in the browser. When you see Authorization complete, click Return to Cursor.
Verify Cursor setup
Ask the agent to complete the setup check. It should confirm the following:
stripo-mcpappears under Connected and shows its enabled tools.The skills
email-from-reference,email-model-editor,business-profileandconnectare available in Agent chat. You can also find them by typing/.whoamisucceeds and identifies your expected Stripo account.
Once skills load, /connect can check or configure Stripo MCP using the saved Client ID. It uses the user configuration by default; see what the connect skill changes. Supply a different ID explicitly only when you want to replace it.
Connect VS Code with GitHub Copilot
Open VS Code, sign in to GitHub Copilot, and select Agent in Chat. Your agent will check the VS Code version and prepare the supporting software. On Business/Enterprise, your GitHub admin must enable MCP servers in the Copilot policy.
Set up VS Code with your agent
Paste this prompt into Agent chat. Replace YOUR_CLIENT_ID for a new connection; leave it unchanged to reuse a saved ID. Let the agent complete setup before continuing to sign-in.
Set up the Stripo MCP connection and the Stripo Agent Plugin skills in VS Code with GitHub Copilot.
Client ID: YOUR_CLIENT_ID
Handle technical preparation for me. Use official installation instructions and VS Code's normal approval flow. Preserve unrelated servers, settings, skills and packages; back up edited configuration and replaced files. Fix recoverable setup errors and retry the failed step. If blocked, explain the exact action needed to continue without disabling global protections.
1. Detect the OS and the environment where this agent actually runs. Before switching environments, locate existing Stripo settings so the saved connection and Client ID can be reused. Check Node.js 20.18.1+, curl, Git and a POSIX shell. Reuse compatible tools; install missing dependencies or update unsupported versions with the existing package manager or official installers. For a new Node.js installation, choose a supported LTS release meeting the minimum. On local Windows, reuse or set up WSL 2, install VS Code's WSL extension if missing, and reopen the workspace in WSL so the agent runs there. Do not install local WSL for an agent already running on remote Linux. If an OS approval, restart, Linux account setup or reconnecting VS Code needs my action, give me one exact step and a short progress summary so we can resume. Never ask for passwords. After any change, rerun dependency checks in the agent's actual environment.
2. Check VS Code is 1.123+ for oauth.clientId support; update through its existing installation method if necessary. Locate the effective user MCP configuration and the personal skills directory, including any local/remote split. Inspect stripo-mcp in the user configuration and the workspace's .vscode/mcp.json without printing credentials. If you cannot locate the user configuration, guide me to MCP: Open User Configuration rather than guessing its path. Keep a working connection unless I supply a replacement ID. Never save YOUR_CLIENT_ID: reuse the saved ID or ask if missing.
3. For a missing/incorrect entry, edit only servers.stripo-mcp in the user MCP configuration: type = http, url = https://mcp.stripo.email/mcp, oauth.clientId = the selected ID. Preserve other entries and check workspace overrides. Stripo needs no client secret; VS Code obtains scopes from the server. Do not put the Client ID in a public repository.
4. Inspect checkout and destination paths. Back up existing destination files; replace only verified Stripo files and stop on unclear ownership. Clone if missing:
git clone https://github.com/stripoinc/agent-plugin.git ~/stripo-agent-plugin
If the folder already exists, verify that it is a clean checkout of that repository, then run git -C ~/stripo-agent-plugin pull --ff-only instead. Stop for a different origin or local changes.
5. Copy the complete package into the personal skills location read by this agent. For the standard ~/.copilot layout in the agent's environment, run:
mkdir -p ~/.copilot/skills
cp -R ~/stripo-agent-plugin/plugins/stripo/skills/. ~/.copilot/skills/
cp -R ~/stripo-agent-plugin/plugins/stripo/packages ~/.copilot/
cp ~/stripo-agent-plugin/plugins/stripo/mcp-tools.json ~/stripo-agent-plugin/plugins/stripo/bundle.json ~/.copilot/
If the effective location differs, use it consistently and keep skills, packages, mcp-tools.json and bundle.json together. Use real folders. Do not recreate or alter the plugin's files, invent an installer, or delete shared directories.
6. Check the copied package and guide me through restarting VS Code, then MCP: List Servers > stripo-mcp > Start Server. Let me confirm trust and complete browser sign-in. After I return, verify that the Stripo skills load, its MCP tools are available in Agent mode, and whoami returns my expected account. Report those three results separately; leave any unverified result pending. Do not change email content.
Finish VS Code sign-in
Restart VS Code if the agent asks you to, then open the Command Palette (Ctrl+Shift+P on Windows/Linux, Cmd+Shift+P on macOS) and run MCP: List Servers → stripo-mcp → Start Server. If the configuration file is open, you can also click Start above
stripo-mcp.Confirm that you trust the server. When VS Code asks to authenticate, click Allow and sign in to Stripo in the browser.
Verify VS Code setup
Ask the agent to complete the setup check. It should confirm the following:
Open Chat, select Agent, and check Configure Tools for Stripo tools. In sessions using the Copilot harness, use Agent Customizations → Tools.
The skills
email-from-reference,email-model-editor,business-profileandconnectare available in chat. You can also find them by typing/.whoamisucceeds and identifies your expected Stripo account.
Manual reference: VS Code MCP
The setup prompt handles these steps and prepares the environment for you. Manual configuration requires VS Code 1.123+, which supports oauth.clientId.
If MCP already works, skip to Add the Stripo skills to VS Code.
Open the Command Palette (Ctrl+Shift+P on Windows/Linux, Cmd+Shift+P on macOS) and run MCP: Open User Configuration. For a connection limited to one project, use that project's
.vscode/mcp.jsoninstead. Keep the Client ID out of public repositories.Add
stripo-mcpinsideservers, preserving other entries. ReplaceYOUR_CLIENT_ID:
{
"servers": {
"stripo-mcp": {
"type": "http",
"url": "https://mcp.stripo.email/mcp",
"oauth": { "clientId": "YOUR_CLIENT_ID" }
}
}
}VS Code obtains the scopes from the server. Ignore Set Client Secret: Stripo uses a public OAuth client and needs no secret.
Manual reference: add the Stripo skills to VS Code
Install the skills for the email creation and editing workflows. If they are already installed, continue to VS Code sign-in.
VS Code supports agent plugins. These instructions use a local copy of the Stripo skills and SDK in the personal Copilot folder.
Use these commands after the agent has prepared the environment and confirmed where VS Code loads personal skills. The paths below use the standard layout in that environment. Follow the checkout/backup rules; for an existing clean Stripo checkout, replace cloning with git -C ~/stripo-agent-plugin pull --ff-only.
git clone https://github.com/stripoinc/agent-plugin.git ~/stripo-agent-plugin
mkdir -p ~/.copilot/skills
cp -R ~/stripo-agent-plugin/plugins/stripo/skills/. ~/.copilot/skills/
cp -R ~/stripo-agent-plugin/plugins/stripo/packages ~/.copilot/
cp ~/stripo-agent-plugin/plugins/stripo/mcp-tools.json ~/stripo-agent-plugin/plugins/stripo/bundle.json ~/.copilot/
Keep skills, packages, mcp-tools.json and bundle.json side by side. Restart VS Code after copying. Once the skills load, /connect can also check or register stripo-mcp using your Client ID. It uses the user configuration by default; see what the connect skill changes.
Connect Claude web, desktop or mobile
This path connects Stripo through a custom connector; it does not require a config file, Node.js or the Stripo Agent Plugin. It applies to Claude chat on the web, in the desktop app and on mobile. The Code tab of the Claude Desktop app runs Claude Code: use the Claude Code guide there instead. Add the connector on claude.ai or in Claude Desktop to use it across Claude web, desktop, Cowork and mobile.
Set up Claude on Free, Pro or Max
Claude Free allows one custom connector. If that slot is already in use, decide whether to replace the existing connector or use a plan that supports more before adding Stripo. See Claude's custom connector limits.
In Claude Desktop, click your name in the bottom-left corner and open Settings. Under Customize, select Connectors. On the web, open Customize → Connectors.
Click + Add → Add custom connector.
Enter a name, such as stripo-mcp, and the server URL
https://mcp.stripo.email/mcp. Click Continue.Under OAuth client, select Use your own OAuth client. If Register automatically is preselected and marked Detected, change it to Use your own OAuth client.
Paste the Client ID copied from your Stripo workspace into OAuth client ID. Leave OAuth client secret (optional) empty. No Request headers are needed.
Click Add to create the connector.
On the connector's page, click Connect, then sign in to Stripo in the browser. Return to Claude after sign-in.
Set up Claude on Team or Enterprise
A Claude Owner or Primary Owner opens Organization settings → Connectors → Add → Custom → Web.
Enter the name and server URL, then click Continue. Use the same authentication settings as above: Sign in now, Use your own OAuth client, and your Stripo workspace's OAuth client ID. Leave the secret and request headers empty, then click Add.
Each member opens Customize → Connectors, finds Stripo, and clicks Connect to sign in with their own Stripo account.
Verify the Claude connector
Return to Customize → Connectors and check that Stripo is connected. If the connector's page still says You're not connected … yet, click Connect and complete sign-in. Adding the connector alone does not authenticate your Stripo account.
In a chat, use + → Connectors or / to make sure Stripo is turned on, then run the authentication check.
To change the Client ID, remove the Stripo connector and add it again with the replacement ID. See Update a Client ID.
Verify your setup and try a first task
After any requested restart or sign-in, return to your agent and paste:
Continue the Stripo setup and verify it in this session. Check that Stripo's MCP tools are available and use whoami to confirm my account. For a setup path that includes the plugin or copied skills, verify that the Stripo skills are available; missing required skills are a setup failure to diagnose and fix. Only for an explicitly selected MCP-only path, including the Claude custom connector, report skills as not applicable. Do not infer an MCP-only setup from missing skills. Report skills, tools and authentication separately, marking unchecked results as pending. Diagnose failed checks and guide me through any sign-in or restart that needs my action. If you use connect for a repair, explain its configuration changes first. Do not change email content during verification.
The agent reports three results. Confirm that the authentication result names the Stripo account you expect.
Check | What counts as success |
Plugin or copied skills | The Stripo skills are available in the current session when the selected setup path includes them. Missing required skills are a failed check. Report not applicable only for an explicitly selected MCP-only path, including the Claude custom connector. |
MCP tools | The agent can discover the Stripo tools. |
Authentication |
|
If a check fails, use Troubleshooting. If the plugin is installed, its connect skill can help: /stripo:connect in Claude Code, $stripo:connect in Codex, or /connect in Cursor and VS Code. Review what it changes before using it to repair a connection.
Try a first task
After the checks pass, try this read-only task in any connected client, including the Claude custom connector:
List the Stripo projects I can access. Ask me to choose one, then show its five most recently updated emails with their names and IDs. Do not change any content.
If you installed the plugin or copied skills, you can then start an email creation workflow:
Use Stripo's email-from-reference skill to help me create an email in a project I choose. Ask me for the brief and any required text, links and images before creating it.
Troubleshooting
Start with the symptom: missing tools · missing skills · sign-in errors · installation errors · conflicting settings · bridge problems.
Stripo tools are missing or unavailable
Check that stripo-mcp is configured and enabled in the agent's environment, then start a new session. Use the installed connect skill or the MCP instructions for your tool.
In Claude, enable Stripo in the chat's connector picker. In VS Code, select Agent mode and enable Stripo in the tools picker. Still unavailable? Check project overrides and sign-in errors, then retry whoami.
Stripo skills are missing or cannot load their SDK
Start a new session, or use /reload-plugins in Claude Code. Check installation and enabled status with claude plugin list or codex plugin list.
For copied skills, check that ~/.cursor/skills or ~/.copilot/skills contains real folders named connect, email-from-reference, email-model-editor and business-profile, then restart.
For “Cannot find the packaged convo-email-agent SDK”, check that packages, mcp-tools.json and bundle.json sit next to skills. Repeat the complete Cursor or VS Code copy procedure with backup checks, or reinstall the marketplace plugin. Verify skills and MCP afterward.
Sign-in fails or the wrong account appears
Message or symptom | What to check and do |
MCP settings are missing in Stripo | Only Owners and Admins see them. Ask your Owner or Admin to enable MCP and share the Client ID. |
The toggle is disabled or a plan banner appears | The workspace needs Medium, Pro or Prime. |
“Client not found” | The ID may be wrong, contain spaces, or have been regenerated. Copy the current ID and update the connection. |
| The client's callback URL may not be supported. Update the client and follow its guide here. For another client, check compatibility. Contact support if it persists. |
| Use |
Client registration error or “Dynamic Client Registration not supported” | Check the Client ID field for your client. In VS Code, use 1.123+ with |
“Account is disabled, contact your administrator” | First confirm your Stripo email address using the confirmation email, or request a new one from your profile. If it is already confirmed, contact support. |
You cannot sign in with your original social provider | Use email/password, Google or your company SSO. Google can use the same email address as your Stripo account. If you registered with Facebook, Microsoft or Apple and do not use Google, set a password in your Stripo profile first. |
| Sign out of the Stripo connection in that AI tool, then sign in with the intended account. Do not regenerate a workspace Client ID to switch users. |
Claude connector fails before sign-in: add it with Use your own OAuth client and the Stripo Client ID. Recreate the connector after an ID change. Include any error reference when contacting support.
Cursor sign-in does not return: check whether stripo-mcp already shows Connected. Otherwise, allow the browser to open Cursor and retry Authenticate. If logs show a callback port conflict, identify the process using port 8787 before closing it. Contact support if the callback still fails.
Codex: if it says the server “may or may not require login”, use the explicit login command, complete browser sign-in and start a new session.
Installation commands fail
Paste the error into the same agent chat and ask it to continue setup. You do not need to diagnose or install the missing software yourself.
An unknown command or option: the agent should check which installation it is using and update the AI tool if needed.
Missing Node.js, curl, Git or a suitable shell: the agent should install the missing software, then repeat the checks in its working environment. See the technical setup reference.
Cursor: “Operation not permitted” on
~/.cursor/mcp.jsonor no network access: Cursor's sandbox blocked the command. Approve rerunning it outside the sandbox when the agent asks; the confirmation button may still read Run in sandbox. Or use the terminal steps.Permission errors or “Operation not permitted”: the agent should request access for the specific operation. If an administrator must act, it should explain the exact step and resume afterward. It should diagnose network errors without disabling global protections.
PowerShell says scripts are disabled: let the agent identify the appropriate launcher or prepare the environment required by the skills. The technical reference includes the Windows details.
The agent writes plugin files individually: ask it to use the complete package from the repository. It must inspect and back up affected files, replace only verified Stripo files, and preserve shared directories and files of unknown origin.
The client keeps using an old Stripo connection
A local or project entry can override a user-level entry. Inspect only stripo-mcp in the relevant locations; preserve other servers and settings.
Client | Settings to compare |
Claude Code |
|
Codex | Compare the user |
Cursor | Compare |
VS Code | Compare MCP: Open User Configuration with |
For manual repairs, keep matching settings. Back up and correct only a confirmed obsolete Stripo override. In Claude Code, use claude mcp remove stripo-mcp --scope local or claude mcp remove stripo-mcp --scope project for the affected scope. Verify the intended workspace and replacement entry first. If you use connect in Claude Code or Codex instead, its migration procedure removes Stripo project overrides after saving the user-level entry, even when those overrides previously worked. Restart and retry whoami.
Updates and access
Staying signed in
Your client normally refreshes access automatically. You may need to sign in again after a long period without use, signing out in the client, an Owner/Admin regenerating the Client ID or disabling the integration, or a workspace plan change.
Update the plugin or copied skills
Plugin updates normally preserve the separate MCP configuration. You do not need to replace the Client ID just to update skills.
Choose the row that matches your interface. In the Code tab of the Claude Desktop app, /plugin may open the graphical Plugins screen with Yours and Discover tabs. The Marketplaces → Enable auto-update instructions below refer to the plugin menu in a terminal Claude Code session. The Claude custom connector path has no plugin to update.
Installation | How to update |
Claude Desktop app, Code tab: graphical plugin screen | Open Settings → Customize → Plugins → Yours and select Stripo. Click Update when the button is available. The on/off switch enables or disables the plugin; it is not an auto-update setting. If no auto-update control is shown, use the Update button for manual updates. |
Claude Code in a terminal: local marketplace installation | Start Claude Code with |
Codex | Codex refreshes configured marketplaces when it starts. To refresh manually, run |
Cursor, VS Code or other copied skills | Check the checkout and destination files using the backup rules. Run |
After an update, start a new conversation or session and check that the Stripo skills are available. The absence of an auto-update control does not tell you whether the Desktop app updates that plugin automatically.
Regenerate or update a Client ID
An Owner or Admin can regenerate an exposed ID in Workspace Settings → MCP integration. This is not a routine connection check.
Regeneration affects every AI connection in the workspace. Click Generate a new Client ID and confirm: new sign-ins with the old ID stop immediately; existing connections lose access within minutes. Share the new ID with your team and update each connection:
AI tool | What to do with the replacement ID |
Claude Code | Run |
Codex | Ask for |
Cursor | Use |
VS Code | Update |
Claude custom connector | Remove the Stripo connector, add it with the new ID, and click Connect. On Team/Enterprise, the Owner re-adds it and each member connects again. |
| Quit the agent, update |
The plugin or copied skills stay installed. After reconnecting, repeat the authentication check.
Disconnect one tool or disable the integration
To sign out of just one connection, use the client's Stripo disconnect/sign-out action. In Claude Code, use claude mcp logout stripo-mcp or Clear authentication in /mcp. In Codex, use codex mcp logout stripo-mcp.
To disable access for the whole workspace, an Owner or Admin turns off Connect AI tools in Stripo. All connected AI tools lose access within a few minutes. Turning it back on lets you use the same Client ID again.
A downgrade to a plan without MCP integration disables the integration automatically. After upgrading to an eligible plan, turn it on again.
Technical setup reference for AI agents
These instructions support the copyable prompts above. In an agent-assisted setup, the agent performs the relevant checks; readers following a manual guide perform them in the environment specified by that guide. Local skill-runtime requirements apply only to a setup with the plugin or copied skills.
Identify the AI tool, the selected setup path and the actual execution environment: macOS, Linux, native Windows, WSL or a remote host. Follow only that tool's guide. Install the plugin or its skills alongside MCP when the selected path includes the email workflows. For an explicitly selected MCP-only path, including the Claude custom connector, verify tools and authentication without requiring skills. Missing skills alone do not make a setup MCP-only.
Inspect existing Stripo configuration before changing environments. Reuse the saved Client ID unless the user supplies a replacement. The direct setup prompts preserve a working entry; if invoking
connect, first explain its changes to transport and scope. Ask for an ID only when missing; never saveYOUR_CLIENT_ID. Locate the active client's configuration, plugin and skill directories instead of inferring them from a terminal's home folder. Do not copy credential stores to a new environment; use the client's sign-in flow if needed.Check user and current-project settings for conflicting
stripo-mcpentries. Back up modified files and preserve unrelated settings, plugins, skills and packages. Follow the copy and backup rules.Treat a missing dependency as a setup task: install it, then verify it. Use the client's normal approval flow for additional access and preserve global approval and sandbox settings. If a required action is outside your capabilities or blocked by company policy, explain one specific next step for the user or administrator.
Before a restart or environment switch, provide a short progress summary with completed steps, relevant paths and the next action, excluding credentials. Resume from it afterward; do not repeat completed installations. Let the user complete interactive account setup and browser sign-in. Never request passwords or tokens, or display whole configuration files.
Report plugin/skills available, MCP tools available, and authentication verified separately. Mark unchecked states pending and failed checks failed. Mark skills not applicable only for an explicitly selected MCP-only path. After any required restart, verify tool availability and, when required by the selected path, skill discovery in the new session, then call
whoami. Diagnose and fix missing required skills instead of marking them not applicable. Never modify content to test setup.
Prepare and verify the agent's environment
For a setup with the plugin or copied skills, the agent must load SKILL.md skills, use a shell and MCP tools, read local files, and inspect image previews. The Stripo skills require Node.js 20.18.1+, curl, a POSIX shell, and network access to Stripo and its returned upload/download URLs. Repository cloning and updates also require Git. The SDK is included in the plugin package; no separate SDK installation is needed.
Check the existing tools in the shell that will execute the skills:
node --version
curl --version
git --version
Use the OS's existing package manager or official installers to install missing tools. Reuse compatible installations; do not downgrade them. For a new Node.js installation, choose a supported LTS release that meets the minimum using the official Node.js installation instructions. After installing or updating software, refresh the session if necessary and rerun the checks in the agent's environment. A successful check in a separate terminal does not prove the agent can use the tool.
On local Windows: the Stripo skills use a POSIX environment. Inspect existing WSL installations first, including their version, and reuse a suitable WSL 2 environment. If missing, follow Microsoft's WSL installation guide, using the normal approval flow for wsl --install. A restart and first-run Linux account setup may require the user's action. Explain the exact action, then continue setup inside that environment. Do not install local WSL when the agent already runs on a remote Linux host.
Connect the actual agent to that environment: launch Claude Code or the Codex CLI there, use Codex's supported WSL agent setting, or connect the Cursor/VS Code workspace to WSL. For VS Code, follow its WSL setup guide. Changing only the integrated terminal does not switch the agent. Confirm where the client loads its settings and skills before installing the Stripo package.
Codex paths and versions: respect an existing CODEX_HOME. The usual config path is ~/.codex/config.toml; the Windows app normally uses %USERPROFILE%\.codex, while a separate WSL CLI uses its Linux home. These installations may have separate configuration and authentication. See Codex's Windows app guide. Use the CLI associated with the active installation and its effective configuration for setup commands. Check codex --version and plugin-command support; update through the existing installation method if needed. Manual --oauth-client-id registration requires 0.134.0+. For Claude Code, check that the CLI is available in the chosen environment and use claude update if needed.
Native Windows MCP-only setups: the skill runtime above is unnecessary for a direct MCP connection. If PowerShell blocks npm.ps1 or codex.ps1, use npm.cmd or codex.cmd instead. A user who explicitly chooses a per-user execution-policy change can run Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser and confirm with Y; administrator rights are not required. Follow Microsoft's execution-policy guide, and do not change policy automatically to bypass an error. For the Stripo skills, prepare the POSIX environment described above.
Advanced: connect another AI tool
Your client must support remote MCP and Stripo's OAuth flow: a pre-registered public Client ID, PKCE S256, the required scopes, and an accepted callback URL. Stripo allows specific client callbacks and local loopback patterns; other callbacks can produce redirect_uri errors.
Use these settings in a compatible client's native MCP configuration:
Setting | Value |
Server name |
|
Transport | Streamable HTTP |
Server URL |
|
OAuth Client ID | Your workspace's Client ID from Stripo |
Client Secret | None; leave it empty |
Scopes |
|
Configure these values, sign in, and verify authentication. If the client cannot use the Client ID or complete remote OAuth, consider the bridge. Contact support for unsupported callbacks.
Use the mcp-remote bridge
For clients that launch local stdio servers, this bridge handles remote OAuth. The pinned mcp-remote version below requires Node.js 20.18.1+, even for an MCP-only setup without Stripo skills. It opens browser sign-in on first start, using callback port 3334.
In clients using an mcpServers configuration, add the entry below while preserving existing servers. Other clients may need a different wrapper around the same command, environment and arguments. Replace YOUR_CLIENT_ID and ABSOLUTE_PATH_TO_STRIPO_AUTH_FOLDER.
Use a Stripo-only absolute path: /Users/your-name/.stripo/mcp-auth on macOS, /home/your-name/.stripo/mcp-auth on Linux/WSL, or C:/Users/your-name/.stripo/mcp-auth on Windows. Substitute your OS username. When migrating, sign in again and preserve the previous credential folder.
{
"mcpServers": {
"stripo-mcp": {
"command": "npx",
"env": {
"MCP_REMOTE_CONFIG_DIR": "ABSOLUTE_PATH_TO_STRIPO_AUTH_FOLDER"
},
"args": [
"-y", "mcp-remote@0.14.3", "https://mcp.stripo.email/mcp", "3334",
"--static-oauth-client-info", "{\"client_id\":\"YOUR_CLIENT_ID\"}",
"--static-oauth-client-metadata", "{\"scope\":\"mcp:tools offline_access\"}"
]
}
}
}On native Windows, use npx.cmd as command. Start the connection in your client, complete sign-in yourself, and run the authentication check.
Troubleshoot the bridge
“npx not found” or “spawn npx ENOENT”: ask the agent to install the required Node.js version, check the launcher path, and guide you through fully restarting the client. If
npxworks only in the terminal, the agent should setcommandto its full path, found withwhich npxon macOS/Linux orwhere npx.cmdon Windows.“Callback port 3334 is already in use”: change
3334inargsto a free port such as3335, restart and sign in again.Repeated sign-in requests: check the Client ID and that the bridge can write to its dedicated auth folder. If saved authentication needs resetting, quit the client and set
MCP_REMOTE_CONFIG_DIRto a new, empty Stripo-only folder. Restart and sign in again. Keep the previous folder and shared~/.mcp-authdata unchanged.
Add skills to another compatible agent
The agent should prepare the skill runtime and capabilities to use the Stripo workflows. A successful MCP connection alone does not load skills.
Use the agent's documented personal skills location. Keep skills/, packages/, mcp-tools.json and bundle.json from plugins/stripo/ together, following the backup rules. Copying only skills/ omits the SDK. See other-agent instructions for alternate layouts. Restart and verify skills, tools and authentication separately.
Tool reference
The reference for every tool the Stripo MCP server exposes to a connected AI agent: what each tool does, its parameters, and example requests and responses.
Core mechanics
Four patterns run across the tools. Understanding them makes the reference below obvious.
1. Large content travels by link, never inline. HTML, document JSON, screenshots, and schemas are never returned in the response body. Instead you get a temporary presigned URL (htmlUrl, downloadUrl, and so on) and an expiry (expiresAt). Links expire within minutes — download right away; to get a fresh link, run the tool again.
2. Editing content is a round-trip. You never send new content inline. To change an email:
get_document_state→ download the current JSON.prepare_document_state_upload→ get anuploadIdand a presigneduploadUrl. Upload your edited JSON there.set_document_state→ apply it with theuploadId(never the URL).To keep other people’s concurrent edits, call
prepare_document_state_uploada second time, upload the unmodified JSON to that ticket, and pass its id asbaseUploadId— your change is then applied as a delta, not a full overwrite.
Validate your JSON against get_document_state_schema before uploading. Upload tickets are single-use.
3. Dates. find_content accepts relative tokens resolved on the server — pass last_month or -6mo as-is; don’t compute dates yourself. find_projects and find_activity take epoch-milliseconds only, so call get_server_time first.
4. Export limit and recovery. Each export_to_html call uses one export from your workspace quota — the tool returns QUOTA_EXCEEDED once it’s spent. delete_content is a soft delete: items go to the trash and stay recoverable.
Tools
Tools are grouped by what they do to your workspace:
🟢 Reads — never changes your workspace.
🟡 Creates or prepares — adds new content, exports, or issues an upload ticket; doesn’t change existing content.
🔴 Changes or deletes — overwrites or removes existing content. Confirm before running.
Your identity is automatic — no tool takes a user ID. Call whoami first.
Discovery 🟢
Tool | What it does | Key parameters |
| Returns your profile, every accessible workspace with your role and plan, content counts, | none |
| Lists accessible projects with role, counts, and timestamps. A single |
|
| Lists the folder tree: type (EMAIL/TEMPLATE), item count, |
|
| Searches or counts emails, templates, and modules by name, body text, or metadata. Drafts are excluded by default. |
|
| Searches create, update, delete, move, and restore events. |
|
| Lists workspace members with their role and access scope. Requires permission to view members (Owners and Admins have it by default). |
|
| Returns the server’s current UTC time. The reference point for relative dates and epoch-ms filters. | none |
Read content 🟢
Tool | What it does | Key parameters |
| Full detail of one email, template, or module: name, project and folder, author and editor, timestamps, draft flag, language, and for emails the subject line and preheader. With |
|
| Returns a presigned link to the current document JSON of one email or template — for inspection or a round-trip edit. |
|
| Returns a presigned link to the JSON Schema every document state follows. | none |
| Reads a project’s Business Profile: the brand context (brand and brand voice, contacts, socials, important links, languages) that email creation uses. |
|
| Returns presigned PNG links of the export-ready view, including unsaved co-editing changes. |
|
Create or prepare 🟡
Tool | What it does | Key parameters |
| Creates a new editable email and returns its |
|
| Compiles ready-to-send HTML (styles inlined, editor markup stripped) and returns a presigned |
|
| Step 1 of an edit: returns a single-use |
|
| Step 1 of a full Business Profile replace: returns an |
|
Change or delete 🔴
Tool | What it does | Key parameters |
| Applies an uploaded document state by |
|
| Updates selected Business Profile fields. Omitted fields stay; a supplied array replaces the whole list, and |
|
| Replaces a project’s entire Business Profile from an uploaded file. May overwrite concurrent changes. |
|
| Soft-deletes emails, templates, or modules to the trash (recoverable). Requires |
|
🔴 Tools change or remove existing work. When your agent proposes one, review the target before you approve. Whether your AI tool pauses for approval depends on its own settings — make sure destructive calls require confirmation.
Rules agents trip on
Pick the project explicitly.
create_emailwithoutprojectIduseswhoami’sactiveProjectId— a guess. An email created in the wrong project can’t be moved, only deleted and recreated. Use a project whose role includes theEMAILS_MANAGEpermission.Retries can duplicate. After a
create_emailtimeout, check withfind_content(nameContains) before calling again.Name collisions. A name already taken in the project gets a numeric suffix; the response reports the name actually stored.
Keep languages consistent. When patching a Business Profile, keep
languagesandbrand.brandVoice.defaultLanguagesin sync — include both if they’d conflict.Mobile export isn’t available yet.
viewType: "mobile"returns the desktop export with a warning.Body search lags fresh edits. The
bodyTextindex updates in the background, so an email edited moments ago may not match yet. Search by name, or useupdatedAfter, for the latest changes.Activity history has a start date.
find_activityonly returns events recorded since activity logging began. When results are empty or limited, the response’snoteexplains why; fall back tofind_contentwithupdatedAfter/updatedBefore.
Requests and responses
Every response is JSON. Examples show the fields each tool documents; values are illustrative and long URLs are shortened.
Response conventions
status— failures come back as a status code rather than a thrown error. The document-state and upload tools also returnstatus: "OK"on success.instruction—create_email, the upload-ticket tools, and non-OKset_document_stateresponses include aninstructionnaming the next call. Follow it.note—find_projectsandfind_activitymay add a plain-Englishnoteexplaining a partial or empty result and what to try instead.Presigned URLs — big payloads come back as
downloadUrl/htmlUrl/uploadUrlwith an expiry (expiresAtorhtmlUrlExpiresAt).Pagination — list tools return
total,returned, andhasMore. WhenhasMoreistrue, pass the returnednextOffsetasoffsetto get the next page.Missing isn’t an error — an unknown or inaccessible
idreturnsstatus: "NOT_FOUND", not a thrown error.
whoami
json
{ "tool": "whoami", "arguments": {} }Response (trimmed):
json
{ "userId": 20154, "firstName": "Alex", "lastName": "Doe", "email": "you@example.com", "activeProjectId": 44873, "workspaces": [ { "workspaceId": 44210, "name": "Acme workspace", "myRole": "owner", "pricingPlan": "MEDIUM", "scope": "WORKSPACE", "counts": { "emails": 128, "templates": 12, "modules": 7, "projects": 3 }, "groups": [], "projects": [ { "id": 44873, "name": "Newsletters", "role": "owner", "status": "ACTIVE", "counts": { "emails": 64, "templates": 4, "modules": 2 } } ] } ], "roles": { "owner": { "permissions": [ { "name": "EMAILS_MANAGE", "desc": "Create, edit, and delete emails" } ] } } }roles is a legend: each role your workspaces reference, with its full permission list.
get_server_time
json
{ "tool": "get_server_time", "arguments": {} }json
{ "nowEpochMs": 1789568379943, "nowIso": "2026-09-16T14:19:39.943Z", "todayDate": "2026-09-16", "dayOfWeek": "Wednesday", "timezone": "UTC" }find_content
json
{ "tool": "find_content", "arguments": { "nameContains": "welcome", "type": "email", "limit": 3 } }Response (trimmed):
json
{ "total": 2, "returned": 2, "hasMore": false, "appliedFilters": { "scope": "current", "workspaceIds": [44210], "draft": false, "countOnly": false, "limit": 3, "offset": 0 }, "byType": { "email": 2, "template": 0, "module": 0 }, "items": [ { "type": "email", "id": 90218, "name": "Welcome — Day 1", "projectId": 44873, "projectName": "Newsletters", "folderId": 771, "folderName": "Onboarding", "createdById": 20154, "createdByName": "Alex Doe", "createdAt": 1789400000000, "updatedById": 20154, "updatedByName": "Alex Doe", "updatedAt": 1789500000000 } ] }appliedFiltersechoes the filters the server actually used.Modules have no folders, so module items omit
folderIdandfolderName.nextOffsetappears only whenhasMoreistrue.To count without listing, add
"countOnly": trueand readtotalandbyType. For a breakdown, add"groupBy": "project"— the response then includesgroups[](key,name,count) covering the full match set, not just the page.When you pass a relative date token, the response includes
resolvedWindowwith the exact bounds the server used.
get_content (with HTML)
json
{ "tool": "get_content", "arguments": { "id": 90218, "type": "email", "includeHtml": true } }Response:
json
{ "type": "email", "id": 90218, "name": "Welcome — Day 1", "projectId": 44873, "projectName": "Newsletters", "folderId": 771, "folderName": "Onboarding", "createdById": 20154, "createdByName": "Alex Doe", "createdAt": 1789400000000, "updatedById": 20154, "updatedByName": "Alex Doe", "updatedAt": 1789500000000, "language": "en", "subjectLine": "Welcome aboard", "preheader": "Let's get you started", "htmlUrl": "https://…/9f2c….html?X-Amz-…", "htmlUrlExpiresAt": "2026-09-16T14:44:20Z" }htmlUrl and htmlUrlExpiresAt appear only with includeHtml: true; htmlUrl points to the raw stored HTML. For ready-to-send HTML, use export_to_html. subjectLine and preheader are returned for emails only; modules have no folder fields.
get_document_state_schema
json
{ "tool": "get_document_state_schema", "arguments": {} }json
{ "status": "OK", "downloadUrl": "https://…/dfd4….json?X-Amz-…", "expiresAt": "2026-09-16T14:44:20Z", "message": "Fetch the JSON from downloadUrl with curl; the link is temporary." }get_document_state returns the same shape for one email’s document JSON.
create_email
json
{ "tool": "create_email", "arguments": { "name": "March webinar invite", "projectId": 44873 } }json
{ "emailId": 90477, "projectId": 44873, "name": "March webinar invite", "instruction": "<the next call to make for this deployment>" }The email starts blank unless you pass sourceTemplateId or sourceEmailId. Follow the instruction.
Edit an email — the full round-trip
1. Read the current state — get_document_state returns a downloadUrl (shape as above). Download and edit the JSON.
2. Get an upload ticket:
json
{ "tool": "prepare_document_state_upload", "arguments": { "id": 90477, "type": "EMAIL" } }json
{ "status": "OK", "uploadId": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4", "uploadUrl": "https://…/upload/….json?X-Amz-…", "instruction": "<upload the file, then call set_document_state with this uploadId>" }Upload your edited JSON to uploadUrl as the returned instruction describes. The URL is a short-lived credential — never pass it on.
3. Apply it:
json
{ "tool": "set_document_state", "arguments": { "id": 90477, "uploadId": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" } }json
{ "status": "OK" }Concurrency-safe variant: mint a second ticket, upload the unmodified JSON to it, and add "baseUploadId": "<second uploadId>" in step 3.
export_to_html (with merge tags)
json
{ "tool": "export_to_html", "arguments": { "id": 90218, "type": "email", "mergeTags": { "{{first_name}}": "Anna" } } }json
{ "type": "email", "id": 90218, "name": "Welcome — Day 1", "htmlUrl": "https://…/export-….html?X-Amz-…", "htmlUrlExpiresAt": "2026-09-16T14:44:20Z", "exportedAt": 1789568379943, "warnings": [ "Merge tag {{last_name}} was not replaced: no value provided" ] }Merge-tag keys are the literal placeholders as they appear in the content. Unmapped placeholders come back in warnings[] as plain-text messages, not as errors. With includeAmpHtml: true you also get ampHtmlUrl and ampHtmlUrlExpiresAt — or a warning if the content has no AMP markup.
delete_content (preview, then confirm)
json
{ "tool": "delete_content", "arguments": { "ids": [90218, 90477], "type": "email", "dryRun": true } }json
{ "requested": 2, "dryRun": true, "deleted": [90218, 90477], "denied": [] }Then run the same call with "confirm": true instead of "dryRun": true:
json
{ "requested": 3, "dryRun": false, "deleted": [90218, 90477], "denied": [ { "id": 90650, "reason": "NOT_FOUND" } ] }deleted[] lists the ids removed (or, on a dry run, the ids that would be). denied[] lists ids that weren’t, each with a reason — NOT_FOUND or FORBIDDEN. Deleted items go to the trash and stay recoverable.
Calling without confirm or dryRun returns an error instead of deleting:
json
{ "error": { "code": "INVALID_ARGUMENT", "terminal": true, "retryable": false, "hint": "Refusing to delete without confirm=true. Pass dryRun=true to preview, or confirm=true to delete." } }get_business_profile
json
{ "tool": "get_business_profile", "arguments": { "projectId": 44873 } }Response (trimmed):
json
{ "businessProfileId": 3021, "businessProfile": { "brand": { "brandVoice": { "defaultLanguages": ["en"] } }, "languages": ["en"] } }The other root sections are contacts, socials, and importantLinks. When no profile exists, businessProfileId is null and businessProfile holds defaults. Update it with patch_business_profile (partial) or prepare_business_profile_upload + replace_business_profile (full), then read it back to confirm.
Tool-chain examples
Job | Tool chain |
Export an existing email to HTML |
|
Create and fill a new email |
|
Personalize on export |
|
Review recent workspace activity |
|
Delete safely |
|
Check how an email looks |
|
Need help?
Ask your agent for a short setup summary, then email it to support@stripo.email. It should include your AI tool and version, operating system and agent environment, the failed step, and the exact error text or reference ID. Remove passwords, tokens and unrelated configuration from anything you share.
Documentation reviewed: October 15, 2026. Client interfaces can change; the version requirements above describe the features used by these instructions.
