@jtalk22/slack-mcp 3.2.5 → 4.1.0
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.
- package/README.md +165 -57
- package/docs/SETUP.md +2 -34
- package/docs/TROUBLESHOOTING.md +2 -24
- package/lib/handlers.js +1 -1
- package/lib/public-metadata.js +0 -65
- package/lib/public-pages.js +35 -75
- package/lib/token-store.js +180 -69
- package/package.json +11 -7
- package/public/index.html +1 -1
- package/public/share.html +9 -18
- package/scripts/setup-wizard.js +74 -25
- package/server.json +3 -3
- package/src/server.js +1 -1
- package/src/web-server.js +18 -13
package/README.md
CHANGED
|
@@ -1,24 +1,113 @@
|
|
|
1
1
|
# Slack MCP Server
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@jtalk22/slack-mcp)
|
|
4
|
-
[](https://www.npmjs.com/package/@jtalk22/slack-mcp)
|
|
5
4
|
[](https://registry.modelcontextprotocol.io)
|
|
6
5
|
[](https://opensource.org/licenses/MIT)
|
|
7
6
|
|
|
8
|
-
Give
|
|
9
|
-
|
|
10
|
-
## Verify & Proof
|
|
7
|
+
Give your AI agent full Slack access. No app registration, no admin approval, no OAuth. One command, 16 tools, works with any MCP client.
|
|
11
8
|
|
|
12
9
|
```bash
|
|
13
10
|
npx -y @jtalk22/slack-mcp --setup
|
|
14
|
-
npx -y @jtalk22/slack-mcp@latest --version
|
|
15
|
-
npx -y @jtalk22/slack-mcp@latest --doctor
|
|
16
|
-
npx -y @jtalk22/slack-mcp@latest --status
|
|
17
11
|
```
|
|
18
12
|
|
|
19
|
-
[
|
|
13
|
+
[](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)
|
|
14
|
+
|
|
15
|
+
**[▶ Watch the demo](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)** — 7 scenarios, from 47 unreads to inbox zero, without opening Slack.
|
|
16
|
+
|
|
17
|
+
> **Ask your AI to catch you up on #engineering from the last 24 hours.** Search for that deployment thread from last week. Find the printer admin PIN nobody can remember. Send a reply. All from your editor.
|
|
18
|
+
|
|
19
|
+
[Interactive demo](https://jtalk22.github.io/slack-mcp-server/public/demo-slack-mcp.html) · [Latest release](https://github.com/jtalk22/slack-mcp-server/releases/latest)
|
|
20
|
+
|
|
21
|
+
## Why This Exists
|
|
22
|
+
|
|
23
|
+
Slack's official MCP server requires a registered app, admin approval, and [doesn't work with Claude Code or GitHub Copilot](https://github.com/anthropics/claude-code/issues/30564) due to OAuth/DCR incompatibility. Screenshotting messages is not a workflow.
|
|
24
|
+
|
|
25
|
+
This server uses your browser's session tokens instead. If you can see it in Slack, your AI agent can see it too. No app install, no scopes, no admin.
|
|
26
|
+
|
|
27
|
+
**Stealth Mode:** Session tokens leave zero footprint in your workspace admin panel. No bot user appears, no app install shows up, no audit trail. Your AI agent operates with the same invisibility as your browser tab.
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
| | Slack Official MCP | This Server |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| OAuth app required | Yes | **No** |
|
|
34
|
+
| Admin approval | Yes | **No** |
|
|
35
|
+
| Works with Claude Code | No (DCR incompatible) | **Yes** |
|
|
36
|
+
| Works with Cursor | No | **Yes** |
|
|
37
|
+
| Works with Copilot | No | **Yes** |
|
|
38
|
+
| Works with Windsurf | No | **Yes** |
|
|
39
|
+
| Works with Gemini CLI | No | **Yes** |
|
|
40
|
+
| Works with Codex CLI | No | **Yes** |
|
|
41
|
+
| Setup time | ~30 min | **~2 min** |
|
|
42
|
+
| Tools | Limited | **16** |
|
|
43
|
+
| Visible to admins | Yes | **No — Stealth Mode** |
|
|
44
|
+
|
|
45
|
+
## Quick Start per Client
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary><strong>Claude Desktop / Claude Code</strong></summary>
|
|
49
|
+
|
|
50
|
+
Add to `~/.claude.json` or Claude Desktop settings:
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"mcpServers": {
|
|
54
|
+
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
</details>
|
|
59
|
+
|
|
60
|
+
<details>
|
|
61
|
+
<summary><strong>Cursor</strong></summary>
|
|
62
|
+
|
|
63
|
+
Add to `.cursor/mcp.json`:
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"mcpServers": {
|
|
67
|
+
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
</details>
|
|
72
|
+
|
|
73
|
+
<details>
|
|
74
|
+
<summary><strong>Windsurf</strong></summary>
|
|
75
|
+
|
|
76
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"mcpServers": {
|
|
80
|
+
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
</details>
|
|
20
85
|
|
|
21
|
-
|
|
86
|
+
<details>
|
|
87
|
+
<summary><strong>Gemini CLI</strong></summary>
|
|
88
|
+
|
|
89
|
+
Add to `~/.gemini/settings.json`:
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"slack": { "command": "npx", "args": ["-y", "@jtalk22/slack-mcp"] }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
</details>
|
|
98
|
+
|
|
99
|
+
<details>
|
|
100
|
+
<summary><strong>Codex CLI</strong></summary>
|
|
101
|
+
|
|
102
|
+
Add to `~/.codex/config.toml`:
|
|
103
|
+
```toml
|
|
104
|
+
[mcp_servers.slack]
|
|
105
|
+
command = "npx"
|
|
106
|
+
args = ["-y", "@jtalk22/slack-mcp"]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Or via CLI: `codex mcp add slack -- npx -y @jtalk22/slack-mcp`
|
|
110
|
+
</details>
|
|
22
111
|
|
|
23
112
|
## Tools
|
|
24
113
|
|
|
@@ -41,44 +130,19 @@ npx -y @jtalk22/slack-mcp@latest --status
|
|
|
41
130
|
| `slack_remove_reaction` | Remove an emoji reaction from a message | **destructive** |
|
|
42
131
|
| `slack_conversations_mark` | Mark a conversation as read | **destructive** |
|
|
43
132
|
|
|
44
|
-
All
|
|
45
|
-
|
|
46
|
-
\* `slack_refresh_tokens` modifies local token file only — no external Slack state.
|
|
47
|
-
|
|
48
|
-
## Cloud
|
|
49
|
-
|
|
50
|
-
Slack MCP Cloud provides 15 managed tools with hosted credential handling. Team adds 3 AI compound workflows for summaries, action items, and decisions. Claude is the primary path; Gemini CLI is the second supported client path on the hosted endpoint.
|
|
51
|
-
|
|
52
|
-
- Self-host if you want 16 tools, npm or Docker, and full operator control over runtime and tokens.
|
|
53
|
-
- Use Cloud if you want one remote endpoint, hosted credential handling, deployment review, buyer-facing security review, support, and a hosted account surface.
|
|
54
|
-
- Solo starts at `$19/mo`; Team is `$49/mo` and adds 3 AI workflows plus higher request capacity.
|
|
55
|
-
- Turnkey Team Launch starts at `$2.5k+`; Managed Reliability starts at `$800/mo+` for teams where rollout and operational continuity matter more than raw seat count.
|
|
56
|
-
|
|
57
|
-
| Plan | Price | Includes |
|
|
58
|
-
|------|-------|----------|
|
|
59
|
-
| Solo | $19/mo | 15 standard tools, AES-256-GCM encrypted storage, 5K requests/mo |
|
|
60
|
-
| Team | $49/mo | 15 standard + 3 AI compound tools, 3 workspaces, 25K requests/mo |
|
|
61
|
-
| Turnkey Team Launch | $2.5k+ | Deployment review, rollout sequencing, client setup guidance, first-production-use path |
|
|
62
|
-
| Managed Reliability | $800/mo+ | Ongoing operating review, token-health follow-up, workflow continuity support |
|
|
133
|
+
12 read-only, 4 write-path. All carry [MCP safety annotations](https://modelcontextprotocol.io/specification/2025-03-26/server/tools#annotations).
|
|
63
134
|
|
|
64
|
-
|
|
135
|
+
\* `slack_refresh_tokens` modifies local token file only.
|
|
65
136
|
|
|
66
|
-
|
|
137
|
+
## Install
|
|
67
138
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## Install & Verify (Self-Hosted)
|
|
71
|
-
|
|
72
|
-
**Runtime:** Node.js 20+
|
|
139
|
+
**Node.js 20+**
|
|
73
140
|
|
|
74
141
|
```bash
|
|
75
142
|
npx -y @jtalk22/slack-mcp --setup
|
|
76
|
-
npx -y @jtalk22/slack-mcp@latest --version
|
|
77
|
-
npx -y @jtalk22/slack-mcp@latest --doctor
|
|
78
|
-
npx -y @jtalk22/slack-mcp@latest --status
|
|
79
143
|
```
|
|
80
144
|
|
|
81
|
-
The setup wizard handles token extraction and validation
|
|
145
|
+
The setup wizard handles token extraction and validation.
|
|
82
146
|
|
|
83
147
|
<details>
|
|
84
148
|
<summary><strong>Claude Desktop (macOS)</strong></summary>
|
|
@@ -123,7 +187,7 @@ Edit `%APPDATA%\Claude\claude_desktop_config.json`:
|
|
|
123
187
|
</details>
|
|
124
188
|
|
|
125
189
|
<details>
|
|
126
|
-
<summary><strong>Claude Code
|
|
190
|
+
<summary><strong>Claude Code</strong></summary>
|
|
127
191
|
|
|
128
192
|
Add to `~/.claude.json`:
|
|
129
193
|
|
|
@@ -141,6 +205,35 @@ Add to `~/.claude.json`:
|
|
|
141
205
|
|
|
142
206
|
</details>
|
|
143
207
|
|
|
208
|
+
<details>
|
|
209
|
+
<summary><strong>Cursor / Copilot / Other MCP clients</strong></summary>
|
|
210
|
+
|
|
211
|
+
Any client that supports stdio MCP servers works. Add to your client's MCP config:
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"slack": {
|
|
216
|
+
"command": "npx",
|
|
217
|
+
"args": ["-y", "@jtalk22/slack-mcp"],
|
|
218
|
+
"env": {
|
|
219
|
+
"SLACK_TOKEN": "xoxc-your-token",
|
|
220
|
+
"SLACK_COOKIE": "xoxd-your-cookie"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
On macOS, tokens are auto-extracted from Chrome — `env` block is optional.
|
|
227
|
+
|
|
228
|
+
</details>
|
|
229
|
+
|
|
230
|
+
<details>
|
|
231
|
+
<summary><strong>Claude Web / Remote MCP</strong></summary>
|
|
232
|
+
|
|
233
|
+
Hosted version with permanent OAuth tokens coming soon. See [mcp.revasserlabs.com](https://mcp.revasserlabs.com) for updates.
|
|
234
|
+
|
|
235
|
+
</details>
|
|
236
|
+
|
|
144
237
|
<details>
|
|
145
238
|
<summary><strong>Docker</strong></summary>
|
|
146
239
|
|
|
@@ -163,7 +256,19 @@ docker pull ghcr.io/jtalk22/slack-mcp-server:latest
|
|
|
163
256
|
|
|
164
257
|
</details>
|
|
165
258
|
|
|
166
|
-
Restart
|
|
259
|
+
Restart your client after configuration. Full setup: [docs/SETUP.md](docs/SETUP.md)
|
|
260
|
+
|
|
261
|
+
## How It Works
|
|
262
|
+
|
|
263
|
+
Session tokens (`xoxc-` + `xoxd-`) from your browser. If you can see it in Slack, this server can see it too.
|
|
264
|
+
|
|
265
|
+
**Token persistence** — four-layer fallback:
|
|
266
|
+
1. Environment variables (`SLACK_TOKEN`, `SLACK_COOKIE`)
|
|
267
|
+
2. Token file (`~/.slack-mcp-tokens.json`, chmod 600)
|
|
268
|
+
3. macOS Keychain (encrypted)
|
|
269
|
+
4. Chrome auto-extraction (macOS)
|
|
270
|
+
|
|
271
|
+
Tokens expire. The server notices before you do — proactive health monitoring, automatic refresh on macOS, warnings when tokens age out. File writes are atomic (temp file → chmod → rename) to prevent corruption. Concurrent refresh attempts are mutex-locked.
|
|
167
272
|
|
|
168
273
|
## Hosted HTTP Mode
|
|
169
274
|
|
|
@@ -181,32 +286,31 @@ Details: [docs/DEPLOYMENT-MODES.md](docs/DEPLOYMENT-MODES.md)
|
|
|
181
286
|
|
|
182
287
|
## Troubleshooting
|
|
183
288
|
|
|
184
|
-
**Tokens expired:** Run `npx -y @jtalk22/slack-mcp --setup` or use `slack_refresh_tokens`
|
|
289
|
+
**Tokens expired:** Run `npx -y @jtalk22/slack-mcp --setup` or use `slack_refresh_tokens` (macOS).
|
|
185
290
|
|
|
186
|
-
**DMs not showing:** Use `slack_list_conversations` with `discover_dms=true
|
|
291
|
+
**DMs not showing:** Use `slack_list_conversations` with `discover_dms=true`.
|
|
187
292
|
|
|
188
|
-
**
|
|
293
|
+
**Client not seeing tools:** Check JSON syntax in config, restart client fully.
|
|
189
294
|
|
|
190
295
|
More: [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)
|
|
191
296
|
|
|
192
297
|
## Docs
|
|
193
298
|
|
|
194
|
-
- [Setup Guide](docs/SETUP.md)
|
|
195
|
-
- [API Reference](docs/API.md)
|
|
196
|
-
- [
|
|
197
|
-
- [
|
|
198
|
-
- [
|
|
199
|
-
- [
|
|
200
|
-
- [
|
|
201
|
-
- [Docs Index](docs/INDEX.md) — Full documentation index
|
|
299
|
+
- [Setup Guide](docs/SETUP.md)
|
|
300
|
+
- [API Reference](docs/API.md)
|
|
301
|
+
- [Architecture](docs/ARCHITECTURE.md)
|
|
302
|
+
- [Deployment Modes](docs/DEPLOYMENT-MODES.md)
|
|
303
|
+
- [Use Case Recipes](docs/USE_CASE_RECIPES.md)
|
|
304
|
+
- [Troubleshooting](docs/TROUBLESHOOTING.md)
|
|
305
|
+
- [Compatibility](docs/COMPATIBILITY.md)
|
|
202
306
|
|
|
203
307
|
## Security
|
|
204
308
|
|
|
205
|
-
- Token files
|
|
206
|
-
- macOS Keychain
|
|
309
|
+
- Token files: `chmod 600` (owner-only)
|
|
310
|
+
- macOS Keychain encrypted backup
|
|
207
311
|
- Web server binds to localhost only
|
|
208
|
-
- API keys
|
|
209
|
-
- See [SECURITY.md](SECURITY.md)
|
|
312
|
+
- API keys: `crypto.randomBytes`
|
|
313
|
+
- See [SECURITY.md](SECURITY.md)
|
|
210
314
|
|
|
211
315
|
## Contributing
|
|
212
316
|
|
|
@@ -218,4 +322,8 @@ MIT — See [LICENSE](LICENSE)
|
|
|
218
322
|
|
|
219
323
|
## Disclaimer
|
|
220
324
|
|
|
221
|
-
|
|
325
|
+
Not affiliated with Slack Technologies, Inc. Uses browser session credentials — check your workspace's acceptable use policy.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
Hosted version with semantic search, AI summaries, and permanent OAuth — coming soon at [mcp.revasserlabs.com](https://mcp.revasserlabs.com)
|
package/docs/SETUP.md
CHANGED
|
@@ -1,40 +1,8 @@
|
|
|
1
1
|
# Setup Guide
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Hosted (Coming Soon)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
1. Go to [Slack MCP Cloud](https://mcp.revasserlabs.com) and purchase a plan ($19/mo Solo, $49/mo Team)
|
|
8
|
-
2. After checkout, you'll receive an API key and ready-to-paste config for Claude Desktop / Claude Code
|
|
9
|
-
3. Use the hosted endpoint and API key — one URL, 15 managed tools. Team adds 3 AI workflows.
|
|
10
|
-
|
|
11
|
-
**Claude Desktop config (Cloud):**
|
|
12
|
-
```json
|
|
13
|
-
{
|
|
14
|
-
"mcpServers": {
|
|
15
|
-
"slack": {
|
|
16
|
-
"url": "https://mcp.revasserlabs.com/oauth/mcp"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**Claude Code config (Cloud):**
|
|
23
|
-
```json
|
|
24
|
-
{
|
|
25
|
-
"mcpServers": {
|
|
26
|
-
"slack": {
|
|
27
|
-
"type": "sse",
|
|
28
|
-
"url": "https://mcp.revasserlabs.com/mcp",
|
|
29
|
-
"headers": {
|
|
30
|
-
"Authorization": "Bearer YOUR_API_KEY"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
If you prefer self-hosting, continue below.
|
|
5
|
+
A hosted version with permanent OAuth tokens, semantic search, and AI summaries is in development at [mcp.revasserlabs.com](https://mcp.revasserlabs.com). The current release is self-hosted only — continue below.
|
|
38
6
|
|
|
39
7
|
---
|
|
40
8
|
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -29,31 +29,9 @@ If `--version` fails here, the issue is install/runtime path, not Slack credenti
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Hosted Version
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
**Symptom:** `401 Unauthorized` or `403 Forbidden` when using Cloud endpoint.
|
|
37
|
-
|
|
38
|
-
**Solutions:**
|
|
39
|
-
1. Verify your API key starts with `stmh_` (team) or `smsh_` (solo)
|
|
40
|
-
2. Check the key hasn't been revoked — contact support@revasserlabs.com for key issues
|
|
41
|
-
3. Ensure you're using the correct endpoint: `https://mcp.revasserlabs.com/mcp`
|
|
42
|
-
|
|
43
|
-
### Cloud Tools Not Available
|
|
44
|
-
|
|
45
|
-
**Symptom:** Only seeing fewer tools than expected.
|
|
46
|
-
|
|
47
|
-
**Cause:** AI compound tools (`slack_channel_summary`, `slack_extract_action_items`, `slack_find_decisions`) are Team plan only ($49/mo).
|
|
48
|
-
|
|
49
|
-
**Solution:** Upgrade to Team plan for AI compound tools, or use the 15 standard managed tools available on all Cloud plans.
|
|
50
|
-
|
|
51
|
-
### Cloud Endpoint Health Check
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
curl -s https://mcp.revasserlabs.com/health | jq .
|
|
55
|
-
# Expected: {"status":"healthy","server":"slack-mcp-hosted","version":"0.5.0"}
|
|
56
|
-
```
|
|
34
|
+
A hosted version with permanent OAuth tokens, semantic search, and AI summaries is coming soon at [mcp.revasserlabs.com](https://mcp.revasserlabs.com). The current release is self-hosted only.
|
|
57
35
|
|
|
58
36
|
---
|
|
59
37
|
|
package/lib/handlers.js
CHANGED
|
@@ -216,7 +216,7 @@ export async function handleRefreshTokens() {
|
|
|
216
216
|
code: extractionError.code,
|
|
217
217
|
message: extractionError.message,
|
|
218
218
|
detail: extractionError.detail,
|
|
219
|
-
next_action: "In Chrome: View > Developer > Allow JavaScript from Apple Events, then retry."
|
|
219
|
+
next_action: "In Chrome: View > Developer > Allow JavaScript from Apple Events, then retry. (Only needed for token — cookie is extracted from Chrome's database automatically.)"
|
|
220
220
|
}, true);
|
|
221
221
|
}
|
|
222
222
|
|
package/lib/public-metadata.js
CHANGED
|
@@ -6,14 +6,6 @@ const packageJson = JSON.parse(
|
|
|
6
6
|
|
|
7
7
|
export const RELEASE_VERSION = packageJson.version;
|
|
8
8
|
|
|
9
|
-
function withTrackedUrl(url, medium) {
|
|
10
|
-
const tracked = new URL(url);
|
|
11
|
-
tracked.searchParams.set("utm_source", "github");
|
|
12
|
-
tracked.searchParams.set("utm_medium", medium);
|
|
13
|
-
tracked.searchParams.set("utm_campaign", "slack_mcp_cloud");
|
|
14
|
-
return tracked.toString();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
9
|
export const PUBLIC_METADATA = Object.freeze({
|
|
18
10
|
projectName: "slack-mcp-server",
|
|
19
11
|
packageName: packageJson.name,
|
|
@@ -21,67 +13,10 @@ export const PUBLIC_METADATA = Object.freeze({
|
|
|
21
13
|
canonicalRepoUrl: "https://github.com/jtalk22/slack-mcp-server",
|
|
22
14
|
canonicalSiteUrl: "https://mcp.revasserlabs.com",
|
|
23
15
|
cloudPricingUrl: "https://mcp.revasserlabs.com/pricing",
|
|
24
|
-
cloudWorkflowsUrl: "https://mcp.revasserlabs.com/workflows",
|
|
25
|
-
cloudGeminiCliUrl: "https://mcp.revasserlabs.com/gemini-cli",
|
|
26
|
-
cloudReadinessUrl: "https://mcp.revasserlabs.com/readiness",
|
|
27
16
|
cloudDocsUrl: "https://mcp.revasserlabs.com/docs",
|
|
28
17
|
cloudSecurityUrl: "https://mcp.revasserlabs.com/security",
|
|
29
|
-
cloudProcurementUrl: "https://mcp.revasserlabs.com/procurement",
|
|
30
18
|
cloudSupportUrl: "https://mcp.revasserlabs.com/support",
|
|
31
|
-
cloudDeploymentUrl: "https://mcp.revasserlabs.com/deployment",
|
|
32
|
-
cloudSelfHostUrl: "https://mcp.revasserlabs.com/self-host",
|
|
33
|
-
cloudAccountUrl: "https://mcp.revasserlabs.com/account",
|
|
34
|
-
cloudUseCasesRootUrl: "https://mcp.revasserlabs.com/use-cases",
|
|
35
19
|
cloudStatusUrl: "https://mcp.revasserlabs.com/status",
|
|
36
20
|
supportEmail: "support@revasserlabs.com",
|
|
37
|
-
privacyEmail: "privacy@revasserlabs.com",
|
|
38
|
-
primaryClient: "Claude",
|
|
39
|
-
secondaryClient: "Gemini CLI",
|
|
40
21
|
selfHostedToolCount: 16,
|
|
41
|
-
cloudManagedToolCount: 15,
|
|
42
|
-
teamAiWorkflowCount: 3,
|
|
43
|
-
cloudSoloPrice: "$19/mo",
|
|
44
|
-
cloudTeamPrice: "$49/mo",
|
|
45
|
-
cloudTurnkeyLaunchPrice: "$2.5k+",
|
|
46
|
-
cloudManagedReliabilityPrice: "$800/mo+",
|
|
47
|
-
tracked: Object.freeze({
|
|
48
|
-
pages: Object.freeze({
|
|
49
|
-
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "pages"),
|
|
50
|
-
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "pages"),
|
|
51
|
-
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "pages"),
|
|
52
|
-
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "pages"),
|
|
53
|
-
docs: withTrackedUrl("https://mcp.revasserlabs.com/docs", "pages"),
|
|
54
|
-
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "pages"),
|
|
55
|
-
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "pages"),
|
|
56
|
-
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "pages"),
|
|
57
|
-
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "pages"),
|
|
58
|
-
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "pages"),
|
|
59
|
-
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "pages"),
|
|
60
|
-
}),
|
|
61
|
-
readme: Object.freeze({
|
|
62
|
-
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "readme"),
|
|
63
|
-
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "readme"),
|
|
64
|
-
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "readme"),
|
|
65
|
-
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "readme"),
|
|
66
|
-
docs: withTrackedUrl("https://mcp.revasserlabs.com/docs", "readme"),
|
|
67
|
-
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "readme"),
|
|
68
|
-
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "readme"),
|
|
69
|
-
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "readme"),
|
|
70
|
-
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "readme"),
|
|
71
|
-
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "readme"),
|
|
72
|
-
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "readme"),
|
|
73
|
-
}),
|
|
74
|
-
docs: Object.freeze({
|
|
75
|
-
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "docs"),
|
|
76
|
-
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "docs"),
|
|
77
|
-
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "docs"),
|
|
78
|
-
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "docs"),
|
|
79
|
-
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "docs"),
|
|
80
|
-
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "docs"),
|
|
81
|
-
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "docs"),
|
|
82
|
-
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "docs"),
|
|
83
|
-
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "docs"),
|
|
84
|
-
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "docs"),
|
|
85
|
-
}),
|
|
86
|
-
}),
|
|
87
22
|
});
|