vibekit-mcp 0.5.5 → 0.6.1

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 (4) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.js +28 -462
  3. package/package.json +4 -3
  4. package/tools.json +363 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 VibeKit
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/dist/index.js CHANGED
@@ -10,13 +10,16 @@ const SKILLS_REGISTRY = "https://raw.githubusercontent.com/vibekit-apps/skills-r
10
10
  // Skills cache (TTL: 5 minutes)
11
11
  let skillsCache = null;
12
12
  const CACHE_TTL = 5 * 60 * 1000;
13
- if (!API_KEY) {
14
- console.error("Error: VIBEKIT_API_KEY environment variable is required");
15
- console.error("Get one at https://t.me/the_vibe_kit_bot with /apikey command");
16
- process.exit(1);
17
- }
18
13
  // API helper
19
14
  async function apiRequest(method, path, body) {
15
+ // The server boots and lists its tools without a key (so MCP introspection
16
+ // works); a key is only required to actually call the VibeKit API.
17
+ if (!API_KEY) {
18
+ return {
19
+ ok: false,
20
+ error: "VIBEKIT_API_KEY is required. Get one at https://t.me/the_vibe_kit_bot with the /apikey command.",
21
+ };
22
+ }
20
23
  try {
21
24
  const res = await fetch(`${API_BASE}${path}`, {
22
25
  method,
@@ -36,462 +39,19 @@ async function apiRequest(method, path, body) {
36
39
  return { ok: false, error: err instanceof Error ? err.message : "Unknown error" };
37
40
  }
38
41
  }
39
- // Tool definitions
40
- const tools = [
41
- // Hosting & Apps
42
- {
43
- name: "vibekit_list_apps",
44
- description: "List all hosted apps in your VibeKit account.",
45
- inputSchema: {
46
- type: "object",
47
- properties: {},
48
- },
49
- },
50
- {
51
- name: "vibekit_get_app",
52
- description: "Get details about a specific hosted app.",
53
- inputSchema: {
54
- type: "object",
55
- properties: {
56
- appId: {
57
- type: "string",
58
- description: "The app ID to get details for",
59
- },
60
- },
61
- required: ["appId"],
62
- },
63
- },
64
- {
65
- name: "vibekit_create_app",
66
- description: "Create a new hosted app from a template.",
67
- inputSchema: {
68
- type: "object",
69
- properties: {
70
- template: {
71
- type: "string",
72
- description: "Template to use (e.g., 'nextjs', 'react', 'express')",
73
- },
74
- subdomain: {
75
- type: "string",
76
- description: "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)",
77
- },
78
- },
79
- required: ["template", "subdomain"],
80
- },
81
- },
82
- {
83
- name: "vibekit_deploy",
84
- description: "Deploy a GitHub repo to VibeKit hosting.",
85
- inputSchema: {
86
- type: "object",
87
- properties: {
88
- repo: {
89
- type: "string",
90
- description: "GitHub repo in format 'owner/repo'",
91
- },
92
- subdomain: {
93
- type: "string",
94
- description: "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)",
95
- },
96
- },
97
- required: ["repo", "subdomain"],
98
- },
99
- },
100
- {
101
- name: "vibekit_redeploy",
102
- description: "Redeploy an existing hosted app to update it with latest code.",
103
- inputSchema: {
104
- type: "object",
105
- properties: {
106
- appId: {
107
- type: "string",
108
- description: "The app ID to redeploy",
109
- },
110
- },
111
- required: ["appId"],
112
- },
113
- },
114
- {
115
- name: "vibekit_app_logs",
116
- description: "Get application logs for debugging and monitoring.",
117
- inputSchema: {
118
- type: "object",
119
- properties: {
120
- appId: {
121
- type: "string",
122
- description: "The app ID to get logs for",
123
- },
124
- lines: {
125
- type: "number",
126
- description: "Number of log lines to retrieve (default: 100)",
127
- },
128
- },
129
- required: ["appId"],
130
- },
131
- },
132
- {
133
- name: "vibekit_restart_app",
134
- description: "Restart a hosted app.",
135
- inputSchema: {
136
- type: "object",
137
- properties: {
138
- appId: {
139
- type: "string",
140
- description: "The app ID to restart",
141
- },
142
- },
143
- required: ["appId"],
144
- },
145
- },
146
- {
147
- name: "vibekit_stop_app",
148
- description: "Stop a hosted app.",
149
- inputSchema: {
150
- type: "object",
151
- properties: {
152
- appId: {
153
- type: "string",
154
- description: "The app ID to stop",
155
- },
156
- },
157
- required: ["appId"],
158
- },
159
- },
160
- {
161
- name: "vibekit_start_app",
162
- description: "Start a stopped hosted app.",
163
- inputSchema: {
164
- type: "object",
165
- properties: {
166
- appId: {
167
- type: "string",
168
- description: "The app ID to start",
169
- },
170
- },
171
- required: ["appId"],
172
- },
173
- },
174
- {
175
- name: "vibekit_app_env",
176
- description: "Get environment variables for a hosted app.",
177
- inputSchema: {
178
- type: "object",
179
- properties: {
180
- appId: {
181
- type: "string",
182
- description: "The app ID to get environment variables for",
183
- },
184
- },
185
- required: ["appId"],
186
- },
187
- },
188
- {
189
- name: "vibekit_set_env",
190
- description: "Set environment variables for a hosted app.",
191
- inputSchema: {
192
- type: "object",
193
- properties: {
194
- appId: {
195
- type: "string",
196
- description: "The app ID to set environment variables for",
197
- },
198
- vars: {
199
- type: "object",
200
- description: "Object of key-value pairs to set as environment variables",
201
- },
202
- },
203
- required: ["appId", "vars"],
204
- },
205
- },
206
- {
207
- name: "vibekit_delete_app",
208
- description: "Delete a hosted app permanently.",
209
- inputSchema: {
210
- type: "object",
211
- properties: {
212
- appId: {
213
- type: "string",
214
- description: "The app ID to delete",
215
- },
216
- },
217
- required: ["appId"],
218
- },
219
- },
220
- // AI Agent
221
- {
222
- name: "vibekit_chat",
223
- description: "Chat with an app's AI agent. The agent can read, write, and modify the app's code.",
224
- inputSchema: {
225
- type: "object",
226
- properties: {
227
- appId: {
228
- type: "string",
229
- description: "The app ID to chat with the agent for",
230
- },
231
- message: {
232
- type: "string",
233
- description: "Message to send to the AI agent",
234
- },
235
- },
236
- required: ["appId", "message"],
237
- },
238
- },
239
- {
240
- name: "vibekit_agent_status",
241
- description: "Get the status of an app's AI agent.",
242
- inputSchema: {
243
- type: "object",
244
- properties: {
245
- appId: {
246
- type: "string",
247
- description: "The app ID to get agent status for",
248
- },
249
- },
250
- required: ["appId"],
251
- },
252
- },
253
- {
254
- name: "vibekit_agent_history",
255
- description: "Get chat history with an app's AI agent.",
256
- inputSchema: {
257
- type: "object",
258
- properties: {
259
- appId: {
260
- type: "string",
261
- description: "The app ID to get agent history for",
262
- },
263
- limit: {
264
- type: "number",
265
- description: "Maximum number of messages to return (default: 20)",
266
- },
267
- },
268
- required: ["appId"],
269
- },
270
- },
271
- // Database
272
- {
273
- name: "vibekit_enable_database",
274
- description: "Enable database for a hosted app.",
275
- inputSchema: {
276
- type: "object",
277
- properties: {
278
- appId: {
279
- type: "string",
280
- description: "The app ID to enable database for",
281
- },
282
- },
283
- required: ["appId"],
284
- },
285
- },
286
- {
287
- name: "vibekit_database_status",
288
- description: "Get database status and connection info for an app.",
289
- inputSchema: {
290
- type: "object",
291
- properties: {
292
- appId: {
293
- type: "string",
294
- description: "The app ID to get database status for",
295
- },
296
- },
297
- required: ["appId"],
298
- },
299
- },
300
- // QA
301
- {
302
- name: "vibekit_run_qa",
303
- description: "Run automated QA tests on a hosted app.",
304
- inputSchema: {
305
- type: "object",
306
- properties: {
307
- appId: {
308
- type: "string",
309
- description: "The app ID to run QA tests for",
310
- },
311
- },
312
- required: ["appId"],
313
- },
314
- },
315
- {
316
- name: "vibekit_qa_status",
317
- description: "Get QA test results and status for an app.",
318
- inputSchema: {
319
- type: "object",
320
- properties: {
321
- appId: {
322
- type: "string",
323
- description: "The app ID to get QA status for",
324
- },
325
- },
326
- required: ["appId"],
327
- },
328
- },
329
- // Tasks (existing)
330
- {
331
- name: "vibekit_submit_task",
332
- description: "Submit a coding task to VibeKit. The AI will write code, commit to GitHub, and deploy to {subdomain}.vibekit.bot. Returns a task ID to poll for results.",
333
- inputSchema: {
334
- type: "object",
335
- properties: {
336
- task: {
337
- type: "string",
338
- description: "What you want built or changed. Be specific about features, design, and behavior.",
339
- },
340
- repo: {
341
- type: "string",
342
- description: "GitHub repo in format 'owner/repo'. Optional — will use user's current repo if not specified.",
343
- },
344
- branch: {
345
- type: "string",
346
- description: "Git branch to work on. Default: main",
347
- },
348
- deploy: {
349
- type: "boolean",
350
- description: "Auto-deploy to Vercel when done. Default: true",
351
- },
352
- callbackUrl: {
353
- type: "string",
354
- description: "Webhook URL to receive task completion notification.",
355
- },
356
- },
357
- required: ["task"],
358
- },
359
- },
360
- {
361
- name: "vibekit_get_task",
362
- description: "Get the status and result of a previously submitted task.",
363
- inputSchema: {
364
- type: "object",
365
- properties: {
366
- taskId: {
367
- type: "string",
368
- description: "The task ID returned from vibekit_submit_task",
369
- },
370
- },
371
- required: ["taskId"],
372
- },
373
- },
374
- {
375
- name: "vibekit_list_tasks",
376
- description: "List recent tasks submitted to VibeKit.",
377
- inputSchema: {
378
- type: "object",
379
- properties: {
380
- limit: {
381
- type: "number",
382
- description: "Max number of tasks to return. Default: 10",
383
- },
384
- status: {
385
- type: "string",
386
- enum: ["pending", "running", "completed", "failed"],
387
- description: "Filter by status",
388
- },
389
- },
390
- },
391
- },
392
- {
393
- name: "vibekit_wait_for_task",
394
- description: "Wait for a task to complete and return the result. Polls every 5 seconds up to the timeout.",
395
- inputSchema: {
396
- type: "object",
397
- properties: {
398
- taskId: {
399
- type: "string",
400
- description: "The task ID to wait for",
401
- },
402
- timeoutSeconds: {
403
- type: "number",
404
- description: "Max seconds to wait. Default: 300 (5 minutes)",
405
- },
406
- },
407
- required: ["taskId"],
408
- },
409
- },
410
- {
411
- name: "vibekit_create_schedule",
412
- description: "Create a scheduled recurring task. The AI will run this task automatically on the specified schedule.",
413
- inputSchema: {
414
- type: "object",
415
- properties: {
416
- task: {
417
- type: "string",
418
- description: "What to do on each run. e.g., 'Improve SEO and page speed'",
419
- },
420
- repo: {
421
- type: "string",
422
- description: "GitHub repo in format 'owner/repo'",
423
- },
424
- cron: {
425
- type: "string",
426
- description: "Cron expression. e.g., '0 9 * * 1' for every Monday at 9am UTC",
427
- },
428
- name: {
429
- type: "string",
430
- description: "Friendly name for the schedule",
431
- },
432
- },
433
- required: ["task", "repo", "cron"],
434
- },
435
- },
436
- {
437
- name: "vibekit_list_schedules",
438
- description: "List all scheduled tasks.",
439
- inputSchema: {
440
- type: "object",
441
- properties: {},
442
- },
443
- },
444
- {
445
- name: "vibekit_delete_schedule",
446
- description: "Delete a scheduled task.",
447
- inputSchema: {
448
- type: "object",
449
- properties: {
450
- scheduleId: {
451
- type: "string",
452
- description: "The schedule ID to delete",
453
- },
454
- },
455
- required: ["scheduleId"],
456
- },
457
- },
458
- // Account
459
- {
460
- name: "vibekit_account",
461
- description: "Get VibeKit account info including plan, credits balance, and usage.",
462
- inputSchema: {
463
- type: "object",
464
- properties: {},
465
- },
466
- },
467
- {
468
- name: "vibekit_list_skills",
469
- description: "List all available implementation skills. Returns skill IDs, names, descriptions, and tags. Use this to discover what skills are available before fetching specific ones.",
470
- inputSchema: {
471
- type: "object",
472
- properties: {
473
- tag: {
474
- type: "string",
475
- description: "Filter skills by tag (e.g., 'react', 'database', 'security')",
476
- },
477
- },
478
- },
479
- },
480
- {
481
- name: "vibekit_get_skill",
482
- description: "Fetch the full content of a specific skill. Skills contain implementation patterns, code examples, and best practices for a domain. Fetch skills on-demand when you need guidance on a specific topic.",
483
- inputSchema: {
484
- type: "object",
485
- properties: {
486
- id: {
487
- type: "string",
488
- description: "Skill ID from vibekit_list_skills (e.g., 'nextjs', 'trpc', 'auth')",
489
- },
490
- },
491
- required: ["id"],
492
- },
493
- },
494
- ];
42
+ // Tool definitions live in tools.json — single source of truth, also rendered
43
+ // dynamically into the /mcp-server marketing page so it never drifts.
44
+ // require() resolves relative to the compiled file location at runtime;
45
+ // tools.json sits at the package root next to dist/, both when installed
46
+ // from npm and when run via tsx in dev.
47
+ const fs_1 = require("fs");
48
+ const path_1 = require("path");
49
+ const TOOLS_MANIFEST_PATH = (0, path_1.join)(__dirname, "..", "tools.json");
50
+ const tools = JSON.parse((0, fs_1.readFileSync)(TOOLS_MANIFEST_PATH, "utf8")).map((t) => ({
51
+ name: t.name,
52
+ description: t.description,
53
+ inputSchema: t.inputSchema,
54
+ }));
495
55
  // Tool handlers
496
56
  async function handleTool(name, args) {
497
57
  let result;
@@ -509,6 +69,9 @@ async function handleTool(name, args) {
509
69
  subdomain: args.subdomain,
510
70
  });
511
71
  break;
72
+ case "vibekit_list_templates":
73
+ result = await apiRequest("GET", "/templates");
74
+ break;
512
75
  case "vibekit_deploy":
513
76
  result = await apiRequest("POST", "/hosting/deploy", {
514
77
  repo: args.repo,
@@ -596,6 +159,9 @@ async function handleTool(name, args) {
596
159
  case "vibekit_get_task":
597
160
  result = await apiRequest("GET", `/task/${args.taskId}`);
598
161
  break;
162
+ case "vibekit_cancel_task":
163
+ result = await apiRequest("DELETE", `/task/${args.taskId}`);
164
+ break;
599
165
  case "vibekit_list_tasks": {
600
166
  let path = "/tasks";
601
167
  const params = new URLSearchParams();
@@ -706,7 +272,7 @@ async function handleTool(name, args) {
706
272
  // Main server setup
707
273
  const server = new index_js_1.Server({
708
274
  name: "vibekit-mcp",
709
- version: "0.5.5",
275
+ version: "0.6.1",
710
276
  }, {
711
277
  capabilities: {
712
278
  tools: {},
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "vibekit-mcp",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
+ "mcpName": "io.github.609NFT/vibekit-mcp",
4
5
  "description": "MCP server for VibeKit — deploy apps, manage hosting, chat with AI agents, and run coding tasks from Claude Desktop, Cursor, and other MCP clients.",
5
6
  "main": "dist/index.js",
6
7
  "bin": {
@@ -8,6 +9,7 @@
8
9
  },
9
10
  "files": [
10
11
  "dist/",
12
+ "tools.json",
11
13
  "README.md"
12
14
  ],
13
15
  "scripts": {
@@ -28,8 +30,7 @@
28
30
  "license": "MIT",
29
31
  "repository": {
30
32
  "type": "git",
31
- "url": "https://github.com/609NFT/vibekit.git",
32
- "directory": "packages/mcp-server"
33
+ "url": "https://github.com/609NFT/vibekit-mcp.git"
33
34
  },
34
35
  "homepage": "https://vibekit.bot",
35
36
  "dependencies": {
package/tools.json ADDED
@@ -0,0 +1,363 @@
1
+ [
2
+ {
3
+ "category": "Hosting & Apps",
4
+ "name": "vibekit_list_apps",
5
+ "description": "List all hosted apps in your VibeKit account.",
6
+ "inputSchema": { "type": "object", "properties": {} }
7
+ },
8
+ {
9
+ "category": "Hosting & Apps",
10
+ "name": "vibekit_get_app",
11
+ "description": "Get details about a specific hosted app.",
12
+ "inputSchema": {
13
+ "type": "object",
14
+ "properties": {
15
+ "appId": { "type": "string", "description": "The app ID to get details for" }
16
+ },
17
+ "required": ["appId"]
18
+ }
19
+ },
20
+ {
21
+ "category": "Hosting & Apps",
22
+ "name": "vibekit_create_app",
23
+ "description": "Create a new hosted app from a template.",
24
+ "inputSchema": {
25
+ "type": "object",
26
+ "properties": {
27
+ "template": { "type": "string", "description": "Template to use (e.g., 'nextjs', 'react', 'express')" },
28
+ "subdomain": { "type": "string", "description": "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)" }
29
+ },
30
+ "required": ["template", "subdomain"]
31
+ }
32
+ },
33
+ {
34
+ "category": "Hosting & Apps",
35
+ "name": "vibekit_list_templates",
36
+ "description": "List available templates for vibekit_create_app (e.g. landing, dashboard, blog, saas, crud-api).",
37
+ "inputSchema": { "type": "object", "properties": {} }
38
+ },
39
+ {
40
+ "category": "Hosting & Apps",
41
+ "name": "vibekit_deploy",
42
+ "description": "Deploy a GitHub repo to VibeKit hosting.",
43
+ "inputSchema": {
44
+ "type": "object",
45
+ "properties": {
46
+ "repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'" },
47
+ "subdomain": { "type": "string", "description": "Subdomain for the app (will be deployed to {subdomain}.vibekit.bot)" }
48
+ },
49
+ "required": ["repo", "subdomain"]
50
+ }
51
+ },
52
+ {
53
+ "category": "Hosting & Apps",
54
+ "name": "vibekit_redeploy",
55
+ "description": "Redeploy an existing hosted app to update it with latest code.",
56
+ "inputSchema": {
57
+ "type": "object",
58
+ "properties": {
59
+ "appId": { "type": "string", "description": "The app ID to redeploy" }
60
+ },
61
+ "required": ["appId"]
62
+ }
63
+ },
64
+ {
65
+ "category": "Hosting & Apps",
66
+ "name": "vibekit_app_logs",
67
+ "description": "Get application logs for debugging and monitoring.",
68
+ "inputSchema": {
69
+ "type": "object",
70
+ "properties": {
71
+ "appId": { "type": "string", "description": "The app ID to get logs for" },
72
+ "lines": { "type": "number", "description": "Number of log lines to retrieve (default: 100)" }
73
+ },
74
+ "required": ["appId"]
75
+ }
76
+ },
77
+ {
78
+ "category": "Hosting & Apps",
79
+ "name": "vibekit_restart_app",
80
+ "description": "Restart a hosted app.",
81
+ "inputSchema": {
82
+ "type": "object",
83
+ "properties": {
84
+ "appId": { "type": "string", "description": "The app ID to restart" }
85
+ },
86
+ "required": ["appId"]
87
+ }
88
+ },
89
+ {
90
+ "category": "Hosting & Apps",
91
+ "name": "vibekit_stop_app",
92
+ "description": "Stop a hosted app.",
93
+ "inputSchema": {
94
+ "type": "object",
95
+ "properties": {
96
+ "appId": { "type": "string", "description": "The app ID to stop" }
97
+ },
98
+ "required": ["appId"]
99
+ }
100
+ },
101
+ {
102
+ "category": "Hosting & Apps",
103
+ "name": "vibekit_start_app",
104
+ "description": "Start a stopped hosted app.",
105
+ "inputSchema": {
106
+ "type": "object",
107
+ "properties": {
108
+ "appId": { "type": "string", "description": "The app ID to start" }
109
+ },
110
+ "required": ["appId"]
111
+ }
112
+ },
113
+ {
114
+ "category": "Hosting & Apps",
115
+ "name": "vibekit_app_env",
116
+ "description": "Get environment variables for a hosted app.",
117
+ "inputSchema": {
118
+ "type": "object",
119
+ "properties": {
120
+ "appId": { "type": "string", "description": "The app ID to get environment variables for" }
121
+ },
122
+ "required": ["appId"]
123
+ }
124
+ },
125
+ {
126
+ "category": "Hosting & Apps",
127
+ "name": "vibekit_set_env",
128
+ "description": "Set environment variables for a hosted app.",
129
+ "inputSchema": {
130
+ "type": "object",
131
+ "properties": {
132
+ "appId": { "type": "string", "description": "The app ID to set environment variables for" },
133
+ "vars": { "type": "object", "description": "Object of key-value pairs to set as environment variables" }
134
+ },
135
+ "required": ["appId", "vars"]
136
+ }
137
+ },
138
+ {
139
+ "category": "Hosting & Apps",
140
+ "name": "vibekit_delete_app",
141
+ "description": "Delete a hosted app permanently.",
142
+ "inputSchema": {
143
+ "type": "object",
144
+ "properties": {
145
+ "appId": { "type": "string", "description": "The app ID to delete" }
146
+ },
147
+ "required": ["appId"]
148
+ }
149
+ },
150
+ {
151
+ "category": "AI Agent",
152
+ "name": "vibekit_chat",
153
+ "description": "Chat with an app's AI agent. The agent can read, write, and modify the app's code.",
154
+ "inputSchema": {
155
+ "type": "object",
156
+ "properties": {
157
+ "appId": { "type": "string", "description": "The app ID to chat with the agent for" },
158
+ "message": { "type": "string", "description": "Message to send to the AI agent" }
159
+ },
160
+ "required": ["appId", "message"]
161
+ }
162
+ },
163
+ {
164
+ "category": "AI Agent",
165
+ "name": "vibekit_agent_status",
166
+ "description": "Get the status of an app's AI agent.",
167
+ "inputSchema": {
168
+ "type": "object",
169
+ "properties": {
170
+ "appId": { "type": "string", "description": "The app ID to get agent status for" }
171
+ },
172
+ "required": ["appId"]
173
+ }
174
+ },
175
+ {
176
+ "category": "AI Agent",
177
+ "name": "vibekit_agent_history",
178
+ "description": "Get chat history with an app's AI agent.",
179
+ "inputSchema": {
180
+ "type": "object",
181
+ "properties": {
182
+ "appId": { "type": "string", "description": "The app ID to get agent history for" },
183
+ "limit": { "type": "number", "description": "Maximum number of messages to return (default: 20)" }
184
+ },
185
+ "required": ["appId"]
186
+ }
187
+ },
188
+ {
189
+ "category": "Database",
190
+ "name": "vibekit_enable_database",
191
+ "description": "Enable database for a hosted app.",
192
+ "inputSchema": {
193
+ "type": "object",
194
+ "properties": {
195
+ "appId": { "type": "string", "description": "The app ID to enable database for" }
196
+ },
197
+ "required": ["appId"]
198
+ }
199
+ },
200
+ {
201
+ "category": "Database",
202
+ "name": "vibekit_database_status",
203
+ "description": "Get database status and connection info for an app.",
204
+ "inputSchema": {
205
+ "type": "object",
206
+ "properties": {
207
+ "appId": { "type": "string", "description": "The app ID to get database status for" }
208
+ },
209
+ "required": ["appId"]
210
+ }
211
+ },
212
+ {
213
+ "category": "QA",
214
+ "name": "vibekit_run_qa",
215
+ "description": "Run automated QA tests on a hosted app.",
216
+ "inputSchema": {
217
+ "type": "object",
218
+ "properties": {
219
+ "appId": { "type": "string", "description": "The app ID to run QA tests for" }
220
+ },
221
+ "required": ["appId"]
222
+ }
223
+ },
224
+ {
225
+ "category": "QA",
226
+ "name": "vibekit_qa_status",
227
+ "description": "Get QA test results and status for an app.",
228
+ "inputSchema": {
229
+ "type": "object",
230
+ "properties": {
231
+ "appId": { "type": "string", "description": "The app ID to get QA status for" }
232
+ },
233
+ "required": ["appId"]
234
+ }
235
+ },
236
+ {
237
+ "category": "Tasks",
238
+ "name": "vibekit_submit_task",
239
+ "description": "Submit a coding task to VibeKit. The AI will write code, commit to GitHub, and deploy to {subdomain}.vibekit.bot. Returns a task ID to poll for results.",
240
+ "inputSchema": {
241
+ "type": "object",
242
+ "properties": {
243
+ "task": { "type": "string", "description": "What you want built or changed. Be specific about features, design, and behavior." },
244
+ "repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'. Optional — will use user's current repo if not specified." },
245
+ "branch": { "type": "string", "description": "Git branch to work on. Default: main" },
246
+ "deploy": { "type": "boolean", "description": "Auto-deploy to Vercel when done. Default: true" },
247
+ "callbackUrl": { "type": "string", "description": "Webhook URL to receive task completion notification." }
248
+ },
249
+ "required": ["task"]
250
+ }
251
+ },
252
+ {
253
+ "category": "Tasks",
254
+ "name": "vibekit_get_task",
255
+ "description": "Get the status and result of a previously submitted task.",
256
+ "inputSchema": {
257
+ "type": "object",
258
+ "properties": {
259
+ "taskId": { "type": "string", "description": "The task ID returned from vibekit_submit_task" }
260
+ },
261
+ "required": ["taskId"]
262
+ }
263
+ },
264
+ {
265
+ "category": "Tasks",
266
+ "name": "vibekit_list_tasks",
267
+ "description": "List recent tasks submitted to VibeKit.",
268
+ "inputSchema": {
269
+ "type": "object",
270
+ "properties": {
271
+ "limit": { "type": "number", "description": "Max number of tasks to return. Default: 10" },
272
+ "status": { "type": "string", "enum": ["pending", "running", "completed", "failed"], "description": "Filter by status" }
273
+ }
274
+ }
275
+ },
276
+ {
277
+ "category": "Tasks",
278
+ "name": "vibekit_wait_for_task",
279
+ "description": "Wait for a task to complete and return the result. Polls every 5 seconds up to the timeout.",
280
+ "inputSchema": {
281
+ "type": "object",
282
+ "properties": {
283
+ "taskId": { "type": "string", "description": "The task ID to wait for" },
284
+ "timeoutSeconds": { "type": "number", "description": "Max seconds to wait. Default: 300 (5 minutes)" }
285
+ },
286
+ "required": ["taskId"]
287
+ }
288
+ },
289
+ {
290
+ "category": "Tasks",
291
+ "name": "vibekit_cancel_task",
292
+ "description": "Cancel a running task by ID. No-op for tasks that have already completed.",
293
+ "inputSchema": {
294
+ "type": "object",
295
+ "properties": {
296
+ "taskId": { "type": "string", "description": "The task ID to cancel" }
297
+ },
298
+ "required": ["taskId"]
299
+ }
300
+ },
301
+ {
302
+ "category": "Schedules",
303
+ "name": "vibekit_create_schedule",
304
+ "description": "Create a scheduled recurring task. The AI will run this task automatically on the specified schedule.",
305
+ "inputSchema": {
306
+ "type": "object",
307
+ "properties": {
308
+ "task": { "type": "string", "description": "What to do on each run. e.g., 'Improve SEO and page speed'" },
309
+ "repo": { "type": "string", "description": "GitHub repo in format 'owner/repo'" },
310
+ "cron": { "type": "string", "description": "Cron expression. e.g., '0 9 * * 1' for every Monday at 9am UTC" },
311
+ "name": { "type": "string", "description": "Friendly name for the schedule" }
312
+ },
313
+ "required": ["task", "repo", "cron"]
314
+ }
315
+ },
316
+ {
317
+ "category": "Schedules",
318
+ "name": "vibekit_list_schedules",
319
+ "description": "List all scheduled tasks.",
320
+ "inputSchema": { "type": "object", "properties": {} }
321
+ },
322
+ {
323
+ "category": "Schedules",
324
+ "name": "vibekit_delete_schedule",
325
+ "description": "Delete a scheduled task.",
326
+ "inputSchema": {
327
+ "type": "object",
328
+ "properties": {
329
+ "scheduleId": { "type": "string", "description": "The schedule ID to delete" }
330
+ },
331
+ "required": ["scheduleId"]
332
+ }
333
+ },
334
+ {
335
+ "category": "Account",
336
+ "name": "vibekit_account",
337
+ "description": "Get VibeKit account info including plan, credits balance, and usage.",
338
+ "inputSchema": { "type": "object", "properties": {} }
339
+ },
340
+ {
341
+ "category": "Skills",
342
+ "name": "vibekit_list_skills",
343
+ "description": "List all available implementation skills. Returns skill IDs, names, descriptions, and tags. Use this to discover what skills are available before fetching specific ones.",
344
+ "inputSchema": {
345
+ "type": "object",
346
+ "properties": {
347
+ "tag": { "type": "string", "description": "Filter skills by tag (e.g., 'react', 'database', 'security')" }
348
+ }
349
+ }
350
+ },
351
+ {
352
+ "category": "Skills",
353
+ "name": "vibekit_get_skill",
354
+ "description": "Fetch the full content of a specific skill. Skills contain implementation patterns, code examples, and best practices for a domain. Fetch skills on-demand when you need guidance on a specific topic.",
355
+ "inputSchema": {
356
+ "type": "object",
357
+ "properties": {
358
+ "id": { "type": "string", "description": "Skill ID from vibekit_list_skills (e.g., 'nextjs', 'trpc', 'auth')" }
359
+ },
360
+ "required": ["id"]
361
+ }
362
+ }
363
+ ]