@convertcom/mcp-server 0.0.1-beta.3 β†’ 0.0.1-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 153 33">
2
+ <g fill="#FFFFFF">
3
+ <path
4
+ d="M17.94 24.823h4.699c-.69 2.634-2.007 4.64-3.947 6.018C16.748 32.283 14.308 33 11.365 33c-3.57 0-6.355-1.157-8.36-3.475C1 27.27 0 24.04 0 19.837c0-4.009.968-7.142 2.912-9.397 2-2.319 4.79-3.482 8.36-3.482 3.76 0 6.668 1.13 8.736 3.385 1.127 1.38 1.94 2.978 2.444 4.794h-6.578c-.314-.624-.626-1.092-.936-1.409-.82-.878-1.976-1.317-3.476-1.317-1.382 0-2.508.44-3.383 1.317-1.127 1.254-1.691 3.327-1.691 6.21 0 2.88.564 4.915 1.69 6.107.81 1.002 2.03 1.503 3.664 1.503 1.065 0 1.968-.217 2.724-.657.188-.061.358-.173.514-.329.158-.16.329-.33.52-.517.122-.19.374-.438.748-.752.381-.31.942-.47 1.692-.47"></path>
5
+ <path fill-rule="evenodd" clip-rule="evenodd"
6
+ d="M24.314 25.72c.561 1.912 1.505 3.43 2.818 4.557 1.252 1.127 2.931 1.928 5.029 2.394 2.095.474 4.18.43 6.246-.138 2.314-.502 4.225-1.788 5.735-3.855.681-1.002 1.25-2.222 1.688-3.663.436-1.442.655-3.166.655-5.178 0-2.756-.535-5.165-1.6-7.236-1.124-2.316-2.876-3.95-5.255-4.888-2.066-.756-4.384-.955-6.953-.613-2.569.346-4.667 1.46-6.294 3.34-1.007 1.124-1.74 2.539-2.214 4.232a19.12 19.12 0 00-.7 5.078c0 2.06.28 4.056.845 5.97zm5.549-5.55c-.129-2.853.464-4.998 1.779-6.442.438-.436 1.13-.798 2.068-1.081a4.58 4.58 0 012.815.048c.942.316 1.775 1.033 2.491 2.164.724 1.127 1.081 2.82 1.081 5.078-.06 2.503-.467 4.321-1.22 5.449-.751 1.127-1.617 1.832-2.585 2.117a4.47 4.47 0 01-2.867-.097c-.935-.342-1.594-.763-1.968-1.267-.942-1.124-1.475-3.113-1.594-5.97z"></path>
7
+ <path
8
+ d="M69.311 32.534h-3.285c-.94 0-1.708-.3-2.302-.895-.597-.598-.89-1.362-.89-2.302V16.552c0-1.505-.458-2.604-1.366-3.295a4.928 4.928 0 00-3.054-1.034 4.73 4.73 0 00-3.004 1.034c-.878.69-1.317 1.79-1.317 3.295v15.982h-6.572V17.867c0-4.26 1.107-7.113 3.334-8.558 2.221-1.44 4.677-2.222 7.373-2.351 2.756 0 5.29.723 7.61 2.164 2.318 1.44 3.473 4.358 3.473 8.745v14.667z"></path>
9
+ <path fill-rule="evenodd" clip-rule="evenodd"
10
+ d="M118.667 24.823h-4.698c-.747 0-1.333.159-1.735.47-.408.314-.647.562-.704.752l-.148.147-.372.37a1.33 1.33 0 01-.517.33c-.751.44-1.659.656-2.722.656-1.629 0-2.855-.501-3.666-1.503-.877-.94-1.346-2.383-1.406-4.326h16.249c.064-.123.095-.341.095-.658v-1.034c0-4.134-.999-7.362-3.003-9.684-2.071-2.255-4.982-3.385-8.742-3.385-3.563 0-6.355 1.163-8.357 3.482-1.942 2.255-2.917 5.388-2.917 9.397 0 4.203 1.003 7.433 3.008 9.688 2.004 2.318 4.794 3.475 8.362 3.475 2.945 0 5.388-.718 7.331-2.16 1.936-1.378 3.254-3.384 3.942-6.017zm-6.389-7.335h-9.579c.06-1.628.529-2.88 1.407-3.76.878-.878 2.003-1.317 3.38-1.317 1.504 0 2.662.44 3.48 1.317.751.814 1.186 2.067 1.312 3.76z"></path>
11
+ <path
12
+ d="M120.077 32.533V20.402c0-2.442.362-4.494 1.08-6.157.721-1.66 1.705-2.991 2.96-3.992 1.19-.944 2.583-1.632 4.182-2.07a18.552 18.552 0 014.928-.66H134.168V14.2h-2.158c-1.818 0-3.168.44-4.04 1.311-.879.882-1.318 2.262-1.318 4.142v12.88h-6.575zM145.907 32.533c-2.062.121-4.304.093-6.713-.095-2.414-.188-3.614-1.723-3.614-4.606V.187h3.381c.81 0 1.533.317 2.158.943.627.627.941 1.38.941 2.258v4.229h3.846v1.317c0 .937-.31 1.706-.933 2.304a3.163 3.163 0 01-2.257.894h-.655v13.913c0 1.063.621 1.598 1.878 1.598h1.967v4.89h.001z"></path>
13
+ <path opacity=".5" d="M71.839 8.985l-1.47 3.61 3.073 6.95 3.341-8.689-4.944-1.871z"
14
+ fill="inherit"></path>
15
+ <path opacity=".75" d="M80.39 8.316l-5.478 14.438 3.073 7.085 7.617-19.517-5.211-2.006z"
16
+ fill="inherit"></path>
17
+ <path
18
+ d="M96.025 10.322L94.42 1.098l-7.35 5.614 2.005.802-9.754 25.266h5.612L94.02 9.52l2.005.802zM149.906 3.124c-1.492 0-2.7 1.226-2.7 2.715 0 1.5 1.208 2.714 2.7 2.714a2.715 2.715 0 000-5.43zm0 4.904a2.176 2.176 0 01-2.178-2.19c0-1.204.969-2.189 2.178-2.189a2.19 2.19 0 010 4.379zm1.198-.887c-.577-1.062-.544-1.007-.577-1.05.261-.154.425-.46.425-.81 0-.57-.327-.931-1.1-.931h-.861a.132.132 0 00-.13.131v2.715c0 .077.054.131.13.131h.425a.133.133 0 00.131-.131v-.909h.348l.512.975c.022.043.076.065.12.065h.457c.109 0 .164-.098.12-.186zm-1.198-1.478h-.359v-.7h.294c.348 0 .424.131.424.35 0 .23-.13.35-.359.35z"></path>
19
+ </g>
20
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 153 33">
2
+ <g fill="#24292F">
3
+ <path
4
+ d="M17.94 24.823h4.699c-.69 2.634-2.007 4.64-3.947 6.018C16.748 32.283 14.308 33 11.365 33c-3.57 0-6.355-1.157-8.36-3.475C1 27.27 0 24.04 0 19.837c0-4.009.968-7.142 2.912-9.397 2-2.319 4.79-3.482 8.36-3.482 3.76 0 6.668 1.13 8.736 3.385 1.127 1.38 1.94 2.978 2.444 4.794h-6.578c-.314-.624-.626-1.092-.936-1.409-.82-.878-1.976-1.317-3.476-1.317-1.382 0-2.508.44-3.383 1.317-1.127 1.254-1.691 3.327-1.691 6.21 0 2.88.564 4.915 1.69 6.107.81 1.002 2.03 1.503 3.664 1.503 1.065 0 1.968-.217 2.724-.657.188-.061.358-.173.514-.329.158-.16.329-.33.52-.517.122-.19.374-.438.748-.752.381-.31.942-.47 1.692-.47"></path>
5
+ <path fill-rule="evenodd" clip-rule="evenodd"
6
+ d="M24.314 25.72c.561 1.912 1.505 3.43 2.818 4.557 1.252 1.127 2.931 1.928 5.029 2.394 2.095.474 4.18.43 6.246-.138 2.314-.502 4.225-1.788 5.735-3.855.681-1.002 1.25-2.222 1.688-3.663.436-1.442.655-3.166.655-5.178 0-2.756-.535-5.165-1.6-7.236-1.124-2.316-2.876-3.95-5.255-4.888-2.066-.756-4.384-.955-6.953-.613-2.569.346-4.667 1.46-6.294 3.34-1.007 1.124-1.74 2.539-2.214 4.232a19.12 19.12 0 00-.7 5.078c0 2.06.28 4.056.845 5.97zm5.549-5.55c-.129-2.853.464-4.998 1.779-6.442.438-.436 1.13-.798 2.068-1.081a4.58 4.58 0 012.815.048c.942.316 1.775 1.033 2.491 2.164.724 1.127 1.081 2.82 1.081 5.078-.06 2.503-.467 4.321-1.22 5.449-.751 1.127-1.617 1.832-2.585 2.117a4.47 4.47 0 01-2.867-.097c-.935-.342-1.594-.763-1.968-1.267-.942-1.124-1.475-3.113-1.594-5.97z"></path>
7
+ <path
8
+ d="M69.311 32.534h-3.285c-.94 0-1.708-.3-2.302-.895-.597-.598-.89-1.362-.89-2.302V16.552c0-1.505-.458-2.604-1.366-3.295a4.928 4.928 0 00-3.054-1.034 4.73 4.73 0 00-3.004 1.034c-.878.69-1.317 1.79-1.317 3.295v15.982h-6.572V17.867c0-4.26 1.107-7.113 3.334-8.558 2.221-1.44 4.677-2.222 7.373-2.351 2.756 0 5.29.723 7.61 2.164 2.318 1.44 3.473 4.358 3.473 8.745v14.667z"></path>
9
+ <path fill-rule="evenodd" clip-rule="evenodd"
10
+ d="M118.667 24.823h-4.698c-.747 0-1.333.159-1.735.47-.408.314-.647.562-.704.752l-.148.147-.372.37a1.33 1.33 0 01-.517.33c-.751.44-1.659.656-2.722.656-1.629 0-2.855-.501-3.666-1.503-.877-.94-1.346-2.383-1.406-4.326h16.249c.064-.123.095-.341.095-.658v-1.034c0-4.134-.999-7.362-3.003-9.684-2.071-2.255-4.982-3.385-8.742-3.385-3.563 0-6.355 1.163-8.357 3.482-1.942 2.255-2.917 5.388-2.917 9.397 0 4.203 1.003 7.433 3.008 9.688 2.004 2.318 4.794 3.475 8.362 3.475 2.945 0 5.388-.718 7.331-2.16 1.936-1.378 3.254-3.384 3.942-6.017zm-6.389-7.335h-9.579c.06-1.628.529-2.88 1.407-3.76.878-.878 2.003-1.317 3.38-1.317 1.504 0 2.662.44 3.48 1.317.751.814 1.186 2.067 1.312 3.76z"></path>
11
+ <path
12
+ d="M120.077 32.533V20.402c0-2.442.362-4.494 1.08-6.157.721-1.66 1.705-2.991 2.96-3.992 1.19-.944 2.583-1.632 4.182-2.07a18.552 18.552 0 014.928-.66H134.168V14.2h-2.158c-1.818 0-3.168.44-4.04 1.311-.879.882-1.318 2.262-1.318 4.142v12.88h-6.575zM145.907 32.533c-2.062.121-4.304.093-6.713-.095-2.414-.188-3.614-1.723-3.614-4.606V.187h3.381c.81 0 1.533.317 2.158.943.627.627.941 1.38.941 2.258v4.229h3.846v1.317c0 .937-.31 1.706-.933 2.304a3.163 3.163 0 01-2.257.894h-.655v13.913c0 1.063.621 1.598 1.878 1.598h1.967v4.89h.001z"></path>
13
+ <path opacity=".5" d="M71.839 8.985l-1.47 3.61 3.073 6.95 3.341-8.689-4.944-1.871z"
14
+ fill="inherit"></path>
15
+ <path opacity=".75" d="M80.39 8.316l-5.478 14.438 3.073 7.085 7.617-19.517-5.211-2.006z"
16
+ fill="inherit"></path>
17
+ <path
18
+ d="M96.025 10.322L94.42 1.098l-7.35 5.614 2.005.802-9.754 25.266h5.612L94.02 9.52l2.005.802zM149.906 3.124c-1.492 0-2.7 1.226-2.7 2.715 0 1.5 1.208 2.714 2.7 2.714a2.715 2.715 0 000-5.43zm0 4.904a2.176 2.176 0 01-2.178-2.19c0-1.204.969-2.189 2.178-2.189a2.19 2.19 0 010 4.379zm1.198-.887c-.577-1.062-.544-1.007-.577-1.05.261-.154.425-.46.425-.81 0-.57-.327-.931-1.1-.931h-.861a.132.132 0 00-.13.131v2.715c0 .077.054.131.13.131h.425a.133.133 0 00.131-.131v-.909h.348l.512.975c.022.043.076.065.12.065h.457c.109 0 .164-.098.12-.186zm-1.198-1.478h-.359v-.7h.294c.348 0 .424.131.424.35 0 .23-.13.35-.359.35z"></path>
19
+ </g>
20
+ </svg>
package/README.md CHANGED
@@ -1,64 +1,81 @@
1
1
  # Convert MCP Server
2
2
 
3
- Connect your Convert optimization data directly to Claude Desktop, Cursor, or any Model Context Protocol-compatible AI assistant. No middleware, no complex setupβ€”just plug and play.
3
+ [![npm](https://img.shields.io/npm/v/@convertcom/mcp-server.svg)](https://www.npmjs.com/package/@convertcom/mcp-server)
4
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)
5
+ [![Node.js](https://img.shields.io/badge/Node.js-20%2B-green.svg)](https://nodejs.org/)
6
+ [![MCP](https://img.shields.io/badge/MCP-Protocol-purple.svg)](https://modelcontextprotocol.io)
4
7
 
5
- **What is MCP?**
6
-
7
- MCP (Model Context Protocol) is an emerging standard that allows AI models to interact with applications through a consistent interface. It acts as an abstraction layer, letting AI agents access your Convert data without needing to understand specific API protocols.
8
+ **Connect Claude, Cursor, and other AI assistants to your Convert account**
8
9
 
9
10
  ---
10
11
 
11
- ## πŸš€ Quick Start
12
+ ## 🌟 Overview
12
13
 
13
- ### Prerequisites
14
+ The Convert MCP server lets AI assistants explore your Convert account without custom integrations. Once connected, the assistant can answer questions, surface insights, and (if you permit) manage entities such as experiences, audiences, and goals.
15
+
16
+ **What is MCP?**
14
17
 
15
- **Get your Convert API credentials:**
18
+ MCP (Model Context Protocol) is an open standard that allows AI models to interact with applications through a consistent interface. It acts as a bridge, letting AI assistants access your Convert data without needing to understand specific API protocols.
16
19
 
17
- - Log into your Convert account
18
- - Go to Settings β†’ Integrations β†’ API
19
- - Generate or copy your Application ID and Secret Key
20
- - _Consider starting with read-only access (`TOOLS_FOR_CLIENT=reporting` or `TOOLS_FOR_CLIENT=readOnly` mod - see below)_
20
+ **Key Benefits:**
21
+ - πŸ”Œ **Zero-config integration** – Works with Claude Desktop, Cursor, and any MCP-compatible client
22
+ - πŸ” **Full API access** – Comprehensive coverage of Convert's [REST API v2](https://api.convert.com/doc/v2.0.0/)
23
+ - πŸ“š **Built-in knowledge** – 5,279+ indexed chunks from Convert support documentation
24
+ - πŸ›‘οΈ **Configurable permissions** – Three access levels from reporting-only to full read/write
25
+ - 🧩 **Namespaced tools** – Clean interface with 13 namespaces instead of 96+ individual tools
21
26
 
22
- ### Installation & Setup
27
+ ---
23
28
 
24
- #### Option 1: NPX (Recommended)
29
+ ## πŸ“š Table of Contents
25
30
 
26
- ```bash
27
- # No installation needed - run directly
28
- npx @convertcom/mcp-server
29
- ```
31
+ - [πŸš€ Quick Start](#-quick-start)
32
+ - [πŸ”— Client Integration](#-client-integration)
33
+ - [πŸ›  What You Can Do](#-what-you-can-do)
34
+ - [πŸ“Š Example Prompts](#-example-prompts)
35
+ - [πŸ” Security](#-security)
36
+ - [❓ Troubleshooting](#-troubleshooting)
30
37
 
31
- #### Option 2: Global Installation
38
+ ---
32
39
 
33
- ```bash
34
- # Install globally
35
- npm install -g @convertcom/mcp-server
40
+ ## πŸš€ Quick Start
36
41
 
37
- # Run the server
38
- mcp-server-convert
39
- ```
42
+ ### What you need
43
+
44
+ 1. **Convert API credentials** – In Convert, go to **Settings β†’ Integrations β†’ API** and copy your Application ID and Secret Key.
45
+ 2. **Node.js 20+** – Only required if you run the server from source.
46
+ 3. **Access level** – Set `TOOLS_FOR_CLIENT` to control what the assistant can do:
47
+ - `reporting` (default) – basic analytics and read-only summaries
48
+ - `readOnly` – detailed configuration data without modifying anything
49
+ - `all` – read/write access (only use when you explicitly want the assistant to make changes)
40
50
 
41
51
  ---
42
52
 
43
- ## πŸ”§ Client Configuration
53
+ ## πŸ”— Client Integration
54
+
55
+ The server implements the [Model Context Protocol](https://modelcontextprotocol.io) and works with Claude Desktop, Cursor, and any MCP-compatible client.
56
+
57
+ ### Recommended Models
44
58
 
45
- ### Claude Desktop
59
+ For the best experience, use models with strong agentic capabilities:
60
+ - **Claude Sonnet 4.5** or newer
61
+ - **GPT-5** or newer
62
+ - Other frontier models with multi-step reasoning abilities
46
63
 
47
- 1. **Download Claude Desktop** from [claude.ai](https://claude.ai/download)
64
+ **Enable extended thinking** – Extended thinking is a special reasoning mode that significantly improves MCP tool calling, multi-step workflows, and complex API interactions. Enable it in your client settings if available.
48
65
 
49
- 2. **Add server configuration** to your Claude Desktop config file:
50
- - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
51
- - **Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
66
+ ### Configuration
67
+
68
+ Add this configuration to your MCP settings file:
52
69
 
53
70
  ```json
54
71
  {
55
72
  "mcpServers": {
56
73
  "convert": {
57
74
  "command": "npx",
58
- "args": ["-y", "@convertcom/mcp-server"],
75
+ "args": ["-y", "@convertcom/mcp-server@latest"],
59
76
  "env": {
60
- "CONVERT_API_KEY": "your_convert_application_id",
61
- "CONVERT_API_SECRET": "your_convert_secret_key",
77
+ "CONVERT_API_KEY": "your_application_id",
78
+ "CONVERT_API_SECRET": "your_secret_key",
62
79
  "TOOLS_FOR_CLIENT": "reporting"
63
80
  }
64
81
  }
@@ -66,45 +83,66 @@ mcp-server-convert
66
83
  }
67
84
  ```
68
85
 
69
- 1. **Save the file and restart Claude Desktop**. You should now see Convert tools available!
86
+ **Configuration file locations:**
87
+ - **Claude Desktop**: `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows)
88
+ - **Cursor**: `.cursor/mcp.json` in your project directory
89
+ - **Other clients**: Refer to your client's documentation for MCP server configuration
70
90
 
71
- 2. **Visit the [troubleshooting section](#-troubleshooting)** if you encounter any issues.
91
+ Save the file and restart your client to activate the Convert tools.
72
92
 
73
- ### Cursor
93
+ ### Environment Variables
74
94
 
75
- 1. **Create a `.cursor/mcp.json` file** in your project:
95
+ | Variable | Required | Description | Default |
96
+ | -------------------- | -------- | ----------------------------------------------- | ----------- |
97
+ | `CONVERT_API_KEY` | βœ… | Your Convert **Application ID** | - |
98
+ | `CONVERT_API_SECRET` | βœ… | Your Convert **Secret Key** | - |
99
+ | `TOOLS_FOR_CLIENT` | | Access level: `reporting`, `readOnly`, or `all` | `reporting` |
76
100
 
77
- ```bash
78
- mkdir -p .cursor && touch .cursor/mcp.json
79
- ```
101
+ ---
80
102
 
81
- 2. **Add the following configuration**:
103
+ ## πŸ›  What You Can Do
82
104
 
83
- ```json
84
- {
85
- "mcpServers": {
86
- "convert": {
87
- "command": "npx",
88
- "args": ["-y", "@convertcom/mcp-server"],
89
- "env": {
90
- "CONVERT_API_KEY": "your_convert_application_id",
91
- "CONVERT_API_SECRET": "your_convert_secret_key",
92
- "TOOLS_FOR_CLIENT": "reporting"
93
- }
94
- }
95
- }
96
- }
97
- ```
105
+ Once connected, your AI assistant can:
106
+
107
+ - πŸ“Š **View experiment performance** – Get real-time stats on your A/B tests and experiences
108
+ - 🎯 **Analyze goals and conversions** – See which goals are tracking and how they're performing
109
+ - πŸ‘₯ **Explore audience segments** – Understand your targeting rules and segmentation
110
+ - πŸ” **Search Convert documentation** – The assistant has instant access to Convert's full support library
111
+ - πŸ“ˆ **Access account analytics** – Review live data, history, and visitor tracking
112
+ - βš™οΈ **Manage experiments** – Create, update, or pause experiences *(requires `TOOLS_FOR_CLIENT=all`)*
113
+
114
+ The assistant doesn't need to know technical detailsβ€”just ask questions in plain English.
98
115
 
99
- 3. **Save the file and restart Cursor**. Convert tools will now be available!
116
+ <details>
117
+ <summary><b>13 Available Namespaces</b></summary>
118
+
119
+ | Namespace | Reporting & readOnly actions | Extra actions in `all` |
120
+ | --- | --- | --- |
121
+ | `accounts` | list, get, get_live_data, get_history, list_users_accesses, list_api_keys, list_sdk_keys | create_sdk_key |
122
+ | `projects` | list, get, get_live_data, get_history | create, update |
123
+ | `domains` | list, get, get_by_url, check_code | create, update, delete |
124
+ | `experiences` | list, get, get_by_key, get_live_data, get_history, aggregated_report, daily_report, daily_traffic_allocation, get_variation_screenshot, get_change | create, clone, update, update_variation, upload_variation_screenshot, convert_variation, update_change |
125
+ | `sections` | list | create, update, update_experience_sections, add_version, update_version |
126
+ | `goals` | list, get, get_by_key | create, update, delete, clone |
127
+ | `tags` | list, get | create, update, delete |
128
+ | `hypotheses` | list, get | create, update, update_status, convert, delete |
129
+ | `knowledgebases` | list, get | create, update, delete |
130
+ | `observations` | list, get | create, update, delete |
131
+ | `locations` | list, get, presets | create, update, delete, clone |
132
+ | `audiences` | list, get, presets | create, update, delete, clone |
133
+ | `features` | list, get, get_by_key | create, update, delete |
134
+
135
+ </details>
136
+
137
+ **Access Control**: With `TOOLS_FOR_CLIENT=all`, additional write actions (create/update/delete) become available. Keep permissions as narrow as possible and escalate only when necessary.
100
138
 
101
139
  ---
102
140
 
103
- ## πŸ’¬ Example Usage
141
+ ## πŸ“Š Example Prompts
104
142
 
105
- Once set up, try these example prompts with your AI assistant:
143
+ Once set up, try these prompts with your AI assistant:
106
144
 
107
- ### Get Insights from Your Convert Data
145
+ ### Get Insights from Your Data
108
146
 
109
147
  ```
110
148
  Show me the performance of all active experiments in my account
@@ -132,170 +170,65 @@ Compare the performance of mobile vs desktop experiments this month
132
170
  Show me which audience segments are performing best across all active tests
133
171
  ```
134
172
 
135
- ### Create and Manage Tests (Full Access Mode)
173
+ ### Manage Tests *(Requires `TOOLS_FOR_CLIENT=all`)*
136
174
 
137
175
  ```
138
- Create a new A/B test for the pricing page targeting returning visitors with a 70/30 traffic split
176
+ Create a new A/B test for the pricing page targeting returning visitors
139
177
  ```
140
178
 
141
179
  ```
142
- Pause any experiences that have been running for more than 30 days with negative lift
180
+ Update the traffic split on experience 789 to 50/50
143
181
  ```
144
182
 
145
183
  ```
146
- Update the traffic allocation for experiment ID 12345 to 50/50
184
+ Pause any experiences that have been running for more than 30 days with negative lift
147
185
  ```
148
186
 
149
187
  ---
150
188
 
151
- ## βš™οΈ Configuration
189
+ ## πŸ” Security
152
190
 
153
- All configuration is handled through environment variables for maximum compatibility across different MCP clients.
191
+ The server uses your Convert API credentials to authenticate requests. Your credentials are stored only in environment variables and never exposed in code.
154
192
 
155
- | Variable | Required | Description | Default |
156
- | -------------------- | -------- | ----------------------------------------------- | ----------- |
157
- | `CONVERT_API_KEY` | βœ… | Your Convert **Application ID** | - |
158
- | `CONVERT_API_SECRET` | βœ… | Your Convert **Secret Key** | - |
159
- | `TOOLS_FOR_CLIENT` | | Access level: `reporting`, `readOnly`, or `all` | `reporting` |
160
-
161
- ### Access Levels
162
-
163
- Choose the appropriate access level based on your needs:
164
-
165
- #### πŸ” `reporting` (Default - Recommended)
166
-
167
- **Perfect for analytics and insights**
168
-
169
- - Account data and project information
170
- - Real-time experiment tracking and performance reports
171
- - Goals, audiences, and conversion analytics
172
- - Live visitor data and traffic allocation
173
-
174
- #### πŸ“– `readOnly`
175
-
176
- **All reporting tools plus detailed configuration access**
177
-
178
- - Everything in `reporting` mode
179
- - Detailed project and experience configurations
180
- - Historical data and change logs
181
- - Advanced analytics and forecasting data
182
-
183
- #### πŸ”§ `all` (Use with caution)
184
-
185
- **Complete access including write operations**
186
-
187
- - Everything in `readOnly` mode
188
- - Create, edit, and delete experiments
189
- - Manage audiences, goals, and project settings
190
- - Full account administration capabilities
191
-
192
- > **⚠️ Security Note**: Start with `reporting` mode and only escalate permissions as needed. The `all` access level can modify your Convert account.
193
-
194
- ---
195
-
196
- ## πŸ› οΈ Available Tools
197
-
198
- The server provides **100+ tools** covering the complete Convert REST API v2. Here's a quick overview:
199
-
200
- ### Core Analytics Tools (All Access Levels)
201
-
202
- | Category | Tools | Description |
203
- | ----------------------- | ---------------------------------------------------------------------- | ---------------------------------------- |
204
- | **Account Management** | `getaccountslist`, `getaccountlivedata` | Account overview and real-time tracking |
205
- | **Project Operations** | `getprojectslist`, `getproject`, `getprojectlivedata` | Project configuration and live data |
206
- | **Experience Tracking** | `getexperienceslist`, `getexperience`, `getexperienceaggregatedreport` | A/B test performance and analytics |
207
- | **Goal Analytics** | `getgoal`, `getgoalbykey` | Conversion goal tracking and performance |
208
- | **Audience Insights** | `getaudienceslist`, `getaudience` | Audience segment analysis |
209
- | **Location Targeting** | `getlocationslist`, `getlocation` | URL targeting and location rules |
210
-
211
- ### Advanced Tools (ReadOnly & All Access)
212
-
213
- | Category | Tools | Description |
214
- | ------------------- | ---------------------------------------------------------------- | -------------------------------- |
215
- | **Historical Data** | `getaccounthistory`, `getprojecthistory`, `getexperiencehistory` | Change logs and audit trails |
216
- | **Screenshots** | `getexperiencevariationscreenshot` | Visual variation previews |
217
- | **Knowledge Base** | `getknowledgebaseslist`, `getknowledgebase` | Test insights and learnings |
218
- | **Observations** | `getobservationslist` | Recorded insights and hypotheses |
219
-
220
- ### Management Tools (All Access Only)
221
-
222
- | Category | Tools | Description |
223
- | -------------------------- | ---------------------------------------------------------- | ------------------------------ |
224
- | **Experience Management** | `createexperience`, `updateexperience`, `deleteexperience` | Full A/B test lifecycle |
225
- | **Goal Management** | `creategoal`, `updategoal`, `deletegoal`, `clonegoal` | Conversion goal administration |
226
- | **Audience Management** | `createaudience`, `updateaudience`, `deleteaudience` | Audience segment management |
227
- | **Project Administration** | `createproject`, `updateproject` | Project-level configuration |
193
+ **Best practices:**
194
+ - Start with `TOOLS_FOR_CLIENT=reporting` and escalate only when needed
195
+ - Keep your API credentials secure and never commit them to version control
228
196
 
229
197
  ---
230
198
 
231
- ## πŸ”’ Security & Authentication
199
+ ## ❓ Troubleshooting
232
200
 
233
- ### API Security
201
+ | Problem | How to fix |
202
+ | ------- | ---------- |
203
+ | Tools not visible after install | Restart the client and confirm the JSON config points to the correct command/env vars. |
204
+ | `401 Unauthorized` | Re-check API key/secret and your account permissions. |
205
+ | Requests blocked or failing | Use a smart model like Claude Sonnet 4.5, GPT-5, or newer with strong agentic capabilities. Enable extended thinking if available. The model needs to handle multi-step API workflows and parse response alerts. |
206
+ | Keyword search feels off | Refine the query with specific terms (product codes, URLs, field names). |
234
207
 
235
- - **HMAC-SHA256 signing**: Every request is cryptographically signed
236
- - **Automatic expiration**: Requests expire after 60 seconds
237
- - **No credential exposure**: API keys never leave your local environment
208
+ Need more help? Visit the [Convert Help Center](https://support.convert.com/).
238
209
 
239
210
  ---
240
211
 
241
- ## πŸ”§ Troubleshooting
242
-
243
- ### Common Issues
212
+ ## πŸ“¦ API Coverage
244
213
 
245
- | Symptom | Likely Cause | Solution |
246
- | ---------------------------- | ----------------------------------- | ----------------------------------------------- |
247
- | `401 Unauthorized` responses | Wrong API credentials or clock skew | Verify credentials, sync system clock |
248
- | "Server not found" in Claude | JSON config syntax error | Check `command` and `args` fields |
249
- | Missing expected tools | `TOOLS_FOR_CLIENT` too restrictive | Switch to `readOnly` or `all` and restart |
250
- | Connection timeouts | Network/firewall issues | Check connectivity to Convert's API endpoints |
251
- | "No data returned" | Empty account or wrong permissions | Verify account has data and API key permissions |
214
+ The server provides comprehensive coverage of Convert's [REST API v2](https://api.convert.com/doc/v2.0.0/):
252
215
 
253
- ### Getting Help
254
-
255
- 1. **Check the logs**: Development mode provides detailed error information
256
- 2. **Verify credentials**: Ensure your API key and secret are correct and have proper permissions
257
- 3. **Test connectivity**: Confirm you can reach Convert's API endpoints
258
- 4. **Review permissions**: Make sure your Convert account has access to the data you're requesting
216
+ - **Account Operations**: User management, billing, and settings
217
+ - **Project Management**: Configuration, domains, and collaborators
218
+ - **Experience Control**: A/B tests, MVT, Split URL, and deployments
219
+ - **Analytics & Reporting**: Real-time data, conversion tracking, and statistical analysis
220
+ - **Goal Tracking**: Conversion goals, revenue tracking, and custom events
221
+ - **Audience Management**: Segmentation rules and targeting
222
+ - **Feature Flags**: Feature management and rollout control
259
223
 
260
224
  ---
261
225
 
262
- ## πŸ“Š What You Can Do
263
-
264
- ### Real-time Analytics
226
+ <div align="center">
265
227
 
266
- - Monitor live experiment performance
267
- - Track visitor behavior and conversions
268
- - Analyze traffic allocation and statistical significance
269
- - Get instant insights on goal performance
228
+ **Made with ❀️ by the Convert Team**
270
229
 
271
- ### Experiment Management
230
+ Β© 2025 Convert Insights, Inc. Built for the automation-minded optimizer.
272
231
 
273
- - Create and configure A/B tests
274
- - Set up multivariate experiments
275
- - Manage audience targeting and segmentation
276
- - Control traffic allocation and experiment lifecycle
277
-
278
- ### Data-Driven Insights
279
-
280
- - Historical performance analysis
281
- - Conversion funnel optimization
282
- - Audience behavior patterns
283
- - ROI and revenue impact assessment
284
-
285
- ### AI-Powered Optimization
286
-
287
- - Let AI analyze your experiment data
288
- - Get recommendations for test improvements
289
- - Automate routine optimization tasks
290
- - Generate insights from complex data patterns
291
-
292
- ---
293
-
294
- ## πŸ†˜ Support
295
-
296
- - **Documentation**: [Convert API Documentation](https://api.convert.com/doc/)
297
- - **Convert Support**: [Convert Help Center](https://support.convert.com/)
298
-
299
- ---
232
+ [Website](https://www.convert.com) β€’ [Documentation](https://support.convert.com/) β€’ [API Reference](https://api.convert.com/doc/)
300
233
 
301
- _Β© 2025 Convert Insights, Inc. β€’ Built with ❀️ for the optimization community_
234
+ </div>
@@ -17,6 +17,7 @@ axios.interceptors.request.use((config) => {
17
17
  let applicationID = process.env.CONVERT_API_KEY;
18
18
  let applicationSecretKey = process.env.CONVERT_API_SECRET;
19
19
  let expires = 60; // In seconds. Request lifetime. If your requests take much time, try to increase this value
20
+ // URL already includes query string from executor.ts - use it directly for signing
20
21
  let requestURL = config.url;
21
22
  // It's already stringified in raw body in Postman but make sure it stringified correctly without whitespaces etc
22
23
  let requestBody = config.data ? JSON.stringify(config.data) : '{}';
@@ -25,10 +26,6 @@ axios.interceptors.request.use((config) => {
25
26
  let signString = applicationID + '\n' + expiresTimestamp + '\n' + requestURL + '\n' + requestBody;
26
27
  let hash = crypto.createHmac('sha256', applicationSecretKey).update(signString).digest('hex');
27
28
  let authorization = 'Convert-HMAC-SHA256 Signature=' + hash;
28
- // console.warn('Debug data:', data); // Or console.warn
29
- // console.warn(`Debug RequestBody: ${requestBody}`);
30
- // console.warn(`Debug SigningString: ${signString}`);
31
- // console.warn(`Debug Api Secret: ${applicationSecretKey ? 'SET' : 'NOT SET'}`); // Avoid logging secrets
32
29
  config.headers['Convert-Application-ID'] = applicationID;
33
30
  config.headers['Expires'] = expiresTimestamp;
34
31
  config.headers['Authorization'] = authorization;
@@ -1 +1 @@
1
- {"version":3,"file":"api-config.js","sourceRoot":"","sources":["../src/api-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;AACjE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;AAChE,kEAAkE;AAClE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG;IAChC,UAAU,IAAS,EAAE,OAAY;QAC/B,6BAA6B;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,gEAAgE;AAChE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC5B,CAAC,MAAM,EAAE,EAAE;IACT,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAChD,IAAI,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAA4B,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,4FAA4F;IAC9G,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;IAE5B,iHAAiH;IACjH,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,yEAAyE;IACzE,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC;IAEnD,IAAI,UAAU,GACZ,aAAa,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;IAEnF,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9F,IAAI,aAAa,GAAG,gCAAgC,GAAG,IAAI,CAAC;IAE5D,wDAAwD;IACxD,qDAAqD;IACrD,sDAAsD;IACtD,0GAA0G;IAE1G,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,aAAa,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;IAEhD,mDAAmD;IAEnD,OAAO,MAAM,CAAC;AAChB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"api-config.js","sourceRoot":"","sources":["../src/api-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;AACjE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;AAChE,kEAAkE;AAClE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG;IAChC,UAAU,IAAS,EAAE,OAAY;QAC/B,6BAA6B;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,gEAAgE;AAChE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAC5B,CAAC,MAAM,EAAE,EAAE;IACT,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAChD,IAAI,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAA4B,CAAC;IACpE,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,4FAA4F;IAE9G,mFAAmF;IACnF,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;IAE5B,iHAAiH;IACjH,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,yEAAyE;IACzE,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC;IAEnD,IAAI,UAAU,GACZ,aAAa,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;IAEnF,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9F,IAAI,aAAa,GAAG,gCAAgC,GAAG,IAAI,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,aAAa,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;IAEhD,mDAAmD;IAEnD,OAAO,MAAM,CAAC;AAChB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class DebugLogger {
2
+ private readonly filePath;
3
+ private readonly enabled;
4
+ constructor(enabled: boolean);
5
+ log(message: string, payload?: unknown): void;
6
+ }
@@ -0,0 +1,46 @@
1
+ import { appendFileSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ export class DebugLogger {
5
+ filePath;
6
+ enabled;
7
+ constructor(enabled) {
8
+ this.enabled = enabled;
9
+ if (!enabled) {
10
+ this.filePath = null;
11
+ return;
12
+ }
13
+ try {
14
+ const baseDir = join(homedir(), '.convert');
15
+ mkdirSync(baseDir, { recursive: true });
16
+ this.filePath = join(baseDir, 'convert-mcp-debug.log');
17
+ writeFileSync(this.filePath, '', { encoding: 'utf8' });
18
+ }
19
+ catch (error) {
20
+ console.error('[DebugLogger] Failed to initialise debug log file:', error);
21
+ this.filePath = null;
22
+ }
23
+ }
24
+ log(message, payload) {
25
+ if (!this.enabled || !this.filePath) {
26
+ return;
27
+ }
28
+ try {
29
+ const time = new Date().toISOString();
30
+ const serialized = payload === undefined ? '' : `\n${safeSerialize(payload)}\n`;
31
+ appendFileSync(this.filePath, `[${time}] ${message}${serialized}\n`, { encoding: 'utf8' });
32
+ }
33
+ catch (error) {
34
+ console.error('[DebugLogger] Failed to write debug entry:', error);
35
+ }
36
+ }
37
+ }
38
+ function safeSerialize(value) {
39
+ try {
40
+ return JSON.stringify(value, null, 2);
41
+ }
42
+ catch (error) {
43
+ return `<<unserializable: ${String(error)}>>`;
44
+ }
45
+ }
46
+ //# sourceMappingURL=debug-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-log.js","sourceRoot":"","sources":["../src/debug-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,OAAO,WAAW;IACL,QAAQ,CAAgB;IACxB,OAAO,CAAU;IAElC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;YAC5C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YACvD,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,OAAiB;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;YAChF,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,OAAO,GAAG,UAAU,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,qBAAqB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import './api-config.js';
3
+ type JsonObject = Record<string, any>;
4
+ export declare function executeToolByName(toolName: string, toolArgs: JsonObject): Promise<CallToolResult>;
5
+ export {};