slashvibe-mcp 0.3.18 → 0.3.20

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.
Files changed (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +258 -40
  3. package/config.js +15 -27
  4. package/index.js +153 -78
  5. package/intelligence/index.js +2 -9
  6. package/notify.js +1 -5
  7. package/package.json +16 -20
  8. package/prompts.js +1 -1
  9. package/protocol/index.js +0 -73
  10. package/store/api.js +211 -436
  11. package/store/profiles.js +12 -160
  12. package/store/sqlite.js +347 -0
  13. package/tools/_actions.js +21 -362
  14. package/tools/_discovery.js +26 -119
  15. package/tools/_shared/index.js +0 -64
  16. package/tools/artifact-create.js +3 -14
  17. package/tools/collaborative-drawing.js +1 -1
  18. package/tools/discover.js +34 -350
  19. package/tools/dm.js +8 -80
  20. package/tools/feed.js +4 -35
  21. package/tools/help.js +3 -3
  22. package/tools/idea.js +2 -9
  23. package/tools/inbox.js +105 -289
  24. package/tools/init.js +27 -106
  25. package/tools/invite.js +4 -15
  26. package/tools/migrate.js +3 -3
  27. package/tools/multiplayer-game.js +1 -1
  28. package/tools/onboarding.js +7 -7
  29. package/tools/open.js +12 -143
  30. package/tools/party-game.js +1 -1
  31. package/tools/report.js +1 -1
  32. package/tools/request.js +3 -17
  33. package/tools/settings.js +2 -90
  34. package/tools/ship.js +7 -30
  35. package/tools/start.js +12 -147
  36. package/tools/status.js +6 -53
  37. package/tools/suggest-tags.js +8 -6
  38. package/tools/tag-suggestions.js +1 -1
  39. package/tools/tip.js +77 -150
  40. package/tools/token.js +4 -4
  41. package/tools/update.js +1 -1
  42. package/tools/wallet.js +79 -221
  43. package/tools/who.js +1 -30
  44. package/version.json +8 -10
  45. package/analytics.js +0 -107
  46. package/auth-store.js +0 -148
  47. package/auto-update.js +0 -130
  48. package/bridges/bridge-monitor.js +0 -388
  49. package/bridges/discord-bot.js +0 -431
  50. package/bridges/farcaster.js +0 -299
  51. package/bridges/telegram.js +0 -261
  52. package/bridges/webhook-health.js +0 -420
  53. package/bridges/webhook-server.js +0 -437
  54. package/bridges/whatsapp.js +0 -441
  55. package/bridges/x-webhook.js +0 -423
  56. package/games/arcade.js +0 -406
  57. package/games/chess.js +0 -451
  58. package/games/colorguess.js +0 -343
  59. package/games/crossword-words.js +0 -171
  60. package/games/crossword.js +0 -461
  61. package/games/drawing.js +0 -347
  62. package/games/gameroulette.js +0 -300
  63. package/games/gamerouter.js +0 -336
  64. package/games/gamestatus.js +0 -337
  65. package/games/guessnumber.js +0 -209
  66. package/games/hangman.js +0 -279
  67. package/games/memory.js +0 -338
  68. package/games/multiplayer-tictactoe.js +0 -389
  69. package/games/pixelart.js +0 -399
  70. package/games/quickduel.js +0 -354
  71. package/games/riddle.js +0 -371
  72. package/games/rockpaperscissors.js +0 -291
  73. package/games/snake.js +0 -406
  74. package/games/storybuilder.js +0 -343
  75. package/games/tictactoe.js +0 -345
  76. package/games/twentyquestions.js +0 -286
  77. package/games/twotruths.js +0 -207
  78. package/games/werewolf.js +0 -508
  79. package/games/wordassociation.js +0 -247
  80. package/games/wordchain.js +0 -135
  81. package/intelligence/interests.js +0 -369
  82. package/notification-emitter.js +0 -77
  83. package/setup.js +0 -402
  84. package/tools/_shared.js +0 -234
  85. package/tools/_work-context.js +0 -338
  86. package/tools/_work-context.manual-test.js +0 -199
  87. package/tools/_work-context.test.js +0 -260
  88. package/tools/activity.js +0 -220
  89. package/tools/analytics.js +0 -191
  90. package/tools/approve.js +0 -197
  91. package/tools/artifacts-price.js +0 -107
  92. package/tools/available.js +0 -120
  93. package/tools/broadcast.js +0 -286
  94. package/tools/chat.js +0 -202
  95. package/tools/connection-status.js +0 -178
  96. package/tools/earnings.js +0 -126
  97. package/tools/follow.js +0 -224
  98. package/tools/friends.js +0 -207
  99. package/tools/gig-browse.js +0 -206
  100. package/tools/gig-complete.js +0 -144
  101. package/tools/plan.js +0 -225
  102. package/tools/proof-of-work.js +0 -144
  103. package/tools/reply.js +0 -166
  104. package/tools/schedule.js +0 -367
  105. package/tools/search-messages.js +0 -123
  106. package/tools/session.js +0 -420
  107. package/tools/session_price.js +0 -128
  108. package/tools/smart-check.js +0 -201
  109. package/tools/stuck.js +0 -297
  110. package/tools/subscribe.js +0 -148
  111. package/tools/subscriptions.js +0 -134
  112. package/tools/watch.js +0 -157
  113. package/tools/withdraw.js +0 -145
  114. package/tools/work-summary.js +0 -96
  115. /package/tools/{_deprecated/auto-suggest-connections.js → auto-suggest-connections.js} +0 -0
  116. /package/tools/{_deprecated/away.js → away.js} +0 -0
  117. /package/tools/{_deprecated/back.js → back.js} +0 -0
  118. /package/tools/{_deprecated/bootstrap-skills.js → bootstrap-skills.js} +0 -0
  119. /package/tools/{_deprecated/bridge-dashboard.js → bridge-dashboard.js} +0 -0
  120. /package/tools/{_deprecated/bridge-health.js → bridge-health.js} +0 -0
  121. /package/tools/{_deprecated/bridge-live.js → bridge-live.js} +0 -0
  122. /package/tools/{_deprecated/bridges.js → bridges.js} +0 -0
  123. /package/tools/{_deprecated/colorguess.js → colorguess.js} +0 -0
  124. /package/tools/{_deprecated/discover-insights.js → discover-insights.js} +0 -0
  125. /package/tools/{_deprecated/discover-momentum.js → discover-momentum.js} +0 -0
  126. /package/tools/{_deprecated/discovery-analytics.js → discovery-analytics.js} +0 -0
  127. /package/tools/{_deprecated/discovery-auto-suggest.js → discovery-auto-suggest.js} +0 -0
  128. /package/tools/{_deprecated/discovery-bootstrap.js → discovery-bootstrap.js} +0 -0
  129. /package/tools/{_deprecated/discovery-daily.js → discovery-daily.js} +0 -0
  130. /package/tools/{_deprecated/discovery-dashboard.js → discovery-dashboard.js} +0 -0
  131. /package/tools/{_deprecated/discovery-digest.js → discovery-digest.js} +0 -0
  132. /package/tools/{_deprecated/discovery-hub.js → discovery-hub.js} +0 -0
  133. /package/tools/{_deprecated/discovery-insights.js → discovery-insights.js} +0 -0
  134. /package/tools/{_deprecated/discovery-momentum.js → discovery-momentum.js} +0 -0
  135. /package/tools/{_deprecated/discovery-monitor.js → discovery-monitor.js} +0 -0
  136. /package/tools/{_deprecated/discovery-proactive.js → discovery-proactive.js} +0 -0
  137. /package/tools/{_deprecated/draw.js → draw.js} +0 -0
  138. /package/tools/{_deprecated/farcaster.js → farcaster.js} +0 -0
  139. /package/tools/{_deprecated/forget.js → forget.js} +0 -0
  140. /package/tools/{_deprecated/games-catalog.js → games-catalog.js} +0 -0
  141. /package/tools/{_deprecated/games.js → games.js} +0 -0
  142. /package/tools/{_deprecated/guessnumber.js → guessnumber.js} +0 -0
  143. /package/tools/{_deprecated/hangman.js → hangman.js} +0 -0
  144. /package/tools/{_deprecated/multiplayer-tictactoe.js → multiplayer-tictactoe.js} +0 -0
  145. /package/tools/{_deprecated/mute.js → mute.js} +0 -0
  146. /package/tools/{_deprecated/recall.js → recall.js} +0 -0
  147. /package/tools/{_deprecated/remember.js → remember.js} +0 -0
  148. /package/tools/{_deprecated/riddle.js → riddle.js} +0 -0
  149. /package/tools/{_deprecated/run-bootstrap.js → run-bootstrap.js} +0 -0
  150. /package/tools/{_deprecated/skills-analytics.js → skills-analytics.js} +0 -0
  151. /package/tools/{_deprecated/skills-bootstrap.js → skills-bootstrap.js} +0 -0
  152. /package/tools/{_deprecated/skills-dashboard.js → skills-dashboard.js} +0 -0
  153. /package/tools/{_deprecated/skills-exchange.js → skills-exchange.js} +0 -0
  154. /package/tools/{_deprecated/skills.js → skills.js} +0 -0
  155. /package/tools/{_deprecated/smart-intro.js → smart-intro.js} +0 -0
  156. /package/tools/{_deprecated/storybuilder.js → storybuilder.js} +0 -0
  157. /package/tools/{_deprecated/telegram-bot.js → telegram-bot.js} +0 -0
  158. /package/tools/{_deprecated/telegram-setup.js → telegram-setup.js} +0 -0
  159. /package/tools/{_deprecated/tictactoe.js → tictactoe.js} +0 -0
  160. /package/tools/{_deprecated/twentyquestions.js → twentyquestions.js} +0 -0
  161. /package/tools/{_deprecated/wordassociation.js → wordassociation.js} +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Slash Vibe, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,70 +1,288 @@
1
- # vibe-mcp
1
+ # /vibe MCP Server
2
2
 
3
- Social layer for Claude Code. DMs, presence, and connection between AI-assisted developers.
3
+ The social layer for AI coding. DMs, presence, discovery, and games between developers — without leaving your editor.
4
4
 
5
- ## Installation
5
+ Works with Claude Code, Cursor, VS Code, Windsurf, Cline, Continue.dev, JetBrains, and any MCP-compatible client.
6
6
 
7
- ```bash
8
- # Install globally
9
- npm install -g vibe-mcp
7
+ ## Install
10
8
 
11
- # Or add to Claude Code MCP config
12
- claude mcp add vibe-mcp
13
- ```
9
+ Add to your MCP config and restart your editor:
14
10
 
15
- ## Manual Setup
11
+ <details open>
12
+ <summary><strong>Claude Code</strong></summary>
16
13
 
17
14
  Add to `~/.claude.json`:
15
+ ```json
16
+ {
17
+ "mcpServers": {
18
+ "vibe": {
19
+ "command": "npx",
20
+ "args": ["-y", "slashvibe-mcp"]
21
+ }
22
+ }
23
+ }
24
+ ```
18
25
 
26
+ Or via CLI:
27
+ ```bash
28
+ claude mcp add vibe -- npx -y slashvibe-mcp
29
+ ```
30
+ </details>
31
+
32
+ <details>
33
+ <summary><strong>Cursor</strong></summary>
34
+
35
+ Add to `~/.cursor/mcp.json`:
19
36
  ```json
20
37
  {
21
38
  "mcpServers": {
22
39
  "vibe": {
23
40
  "command": "npx",
24
- "args": ["vibe-mcp"],
25
- "env": {
26
- "VIBE_API_URL": "https://www.slashvibe.dev"
41
+ "args": ["-y", "slashvibe-mcp"]
42
+ }
43
+ }
44
+ }
45
+ ```
46
+ </details>
47
+
48
+ <details>
49
+ <summary><strong>VS Code (GitHub Copilot)</strong></summary>
50
+
51
+ Add to `.vscode/mcp.json` in your workspace:
52
+ ```json
53
+ {
54
+ "servers": {
55
+ "vibe": {
56
+ "command": "npx",
57
+ "args": ["-y", "slashvibe-mcp"]
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ Or add to your `settings.json`:
64
+ ```json
65
+ {
66
+ "mcp": {
67
+ "servers": {
68
+ "vibe": {
69
+ "command": "npx",
70
+ "args": ["-y", "slashvibe-mcp"]
27
71
  }
28
72
  }
29
73
  }
30
74
  }
31
75
  ```
76
+ </details>
77
+
78
+ <details>
79
+ <summary><strong>Windsurf</strong></summary>
80
+
81
+ Add to `~/.codeium/windsurf/mcp_config.json`:
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "vibe": {
86
+ "command": "npx",
87
+ "args": ["-y", "slashvibe-mcp"]
88
+ }
89
+ }
90
+ }
91
+ ```
92
+ </details>
93
+
94
+ <details>
95
+ <summary><strong>Cline (VS Code)</strong></summary>
96
+
97
+ Open Cline > MCP Servers icon > Configure > Edit JSON, then add:
98
+ ```json
99
+ {
100
+ "mcpServers": {
101
+ "vibe": {
102
+ "command": "npx",
103
+ "args": ["-y", "slashvibe-mcp"]
104
+ }
105
+ }
106
+ }
107
+ ```
108
+ </details>
109
+
110
+ <details>
111
+ <summary><strong>Continue.dev</strong></summary>
112
+
113
+ Create `.continue/mcpServers/vibe.json`:
114
+ ```json
115
+ {
116
+ "command": "npx",
117
+ "args": ["-y", "slashvibe-mcp"]
118
+ }
119
+ ```
120
+ </details>
121
+
122
+ <details>
123
+ <summary><strong>JetBrains (IntelliJ, WebStorm, etc.)</strong></summary>
124
+
125
+ Go to **Settings > Tools > AI Assistant > Model Context Protocol (MCP)** and add a new server:
126
+ - **Command:** `npx`
127
+ - **Arguments:** `-y slashvibe-mcp`
128
+
129
+ Or import from your Claude Code config if you already have one.
130
+ </details>
131
+
132
+ ## Getting Started
133
+
134
+ Once installed, tell Claude:
135
+
136
+ ```
137
+ "let's vibe"
138
+ ```
139
+
140
+ That's it. Claude will authenticate you via GitHub, show who's online, and check your inbox.
141
+
142
+ If you prefer step-by-step:
143
+
144
+ 1. **Authenticate** — `vibe init` opens GitHub OAuth in your browser. Takes 30 seconds.
145
+ 2. **See who's around** — `vibe who` shows online builders and what they're working on.
146
+ 3. **Check messages** — `vibe inbox` shows unread DMs.
147
+ 4. **Send your first message** — `vibe dm @seth hey, just set up /vibe!`
148
+
149
+ ## Tools
150
+
151
+ ### Core — Messaging & Presence
152
+
153
+ | Tool | What it does |
154
+ |------|-------------|
155
+ | `vibe_start` | Entry point — authenticates, shows who's online, checks inbox |
156
+ | `vibe_init` | Set up your identity via GitHub OAuth |
157
+ | `vibe_who` | See who's online and what they're building |
158
+ | `vibe_dm` | Send a direct message |
159
+ | `vibe_inbox` | Check your unread messages |
160
+ | `vibe_open` | Open a conversation thread with someone |
161
+ | `vibe_ping` | Send a quick wave to someone |
162
+ | `vibe_react` | React to a message |
163
+ | `vibe_status` | Set your mood or what you're working on |
164
+ | `vibe_away` / `vibe_back` | Set yourself away or return |
165
+ | `vibe_bye` | End your session |
32
166
 
33
- ## Features
167
+ ### Discovery — Find Your People
34
168
 
35
- - **Presence** - See who's online building with Claude Code
36
- - **DMs** - Direct messages between developers
37
- - **Memory** - Remember context about connections
38
- - **Status** - Share what you're working on
39
- - **Games** - Play tic-tac-toe while coding
169
+ | Tool | What it does |
170
+ |------|-------------|
171
+ | `vibe_discover` | Find builders by interests, projects, or activity |
172
+ | `vibe_suggest_tags` | Get tag suggestions for your profile |
173
+ | `vibe_skills_exchange` | Browse and offer skills |
174
+ | `vibe_workshop_buddy` | Find a learning partner |
175
+ | `vibe_invite` | Generate an invite link |
40
176
 
41
- ## Commands
177
+ ### Creative — Ship & Share
42
178
 
43
- Once installed, use these in Claude Code:
179
+ | Tool | What it does |
180
+ |------|-------------|
181
+ | `vibe_ship` | Announce what you shipped |
182
+ | `vibe_idea` | Share an idea with the community |
183
+ | `vibe_request` | Ask the community for help |
184
+ | `vibe_feed` | See what people are shipping and sharing |
185
+ | `vibe_create_artifact` | Create a shareable guide, workspace, or learning |
186
+ | `vibe_view_artifact` | View shared artifacts |
44
187
 
45
- | Command | Description |
46
- |---------|-------------|
47
- | `vibe` | Check inbox and see who's online |
48
- | `vibe who` | List online users |
49
- | `vibe dm @handle "message"` | Send a DM |
50
- | `vibe status shipping` | Set your status |
51
- | `vibe remember @handle "note"` | Save a memory |
52
- | `vibe recall @handle` | Recall memories |
188
+ ### Memory Context That Persists
53
189
 
54
- ## API
190
+ | Tool | What it does |
191
+ |------|-------------|
192
+ | `vibe_remember` | Save a note about someone for next time |
193
+ | `vibe_recall` | Pull up everything you know about someone |
194
+ | `vibe_forget` | Delete a memory |
195
+ | `vibe_handoff` | Create an AIRC context handoff for another tool |
55
196
 
56
- The MCP server connects to `slashvibe.dev` for:
57
- - User presence and discovery
58
- - Message routing
59
- - Identity verification
197
+ ### Games 27 Multiplayer & Solo Games
60
198
 
61
- ## Related
199
+ | Tool | What it does |
200
+ |------|-------------|
201
+ | `vibe_game` | Start a multiplayer game with someone |
202
+ | `vibe_solo_game` | Play a solo game (riddles, hangman, number guess) |
203
+ | `vibe_tictactoe` | Challenge someone to tic-tac-toe |
204
+ | `vibe_crossword` | Collaborative crossword puzzle |
205
+ | `vibe_drawing` | Collaborative ASCII drawing |
206
+ | `vibe_party_game` | Start a party game for 3+ players |
62
207
 
63
- - [GitHub](https://github.com/VibeCodingInc/vibe-mcp) - Source code
64
- - [slashvibe.dev](https://slashvibe.dev) - Web presence
65
- - [Spirit Protocol](https://spiritprotocol.io) - Parent ecosystem
66
- - [AIRC](https://airc.chat) - Agent identity protocol
208
+ ### Bridges — Cross-Platform Social
209
+
210
+ | Tool | What it does |
211
+ |------|-------------|
212
+ | `vibe_x_mentions` | Check your X/Twitter mentions |
213
+ | `vibe_x_reply` | Reply on X from the terminal |
214
+ | `vibe_social_inbox` | Unified inbox across platforms |
215
+ | `vibe_social_post` | Post to multiple networks at once |
216
+
217
+ ### Diagnostics
218
+
219
+ | Tool | What it does |
220
+ |------|-------------|
221
+ | `vibe_doctor` | Full health check — API, auth, storage, presence |
222
+ | `vibe_test` | Quick connection and identity test |
223
+ | `vibe_help` | Show available commands |
224
+ | `vibe_update` | Check for and apply updates |
225
+ | `vibe_settings` | Configure preferences |
226
+
227
+ ## How It Works
228
+
229
+ /vibe is an MCP server that connects your editor to [slashvibe.dev](https://slashvibe.dev). Messages sync via a Postgres backend with local SQLite persistence for offline-first speed. Everyone using /vibe is on the same network — regardless of which editor they use.
230
+
231
+ ```
232
+ Your Editor ←→ /vibe MCP (stdio) ←→ slashvibe.dev API ←→ Other users
233
+
234
+ Local SQLite DB
235
+ (~/.vibecodings/sessions.db)
236
+ ```
237
+
238
+ - **Identity** persists via GitHub OAuth — your handle follows you across sessions
239
+ - **Messages** are stored locally first, then synced to the server (optimistic send)
240
+ - **Presence** broadcasts via heartbeat — others see you in real time
241
+ - **Memory** is local — notes you save about people stay on your machine
242
+
243
+ ## Troubleshooting
244
+
245
+ **"I installed but don't see /vibe tools in Claude Code"**
246
+ - Make sure you restarted Claude Code after adding the MCP config
247
+ - Check your config file: `~/.claude.json` or `~/.config/claude-code/mcp.json`
248
+ - Run `vibe doctor` to diagnose issues
249
+
250
+ **"Authentication failed or timed out"**
251
+ - The OAuth flow opens a browser window — if it didn't open, go to [slashvibe.dev/login](https://slashvibe.dev/login) manually
252
+ - The auth callback runs on `localhost:9876` — make sure that port is free
253
+ - You have 2 minutes to complete the GitHub login
254
+
255
+ **"Messages aren't sending"**
256
+ - Run `vibe doctor` to check API connectivity
257
+ - Check your internet connection
258
+ - Messages are saved locally even if the API is down — they'll sync when you reconnect
259
+
260
+ **"I see 'Unknown tool' errors"**
261
+ - You may be running an older version. Run `vibe update` or reinstall: `npm install -g slashvibe-mcp`
262
+
263
+ ## Configuration
264
+
265
+ Config lives at `~/.vibecodings/config.json` (primary) or `~/.vibe/config.json` (legacy fallback).
266
+
267
+ Local message database: `~/.vibecodings/sessions.db` (SQLite, shared with Vibe Terminal desktop app).
268
+
269
+ ## Contributing
270
+
271
+ We welcome contributions. Please read our [Contributor License Agreement](./CLA.md) before submitting pull requests.
272
+
273
+ - Report bugs via [GitHub Issues](https://github.com/VibeCodingInc/vibe-mcp/issues)
274
+ - Propose features via [Discussions](https://github.com/VibeCodingInc/vibe-mcp/discussions)
67
275
 
68
276
  ## License
69
277
 
70
- MIT
278
+ MIT — see [LICENSE](./LICENSE)
279
+
280
+ ## Links
281
+
282
+ - [slashvibe.dev](https://slashvibe.dev) — The platform
283
+ - [Vibe Terminal](https://github.com/VibeCodingInc/vibe-terminal) — Desktop app
284
+ - [@slashvibe on X](https://twitter.com/slashvibe) — Updates
285
+
286
+ ---
287
+
288
+ Built by [Slash Vibe, Inc.](https://slashvibe.dev)
package/config.js CHANGED
@@ -72,8 +72,8 @@ function save(config) {
72
72
  // GitHub Activity settings
73
73
  github_activity_enabled: config.github_activity_enabled !== undefined ? config.github_activity_enabled : existing.github_activity_enabled,
74
74
  github_activity_privacy: config.github_activity_privacy || existing.github_activity_privacy || null,
75
- // OAuth token (persisted across MCP process restarts)
76
- authToken: config.authToken || config.privyToken || existing.authToken || existing.privyToken || null,
75
+ // Privy OAuth token (persisted across MCP process restarts)
76
+ privyToken: config.privyToken || existing.privyToken || null,
77
77
  authMethod: config.authMethod || existing.authMethod || null
78
78
  };
79
79
  fs.writeFileSync(PRIMARY_CONFIG, JSON.stringify(data, null, 2));
@@ -217,52 +217,43 @@ function getAuthToken() {
217
217
 
218
218
  // Fall back to shared config (persisted across MCP process restarts)
219
219
  const cfg = load();
220
- return cfg?.authToken || cfg?.privyToken || null;
220
+ return cfg?.privyToken || null;
221
221
  }
222
222
 
223
223
  /**
224
- * Save auth token (used after browser OAuth flow)
225
- * @param {string} token - JWT access token from GitHub OAuth
224
+ * Save Privy JWT token (used after browser OAuth flow)
225
+ * @param {string} token - Privy access token
226
226
  */
227
- function saveAuthToken(token) {
227
+ function savePrivyToken(token) {
228
228
  // Save to session data
229
229
  const data = getSessionData() || {};
230
230
  saveSessionData({
231
231
  ...data,
232
232
  sessionId: data.sessionId || generateSessionId(),
233
233
  token,
234
- authMethod: 'github' // Track that this is GitHub OAuth
234
+ authMethod: 'privy' // Track that this is a Privy token
235
235
  });
236
236
 
237
237
  // Also save to shared config for persistence across MCP restarts
238
238
  const cfg = load();
239
- cfg.authToken = token;
240
- cfg.authMethod = 'github';
239
+ cfg.privyToken = token;
240
+ cfg.authMethod = 'privy';
241
241
  save(cfg);
242
242
  }
243
243
 
244
- // Backwards compatibility alias
245
- const savePrivyToken = saveAuthToken;
246
-
247
244
  /**
248
- * Check if user has OAuth auth (vs legacy keypair)
249
- * Accepts 'github', 'privy', and 'browser' as valid auth methods (backwards compat)
245
+ * Check if user has Privy auth (vs legacy keypair)
250
246
  */
251
- function hasOAuth() {
252
- const validAuthMethods = ['github', 'privy', 'browser'];
253
-
247
+ function hasPrivyAuth() {
254
248
  const data = getSessionData();
255
- if (validAuthMethods.includes(data?.authMethod) && data?.token) return true;
249
+ if (data?.authMethod === 'privy' && data?.token) return true;
256
250
 
257
251
  const cfg = load();
258
- return validAuthMethods.includes(cfg?.authMethod) && (cfg?.authToken || cfg?.privyToken);
252
+ return cfg?.authMethod === 'privy' && cfg?.privyToken;
259
253
  }
260
254
 
261
- // Backwards compatibility alias
262
- const hasPrivyAuth = hasOAuth;
263
-
264
255
  /**
265
- * Remove keypair after migration to GitHub OAuth
256
+ * Remove keypair after migration to Privy
266
257
  * Clears private key from config (security improvement)
267
258
  */
268
259
  function removeKeypair() {
@@ -418,10 +409,7 @@ module.exports = {
418
409
  getGithubActivityPrivacy,
419
410
  setGithubActivityPrivacy,
420
411
  getApiUrl,
421
- // OAuth helpers
422
- saveAuthToken,
423
- hasOAuth,
424
- // Backwards compatibility aliases
412
+ // Privy OAuth helpers
425
413
  savePrivyToken,
426
414
  hasPrivyAuth,
427
415
  removeKeypair,