vibekit-mcp 0.7.0 → 0.7.2
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/dist/index.js +42 -3
- package/package.json +3 -3
- package/tools.json +453 -135
- package/LICENSE +0 -21
package/dist/index.js
CHANGED
|
@@ -10,6 +10,9 @@ 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
|
+
// Max time vibekit_chat blocks before returning a "still working — poll" result,
|
|
14
|
+
// so a long coding turn never outlasts the client timeout and triggers a retry.
|
|
15
|
+
const CHAT_MAX_WAIT_MS = 110_000;
|
|
13
16
|
// API helper
|
|
14
17
|
async function apiRequest(method, path, body) {
|
|
15
18
|
// The server boots and lists its tools without a key (so MCP introspection
|
|
@@ -49,9 +52,26 @@ const path_1 = require("path");
|
|
|
49
52
|
const TOOLS_MANIFEST_PATH = (0, path_1.join)(__dirname, "..", "tools.json");
|
|
50
53
|
const tools = JSON.parse((0, fs_1.readFileSync)(TOOLS_MANIFEST_PATH, "utf8")).map((t) => ({
|
|
51
54
|
name: t.name,
|
|
55
|
+
title: t.title,
|
|
52
56
|
description: t.description,
|
|
53
57
|
inputSchema: t.inputSchema,
|
|
58
|
+
annotations: t.annotations,
|
|
54
59
|
}));
|
|
60
|
+
// Server-level guidance sent in the MCP `initialize` response. Tells the model
|
|
61
|
+
// what VibeKit is and when to reach for these tools — the single strongest
|
|
62
|
+
// signal (after tool descriptions) for tool selection. Keep in sync with the
|
|
63
|
+
// same string in src/routes/mcp.ts (the remote HTTP server).
|
|
64
|
+
const SERVER_INSTRUCTIONS = "VibeKit hosts, deploys, and operates web apps and AI coding agents. Each app runs in its own " +
|
|
65
|
+
"container at <subdomain>.vibekit.bot with optional Postgres, logs, env vars, and automated QA, " +
|
|
66
|
+
"plus a built-in AI agent that can edit the app's code.\n\n" +
|
|
67
|
+
"Use these tools whenever the user wants to: deploy a GitHub repo or starter template and get a " +
|
|
68
|
+
"live URL; list, inspect, restart/stop/start, or delete hosted apps; read logs to debug; manage " +
|
|
69
|
+
"env vars; enable and query an app's Postgres (call vibekit_db_schema before writing SQL); list " +
|
|
70
|
+
"or roll back deploys; run or check QA; chat with an app's AI agent to change its code; or " +
|
|
71
|
+
"submit/schedule autonomous coding tasks that commit to GitHub and deploy.\n\n" +
|
|
72
|
+
"Most tools key off an appId — call vibekit_list_apps first to resolve one. Confirm destructive " +
|
|
73
|
+
"actions (vibekit_delete_app, vibekit_delete_schedule, and write/DDL via vibekit_db_query) with " +
|
|
74
|
+
"the user before calling. Auth uses a VibeKit API key (vk_...) from the Telegram bot's /apikey command.";
|
|
55
75
|
// Tool handlers
|
|
56
76
|
async function handleTool(name, args) {
|
|
57
77
|
let result;
|
|
@@ -113,11 +133,28 @@ async function handleTool(name, args) {
|
|
|
113
133
|
result = await apiRequest("DELETE", `/hosting/app/${args.appId}`);
|
|
114
134
|
break;
|
|
115
135
|
// AI Agent
|
|
116
|
-
case "vibekit_chat":
|
|
117
|
-
|
|
136
|
+
case "vibekit_chat": {
|
|
137
|
+
// The /agent endpoint runs the whole coding turn synchronously, which can
|
|
138
|
+
// outlast the MCP client's idle timeout → the client retries, producing a
|
|
139
|
+
// duplicate message and losing the reply. Disconnect doesn't abort the run
|
|
140
|
+
// server-side, so we race the call against a bounded wait and, on timeout,
|
|
141
|
+
// return a SUCCESS "still working — poll" result (never an error, so no
|
|
142
|
+
// retry/dupe). The loopback call is NOT aborted; the turn lands in history.
|
|
143
|
+
const callP = apiRequest("POST", `/hosting/app/${args.appId}/agent`, {
|
|
118
144
|
message: args.message,
|
|
119
145
|
});
|
|
146
|
+
callP.catch(() => { });
|
|
147
|
+
const pollP = new Promise((resolve) => setTimeout(() => resolve({
|
|
148
|
+
ok: true,
|
|
149
|
+
data: {
|
|
150
|
+
status: "working",
|
|
151
|
+
appId: args.appId,
|
|
152
|
+
note: "Your message was delivered and the agent is still working on it — coding turns can take a few minutes. Do NOT resend the same message. Poll vibekit_agent_status until it's idle, then vibekit_agent_history to read the agent's reply.",
|
|
153
|
+
},
|
|
154
|
+
}), CHAT_MAX_WAIT_MS));
|
|
155
|
+
result = await Promise.race([callP, pollP]);
|
|
120
156
|
break;
|
|
157
|
+
}
|
|
121
158
|
case "vibekit_agent_status":
|
|
122
159
|
result = await apiRequest("GET", `/hosting/app/${args.appId}/agent/status`);
|
|
123
160
|
break;
|
|
@@ -303,11 +340,13 @@ async function handleTool(name, args) {
|
|
|
303
340
|
// Main server setup
|
|
304
341
|
const server = new index_js_1.Server({
|
|
305
342
|
name: "vibekit-mcp",
|
|
306
|
-
|
|
343
|
+
title: "VibeKit",
|
|
344
|
+
version: "0.7.2",
|
|
307
345
|
}, {
|
|
308
346
|
capabilities: {
|
|
309
347
|
tools: {},
|
|
310
348
|
},
|
|
349
|
+
instructions: SERVER_INSTRUCTIONS,
|
|
311
350
|
});
|
|
312
351
|
// Handle tool listing
|
|
313
352
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibekit-mcp",
|
|
3
|
-
"version": "0.7.
|
|
4
|
-
"mcpName": "io.github.609NFT/vibekit-mcp",
|
|
3
|
+
"version": "0.7.2",
|
|
5
4
|
"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.",
|
|
6
5
|
"main": "dist/index.js",
|
|
7
6
|
"bin": {
|
|
@@ -30,7 +29,8 @@
|
|
|
30
29
|
"license": "MIT",
|
|
31
30
|
"repository": {
|
|
32
31
|
"type": "git",
|
|
33
|
-
"url": "https://github.com/609NFT/vibekit
|
|
32
|
+
"url": "https://github.com/609NFT/vibekit.git",
|
|
33
|
+
"directory": "packages/mcp-server"
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://vibekit.bot",
|
|
36
36
|
"dependencies": {
|
package/tools.json
CHANGED
|
@@ -2,428 +2,746 @@
|
|
|
2
2
|
{
|
|
3
3
|
"category": "Hosting & Apps",
|
|
4
4
|
"name": "vibekit_list_apps",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"title": "VibeKit List Apps",
|
|
6
|
+
"description": "List all hosted apps in your VibeKit account, each with its id, subdomain, status, and live URL. Start here to get an appId for the other app tools.",
|
|
7
|
+
"annotations": { "title": "VibeKit List Apps", "readOnlyHint": true, "idempotentHint": true },
|
|
8
|
+
"inputSchema": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {}
|
|
11
|
+
}
|
|
7
12
|
},
|
|
8
13
|
{
|
|
9
14
|
"category": "Hosting & Apps",
|
|
10
15
|
"name": "vibekit_get_app",
|
|
11
|
-
"
|
|
16
|
+
"title": "VibeKit Get App",
|
|
17
|
+
"description": "Get full details for one hosted app — status, subdomain/URL, repo, runtime, and database/domain config. Use the appId from vibekit_list_apps.",
|
|
18
|
+
"annotations": { "title": "VibeKit Get App", "readOnlyHint": true, "idempotentHint": true },
|
|
12
19
|
"inputSchema": {
|
|
13
20
|
"type": "object",
|
|
14
21
|
"properties": {
|
|
15
|
-
"appId": {
|
|
22
|
+
"appId": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
25
|
+
}
|
|
16
26
|
},
|
|
17
|
-
"required": [
|
|
27
|
+
"required": [
|
|
28
|
+
"appId"
|
|
29
|
+
]
|
|
18
30
|
}
|
|
19
31
|
},
|
|
20
32
|
{
|
|
21
33
|
"category": "Hosting & Apps",
|
|
22
34
|
"name": "vibekit_create_app",
|
|
23
|
-
"
|
|
35
|
+
"title": "VibeKit Create App",
|
|
36
|
+
"description": "Create a new hosted app from a starter template and deploy it live at <subdomain>.vibekit.bot. Call vibekit_list_templates first to pick a valid template. To deploy existing code from a GitHub repo instead, use vibekit_deploy.",
|
|
37
|
+
"annotations": { "title": "VibeKit Create App", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false },
|
|
24
38
|
"inputSchema": {
|
|
25
39
|
"type": "object",
|
|
26
40
|
"properties": {
|
|
27
|
-
"template": {
|
|
28
|
-
|
|
41
|
+
"template": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api')"
|
|
44
|
+
},
|
|
45
|
+
"subdomain": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
|
|
48
|
+
}
|
|
29
49
|
},
|
|
30
|
-
"required": [
|
|
50
|
+
"required": [
|
|
51
|
+
"template",
|
|
52
|
+
"subdomain"
|
|
53
|
+
]
|
|
31
54
|
}
|
|
32
55
|
},
|
|
33
56
|
{
|
|
34
57
|
"category": "Hosting & Apps",
|
|
35
58
|
"name": "vibekit_list_templates",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
59
|
+
"title": "VibeKit List Templates",
|
|
60
|
+
"description": "List the starter templates available to vibekit_create_app (e.g. landing, dashboard, blog, saas, crud-api). Call this before vibekit_create_app to choose a valid template.",
|
|
61
|
+
"annotations": { "title": "VibeKit List Templates", "readOnlyHint": true, "idempotentHint": true },
|
|
62
|
+
"inputSchema": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"properties": {}
|
|
65
|
+
}
|
|
38
66
|
},
|
|
39
67
|
{
|
|
40
68
|
"category": "Hosting & Apps",
|
|
41
69
|
"name": "vibekit_deploy",
|
|
42
|
-
"
|
|
70
|
+
"title": "VibeKit Deploy",
|
|
71
|
+
"description": "Deploy a GitHub repo to VibeKit hosting, live at <subdomain>.vibekit.bot (Fargate container behind nginx, SSL automatic). Use when the code already lives in a GitHub repo; for a starter template instead use vibekit_create_app.",
|
|
72
|
+
"annotations": { "title": "VibeKit Deploy", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false },
|
|
43
73
|
"inputSchema": {
|
|
44
74
|
"type": "object",
|
|
45
75
|
"properties": {
|
|
46
|
-
"repo": {
|
|
47
|
-
|
|
76
|
+
"repo": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "GitHub repo as 'owner/repo' (e.g. '609NFT/vibekit')"
|
|
79
|
+
},
|
|
80
|
+
"subdomain": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
|
|
83
|
+
}
|
|
48
84
|
},
|
|
49
|
-
"required": [
|
|
85
|
+
"required": [
|
|
86
|
+
"repo",
|
|
87
|
+
"subdomain"
|
|
88
|
+
]
|
|
50
89
|
}
|
|
51
90
|
},
|
|
52
91
|
{
|
|
53
92
|
"category": "Hosting & Apps",
|
|
54
93
|
"name": "vibekit_redeploy",
|
|
55
|
-
"
|
|
94
|
+
"title": "VibeKit Redeploy",
|
|
95
|
+
"description": "Redeploy an existing app to pull and ship the latest code. Use after pushing changes to the app's GitHub repo.",
|
|
96
|
+
"annotations": { "title": "VibeKit Redeploy", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false },
|
|
56
97
|
"inputSchema": {
|
|
57
98
|
"type": "object",
|
|
58
99
|
"properties": {
|
|
59
|
-
"appId": {
|
|
100
|
+
"appId": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
103
|
+
}
|
|
60
104
|
},
|
|
61
|
-
"required": [
|
|
105
|
+
"required": [
|
|
106
|
+
"appId"
|
|
107
|
+
]
|
|
62
108
|
}
|
|
63
109
|
},
|
|
64
110
|
{
|
|
65
111
|
"category": "Hosting & Apps",
|
|
66
112
|
"name": "vibekit_app_logs",
|
|
67
|
-
"
|
|
113
|
+
"title": "VibeKit App Logs",
|
|
114
|
+
"description": "Fetch recent container/application logs for an app. Use this to debug crashes, errors, or a deploy that isn't serving.",
|
|
115
|
+
"annotations": { "title": "VibeKit App Logs", "readOnlyHint": true },
|
|
68
116
|
"inputSchema": {
|
|
69
117
|
"type": "object",
|
|
70
118
|
"properties": {
|
|
71
|
-
"appId": {
|
|
72
|
-
|
|
119
|
+
"appId": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
122
|
+
},
|
|
123
|
+
"lines": {
|
|
124
|
+
"type": "number",
|
|
125
|
+
"description": "Number of log lines to retrieve (default 100)"
|
|
126
|
+
}
|
|
73
127
|
},
|
|
74
|
-
"required": [
|
|
128
|
+
"required": [
|
|
129
|
+
"appId"
|
|
130
|
+
]
|
|
75
131
|
}
|
|
76
132
|
},
|
|
77
133
|
{
|
|
78
134
|
"category": "Hosting & Apps",
|
|
79
135
|
"name": "vibekit_restart_app",
|
|
80
|
-
"
|
|
136
|
+
"title": "VibeKit Restart App",
|
|
137
|
+
"description": "Restart a hosted app's container. Use when an app is wedged, or to apply changed environment variables.",
|
|
138
|
+
"annotations": { "title": "VibeKit Restart App", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
81
139
|
"inputSchema": {
|
|
82
140
|
"type": "object",
|
|
83
141
|
"properties": {
|
|
84
|
-
"appId": {
|
|
142
|
+
"appId": {
|
|
143
|
+
"type": "string",
|
|
144
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
145
|
+
}
|
|
85
146
|
},
|
|
86
|
-
"required": [
|
|
147
|
+
"required": [
|
|
148
|
+
"appId"
|
|
149
|
+
]
|
|
87
150
|
}
|
|
88
151
|
},
|
|
89
152
|
{
|
|
90
153
|
"category": "Hosting & Apps",
|
|
91
154
|
"name": "vibekit_stop_app",
|
|
92
|
-
"
|
|
155
|
+
"title": "VibeKit Stop App",
|
|
156
|
+
"description": "Stop a hosted app's container. The app stays in your account and can be brought back with vibekit_start_app. Use to take an app offline without deleting it.",
|
|
157
|
+
"annotations": { "title": "VibeKit Stop App", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
93
158
|
"inputSchema": {
|
|
94
159
|
"type": "object",
|
|
95
160
|
"properties": {
|
|
96
|
-
"appId": {
|
|
161
|
+
"appId": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
164
|
+
}
|
|
97
165
|
},
|
|
98
|
-
"required": [
|
|
166
|
+
"required": [
|
|
167
|
+
"appId"
|
|
168
|
+
]
|
|
99
169
|
}
|
|
100
170
|
},
|
|
101
171
|
{
|
|
102
172
|
"category": "Hosting & Apps",
|
|
103
173
|
"name": "vibekit_start_app",
|
|
104
|
-
"
|
|
174
|
+
"title": "VibeKit Start App",
|
|
175
|
+
"description": "Start a stopped hosted app's container. Use to bring an app stopped via vibekit_stop_app back online.",
|
|
176
|
+
"annotations": { "title": "VibeKit Start App", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
105
177
|
"inputSchema": {
|
|
106
178
|
"type": "object",
|
|
107
179
|
"properties": {
|
|
108
|
-
"appId": {
|
|
180
|
+
"appId": {
|
|
181
|
+
"type": "string",
|
|
182
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
183
|
+
}
|
|
109
184
|
},
|
|
110
|
-
"required": [
|
|
185
|
+
"required": [
|
|
186
|
+
"appId"
|
|
187
|
+
]
|
|
111
188
|
}
|
|
112
189
|
},
|
|
113
190
|
{
|
|
114
191
|
"category": "Hosting & Apps",
|
|
115
192
|
"name": "vibekit_app_env",
|
|
116
|
-
"
|
|
193
|
+
"title": "VibeKit Get Env Vars",
|
|
194
|
+
"description": "Get the environment variables configured for an app (names and values). Read-only — use vibekit_set_env to change them.",
|
|
195
|
+
"annotations": { "title": "VibeKit Get Env Vars", "readOnlyHint": true, "idempotentHint": true },
|
|
117
196
|
"inputSchema": {
|
|
118
197
|
"type": "object",
|
|
119
198
|
"properties": {
|
|
120
|
-
"appId": {
|
|
199
|
+
"appId": {
|
|
200
|
+
"type": "string",
|
|
201
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
202
|
+
}
|
|
121
203
|
},
|
|
122
|
-
"required": [
|
|
204
|
+
"required": [
|
|
205
|
+
"appId"
|
|
206
|
+
]
|
|
123
207
|
}
|
|
124
208
|
},
|
|
125
209
|
{
|
|
126
210
|
"category": "Hosting & Apps",
|
|
127
211
|
"name": "vibekit_set_env",
|
|
128
|
-
"
|
|
212
|
+
"title": "VibeKit Set Env Vars",
|
|
213
|
+
"description": "Set or update environment variables for an app (merges with existing). The app must be restarted or redeployed for changes to take effect.",
|
|
214
|
+
"annotations": { "title": "VibeKit Set Env Vars", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
129
215
|
"inputSchema": {
|
|
130
216
|
"type": "object",
|
|
131
217
|
"properties": {
|
|
132
|
-
"appId": {
|
|
133
|
-
|
|
218
|
+
"appId": {
|
|
219
|
+
"type": "string",
|
|
220
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
221
|
+
},
|
|
222
|
+
"vars": {
|
|
223
|
+
"type": "object",
|
|
224
|
+
"description": "Key-value pairs to set as environment variables, e.g. { \"API_KEY\": \"...\", \"NODE_ENV\": \"production\" }"
|
|
225
|
+
}
|
|
134
226
|
},
|
|
135
|
-
"required": [
|
|
227
|
+
"required": [
|
|
228
|
+
"appId",
|
|
229
|
+
"vars"
|
|
230
|
+
]
|
|
136
231
|
}
|
|
137
232
|
},
|
|
138
233
|
{
|
|
139
234
|
"category": "Hosting & Apps",
|
|
140
235
|
"name": "vibekit_delete_app",
|
|
141
|
-
"
|
|
236
|
+
"title": "VibeKit Delete App",
|
|
237
|
+
"description": "Permanently delete a hosted app — stops the container and removes its workspace, database, env vars, and subdomain. Irreversible (the GitHub repo is NOT touched). Confirm with the user before calling.",
|
|
238
|
+
"annotations": { "title": "VibeKit Delete App", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true },
|
|
142
239
|
"inputSchema": {
|
|
143
240
|
"type": "object",
|
|
144
241
|
"properties": {
|
|
145
|
-
"appId": {
|
|
242
|
+
"appId": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
245
|
+
}
|
|
146
246
|
},
|
|
147
|
-
"required": [
|
|
247
|
+
"required": [
|
|
248
|
+
"appId"
|
|
249
|
+
]
|
|
148
250
|
}
|
|
149
251
|
},
|
|
150
252
|
{
|
|
151
253
|
"category": "AI Agent",
|
|
152
254
|
"name": "vibekit_chat",
|
|
153
|
-
"
|
|
255
|
+
"title": "VibeKit Chat with Agent",
|
|
256
|
+
"description": "Send a message to an app's built-in AI coding agent, which reads, writes, and modifies the app's code and redeploys it. Use for 'build/make a change to my app' requests. If the agent finishes quickly you get its reply directly. Otherwise you get status:'working' — do NOT resend; instead give the user LIVE progress: poll vibekit_agent_status every few seconds and relay the current step from activity.status ('editing the homepage…', 'deploying…') until activity.done, then read vibekit_agent_history for the final reply.",
|
|
257
|
+
"annotations": { "title": "VibeKit Chat with Agent", "readOnlyHint": false, "destructiveHint": false, "openWorldHint": true },
|
|
154
258
|
"inputSchema": {
|
|
155
259
|
"type": "object",
|
|
156
260
|
"properties": {
|
|
157
|
-
"appId": {
|
|
158
|
-
|
|
261
|
+
"appId": {
|
|
262
|
+
"type": "string",
|
|
263
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
264
|
+
},
|
|
265
|
+
"message": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"description": "What you want the agent to do or change — be specific about features, design, and behavior."
|
|
268
|
+
}
|
|
159
269
|
},
|
|
160
|
-
"required": [
|
|
270
|
+
"required": [
|
|
271
|
+
"appId",
|
|
272
|
+
"message"
|
|
273
|
+
]
|
|
161
274
|
}
|
|
162
275
|
},
|
|
163
276
|
{
|
|
164
277
|
"category": "AI Agent",
|
|
165
278
|
"name": "vibekit_agent_status",
|
|
166
|
-
"
|
|
279
|
+
"title": "VibeKit Agent Status",
|
|
280
|
+
"description": "Check whether an app's AI agent is idle or working, and get its LIVE progress. Returns activity.status = the current human-readable build step (e.g. 'editing index.html', 'deploying'), activity.steps = the steps so far, and activity.done = whether the turn finished. Poll this every few seconds while a build is running and relay activity.status to the user so they see progress. Once activity.done is true the response also includes liveCheck = a server-side fetch of the deployed page ({ url, ok, httpStatus, title }); use it to confirm the app is live and renders — do NOT curl/fetch the URL yourself, your sandbox may block it.",
|
|
281
|
+
"annotations": { "title": "VibeKit Agent Status", "readOnlyHint": true },
|
|
167
282
|
"inputSchema": {
|
|
168
283
|
"type": "object",
|
|
169
284
|
"properties": {
|
|
170
|
-
"appId": {
|
|
285
|
+
"appId": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
288
|
+
}
|
|
171
289
|
},
|
|
172
|
-
"required": [
|
|
290
|
+
"required": [
|
|
291
|
+
"appId"
|
|
292
|
+
]
|
|
173
293
|
}
|
|
174
294
|
},
|
|
175
295
|
{
|
|
176
296
|
"category": "AI Agent",
|
|
177
297
|
"name": "vibekit_agent_history",
|
|
178
|
-
"
|
|
298
|
+
"title": "VibeKit Agent History",
|
|
299
|
+
"description": "Get the recent chat history between the user and an app's AI agent.",
|
|
300
|
+
"annotations": { "title": "VibeKit Agent History", "readOnlyHint": true },
|
|
179
301
|
"inputSchema": {
|
|
180
302
|
"type": "object",
|
|
181
303
|
"properties": {
|
|
182
|
-
"appId": {
|
|
183
|
-
|
|
304
|
+
"appId": {
|
|
305
|
+
"type": "string",
|
|
306
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
307
|
+
},
|
|
308
|
+
"limit": {
|
|
309
|
+
"type": "number",
|
|
310
|
+
"description": "Maximum number of messages to return (default 20)"
|
|
311
|
+
}
|
|
184
312
|
},
|
|
185
|
-
"required": [
|
|
313
|
+
"required": [
|
|
314
|
+
"appId"
|
|
315
|
+
]
|
|
186
316
|
}
|
|
187
317
|
},
|
|
188
318
|
{
|
|
189
319
|
"category": "Database",
|
|
190
320
|
"name": "vibekit_enable_database",
|
|
191
|
-
"
|
|
321
|
+
"title": "VibeKit Enable Database",
|
|
322
|
+
"description": "Provision a Postgres database for an app (idempotent — safe if already enabled). Required before the vibekit_db_* tools work. Note: free-tier apps need the $3/mo Database add-on.",
|
|
323
|
+
"annotations": { "title": "VibeKit Enable Database", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
192
324
|
"inputSchema": {
|
|
193
325
|
"type": "object",
|
|
194
326
|
"properties": {
|
|
195
|
-
"appId": {
|
|
327
|
+
"appId": {
|
|
328
|
+
"type": "string",
|
|
329
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
330
|
+
}
|
|
196
331
|
},
|
|
197
|
-
"required": [
|
|
332
|
+
"required": [
|
|
333
|
+
"appId"
|
|
334
|
+
]
|
|
198
335
|
}
|
|
199
336
|
},
|
|
200
337
|
{
|
|
201
338
|
"category": "Database",
|
|
202
339
|
"name": "vibekit_database_status",
|
|
203
|
-
"
|
|
340
|
+
"title": "VibeKit Database Status",
|
|
341
|
+
"description": "Get an app's database status and connection info (whether it's provisioned, frozen, etc.).",
|
|
342
|
+
"annotations": { "title": "VibeKit Database Status", "readOnlyHint": true, "idempotentHint": true },
|
|
204
343
|
"inputSchema": {
|
|
205
344
|
"type": "object",
|
|
206
345
|
"properties": {
|
|
207
|
-
"appId": {
|
|
346
|
+
"appId": {
|
|
347
|
+
"type": "string",
|
|
348
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
349
|
+
}
|
|
208
350
|
},
|
|
209
|
-
"required": [
|
|
351
|
+
"required": [
|
|
352
|
+
"appId"
|
|
353
|
+
]
|
|
210
354
|
}
|
|
211
355
|
},
|
|
212
356
|
{
|
|
213
357
|
"category": "Database",
|
|
214
358
|
"name": "vibekit_db_schema",
|
|
215
|
-
"
|
|
359
|
+
"title": "VibeKit Database Schema",
|
|
360
|
+
"description": "Get an app's database schema — every table and its columns. Always call this before writing a query with vibekit_db_query.",
|
|
361
|
+
"annotations": { "title": "VibeKit Database Schema", "readOnlyHint": true, "idempotentHint": true },
|
|
216
362
|
"inputSchema": {
|
|
217
363
|
"type": "object",
|
|
218
364
|
"properties": {
|
|
219
|
-
"appId": {
|
|
365
|
+
"appId": {
|
|
366
|
+
"type": "string",
|
|
367
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
368
|
+
}
|
|
220
369
|
},
|
|
221
|
-
"required": [
|
|
370
|
+
"required": [
|
|
371
|
+
"appId"
|
|
372
|
+
]
|
|
222
373
|
}
|
|
223
374
|
},
|
|
224
375
|
{
|
|
225
376
|
"category": "Database",
|
|
226
377
|
"name": "vibekit_db_query",
|
|
227
|
-
"
|
|
378
|
+
"title": "VibeKit Run SQL Query",
|
|
379
|
+
"description": "Run a read-only SQL query against an app's Postgres database and return up to 200 result rows. SELECT only — writes and DDL (INSERT/UPDATE/DELETE/ALTER/DROP/…) are rejected server-side; use vibekit_chat or vibekit_submit_task to have the agent make data or schema changes. Call vibekit_db_schema first to learn the tables. SQL string, max 5000 chars.",
|
|
380
|
+
"annotations": { "title": "VibeKit Run SQL Query", "readOnlyHint": true, "idempotentHint": true },
|
|
228
381
|
"inputSchema": {
|
|
229
382
|
"type": "object",
|
|
230
383
|
"properties": {
|
|
231
|
-
"appId": {
|
|
232
|
-
|
|
384
|
+
"appId": {
|
|
385
|
+
"type": "string",
|
|
386
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
387
|
+
},
|
|
388
|
+
"sql": {
|
|
389
|
+
"type": "string",
|
|
390
|
+
"description": "SQL to execute (max 5000 chars). Reads and writes both allowed."
|
|
391
|
+
}
|
|
233
392
|
},
|
|
234
|
-
"required": [
|
|
393
|
+
"required": [
|
|
394
|
+
"appId",
|
|
395
|
+
"sql"
|
|
396
|
+
]
|
|
235
397
|
}
|
|
236
398
|
},
|
|
237
399
|
{
|
|
238
400
|
"category": "Database",
|
|
239
401
|
"name": "vibekit_db_table",
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
"
|
|
247
|
-
|
|
402
|
+
"title": "VibeKit Browse Table",
|
|
403
|
+
"description": "Browse rows of one table with pagination and optional sorting — a quick read-only alternative to hand-writing a SELECT.",
|
|
404
|
+
"annotations": { "title": "VibeKit Browse Table", "readOnlyHint": true, "idempotentHint": true },
|
|
405
|
+
"inputSchema": {
|
|
406
|
+
"type": "object",
|
|
407
|
+
"properties": {
|
|
408
|
+
"appId": {
|
|
409
|
+
"type": "string",
|
|
410
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
411
|
+
},
|
|
412
|
+
"table": {
|
|
413
|
+
"type": "string",
|
|
414
|
+
"description": "Table name (see vibekit_db_schema)"
|
|
415
|
+
},
|
|
416
|
+
"limit": {
|
|
417
|
+
"type": "number",
|
|
418
|
+
"description": "Max rows to return (default 50, max 200)"
|
|
419
|
+
},
|
|
420
|
+
"offset": {
|
|
421
|
+
"type": "number",
|
|
422
|
+
"description": "Row offset for pagination (default 0)"
|
|
423
|
+
}
|
|
248
424
|
},
|
|
249
|
-
"required": [
|
|
425
|
+
"required": [
|
|
426
|
+
"appId",
|
|
427
|
+
"table"
|
|
428
|
+
]
|
|
250
429
|
}
|
|
251
430
|
},
|
|
252
431
|
{
|
|
253
432
|
"category": "Hosting & Apps",
|
|
254
433
|
"name": "vibekit_list_deploys",
|
|
255
|
-
"
|
|
434
|
+
"title": "VibeKit List Deploys",
|
|
435
|
+
"description": "List an app's recent deploys, newest first, with status and commit info. Find a deployId here to pass to vibekit_rollback_deploy.",
|
|
436
|
+
"annotations": { "title": "VibeKit List Deploys", "readOnlyHint": true, "idempotentHint": true },
|
|
256
437
|
"inputSchema": {
|
|
257
438
|
"type": "object",
|
|
258
439
|
"properties": {
|
|
259
|
-
"appId": {
|
|
260
|
-
|
|
440
|
+
"appId": {
|
|
441
|
+
"type": "string",
|
|
442
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
443
|
+
},
|
|
444
|
+
"limit": {
|
|
445
|
+
"type": "number",
|
|
446
|
+
"description": "Max deploys to return (default 20, max 50)"
|
|
447
|
+
}
|
|
261
448
|
},
|
|
262
|
-
"required": [
|
|
449
|
+
"required": [
|
|
450
|
+
"appId"
|
|
451
|
+
]
|
|
263
452
|
}
|
|
264
453
|
},
|
|
265
454
|
{
|
|
266
455
|
"category": "Hosting & Apps",
|
|
267
456
|
"name": "vibekit_rollback_deploy",
|
|
268
|
-
"
|
|
457
|
+
"title": "VibeKit Rollback Deploy",
|
|
458
|
+
"description": "Roll an app back to a previous deploy (get the deployId from vibekit_list_deploys). The container restarts on the rolled-back build; reversible by rolling forward again.",
|
|
459
|
+
"annotations": { "title": "VibeKit Rollback Deploy", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
269
460
|
"inputSchema": {
|
|
270
461
|
"type": "object",
|
|
271
462
|
"properties": {
|
|
272
|
-
"appId": {
|
|
273
|
-
|
|
463
|
+
"appId": {
|
|
464
|
+
"type": "string",
|
|
465
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
466
|
+
},
|
|
467
|
+
"deployId": {
|
|
468
|
+
"type": "string",
|
|
469
|
+
"description": "Deploy ID to roll back to (from vibekit_list_deploys)"
|
|
470
|
+
}
|
|
274
471
|
},
|
|
275
|
-
"required": [
|
|
472
|
+
"required": [
|
|
473
|
+
"appId",
|
|
474
|
+
"deployId"
|
|
475
|
+
]
|
|
276
476
|
}
|
|
277
477
|
},
|
|
278
478
|
{
|
|
279
479
|
"category": "QA",
|
|
280
480
|
"name": "vibekit_run_qa",
|
|
281
|
-
"
|
|
481
|
+
"title": "VibeKit Run QA",
|
|
482
|
+
"description": "Kick off an automated QA run (headless-browser checks) against a hosted app. Poll vibekit_qa_status for results.",
|
|
483
|
+
"annotations": { "title": "VibeKit Run QA", "readOnlyHint": false, "destructiveHint": false },
|
|
282
484
|
"inputSchema": {
|
|
283
485
|
"type": "object",
|
|
284
486
|
"properties": {
|
|
285
|
-
"appId": {
|
|
487
|
+
"appId": {
|
|
488
|
+
"type": "string",
|
|
489
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
490
|
+
}
|
|
286
491
|
},
|
|
287
|
-
"required": [
|
|
492
|
+
"required": [
|
|
493
|
+
"appId"
|
|
494
|
+
]
|
|
288
495
|
}
|
|
289
496
|
},
|
|
290
497
|
{
|
|
291
498
|
"category": "QA",
|
|
292
499
|
"name": "vibekit_qa_status",
|
|
293
|
-
"
|
|
500
|
+
"title": "VibeKit QA Status",
|
|
501
|
+
"description": "Get the latest automated QA results and status for an app.",
|
|
502
|
+
"annotations": { "title": "VibeKit QA Status", "readOnlyHint": true },
|
|
294
503
|
"inputSchema": {
|
|
295
504
|
"type": "object",
|
|
296
505
|
"properties": {
|
|
297
|
-
"appId": {
|
|
506
|
+
"appId": {
|
|
507
|
+
"type": "string",
|
|
508
|
+
"description": "App ID (from vibekit_list_apps)"
|
|
509
|
+
}
|
|
298
510
|
},
|
|
299
|
-
"required": [
|
|
511
|
+
"required": [
|
|
512
|
+
"appId"
|
|
513
|
+
]
|
|
300
514
|
}
|
|
301
515
|
},
|
|
302
516
|
{
|
|
303
517
|
"category": "Tasks",
|
|
304
518
|
"name": "vibekit_submit_task",
|
|
305
|
-
"
|
|
306
|
-
"
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
"
|
|
312
|
-
|
|
313
|
-
|
|
519
|
+
"title": "VibeKit Submit Task",
|
|
520
|
+
"description": "Submit an autonomous coding task. The AI writes the code, commits to GitHub, and (by default) deploys to <subdomain>.vibekit.bot. Returns a taskId — poll vibekit_get_task or block with vibekit_wait_for_task. Use for 'build X' or 'change X' work against a repo.",
|
|
521
|
+
"annotations": { "title": "VibeKit Submit Task", "readOnlyHint": false, "destructiveHint": false, "openWorldHint": true },
|
|
522
|
+
"inputSchema": {
|
|
523
|
+
"type": "object",
|
|
524
|
+
"properties": {
|
|
525
|
+
"task": {
|
|
526
|
+
"type": "string",
|
|
527
|
+
"description": "What you want built or changed. Be specific about features, design, and behavior."
|
|
528
|
+
},
|
|
529
|
+
"repo": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"description": "GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted."
|
|
532
|
+
},
|
|
533
|
+
"branch": {
|
|
534
|
+
"type": "string",
|
|
535
|
+
"description": "Git branch to work on (default 'main')"
|
|
536
|
+
},
|
|
537
|
+
"deploy": {
|
|
538
|
+
"type": "boolean",
|
|
539
|
+
"description": "Auto-deploy to <subdomain>.vibekit.bot when done (default true)"
|
|
540
|
+
},
|
|
541
|
+
"callbackUrl": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"description": "Optional webhook URL to receive a task-completion notification."
|
|
544
|
+
}
|
|
314
545
|
},
|
|
315
|
-
"required": [
|
|
546
|
+
"required": [
|
|
547
|
+
"task"
|
|
548
|
+
]
|
|
316
549
|
}
|
|
317
550
|
},
|
|
318
551
|
{
|
|
319
552
|
"category": "Tasks",
|
|
320
553
|
"name": "vibekit_get_task",
|
|
321
|
-
"
|
|
554
|
+
"title": "VibeKit Get Task",
|
|
555
|
+
"description": "Get the status and result of a task submitted via vibekit_submit_task.",
|
|
556
|
+
"annotations": { "title": "VibeKit Get Task", "readOnlyHint": true },
|
|
322
557
|
"inputSchema": {
|
|
323
558
|
"type": "object",
|
|
324
559
|
"properties": {
|
|
325
|
-
"taskId": {
|
|
560
|
+
"taskId": {
|
|
561
|
+
"type": "string",
|
|
562
|
+
"description": "Task ID returned from vibekit_submit_task"
|
|
563
|
+
}
|
|
326
564
|
},
|
|
327
|
-
"required": [
|
|
565
|
+
"required": [
|
|
566
|
+
"taskId"
|
|
567
|
+
]
|
|
328
568
|
}
|
|
329
569
|
},
|
|
330
570
|
{
|
|
331
571
|
"category": "Tasks",
|
|
332
572
|
"name": "vibekit_list_tasks",
|
|
333
|
-
"
|
|
334
|
-
"
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
573
|
+
"title": "VibeKit List Tasks",
|
|
574
|
+
"description": "List recent coding tasks, optionally filtered by status.",
|
|
575
|
+
"annotations": { "title": "VibeKit List Tasks", "readOnlyHint": true, "idempotentHint": true },
|
|
576
|
+
"inputSchema": {
|
|
577
|
+
"type": "object",
|
|
578
|
+
"properties": {
|
|
579
|
+
"limit": {
|
|
580
|
+
"type": "number",
|
|
581
|
+
"description": "Max number of tasks to return (default 10)"
|
|
582
|
+
},
|
|
583
|
+
"status": {
|
|
584
|
+
"type": "string",
|
|
585
|
+
"enum": [
|
|
586
|
+
"pending",
|
|
587
|
+
"running",
|
|
588
|
+
"completed",
|
|
589
|
+
"failed"
|
|
590
|
+
],
|
|
591
|
+
"description": "Filter by task status"
|
|
592
|
+
}
|
|
339
593
|
}
|
|
340
594
|
}
|
|
341
595
|
},
|
|
342
596
|
{
|
|
343
597
|
"category": "Tasks",
|
|
344
598
|
"name": "vibekit_wait_for_task",
|
|
345
|
-
"
|
|
599
|
+
"title": "VibeKit Wait for Task",
|
|
600
|
+
"description": "Block until a submitted task finishes (or the timeout), polling every 5 seconds, then return its result. Use right after vibekit_submit_task when you want the final result inline.",
|
|
601
|
+
"annotations": { "title": "VibeKit Wait for Task", "readOnlyHint": true },
|
|
346
602
|
"inputSchema": {
|
|
347
603
|
"type": "object",
|
|
348
604
|
"properties": {
|
|
349
|
-
"taskId": {
|
|
350
|
-
|
|
605
|
+
"taskId": {
|
|
606
|
+
"type": "string",
|
|
607
|
+
"description": "Task ID to wait for (from vibekit_submit_task)"
|
|
608
|
+
},
|
|
609
|
+
"timeoutSeconds": {
|
|
610
|
+
"type": "number",
|
|
611
|
+
"description": "Max seconds to wait (default 300; the remote connector caps this at 120)"
|
|
612
|
+
}
|
|
351
613
|
},
|
|
352
|
-
"required": [
|
|
614
|
+
"required": [
|
|
615
|
+
"taskId"
|
|
616
|
+
]
|
|
353
617
|
}
|
|
354
618
|
},
|
|
355
619
|
{
|
|
356
620
|
"category": "Tasks",
|
|
357
621
|
"name": "vibekit_cancel_task",
|
|
358
|
-
"
|
|
622
|
+
"title": "VibeKit Cancel Task",
|
|
623
|
+
"description": "Cancel a running task by taskId. No-op if it has already finished.",
|
|
624
|
+
"annotations": { "title": "VibeKit Cancel Task", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": true },
|
|
359
625
|
"inputSchema": {
|
|
360
626
|
"type": "object",
|
|
361
627
|
"properties": {
|
|
362
|
-
"taskId": {
|
|
628
|
+
"taskId": {
|
|
629
|
+
"type": "string",
|
|
630
|
+
"description": "Task ID to cancel (from vibekit_submit_task)"
|
|
631
|
+
}
|
|
363
632
|
},
|
|
364
|
-
"required": [
|
|
633
|
+
"required": [
|
|
634
|
+
"taskId"
|
|
635
|
+
]
|
|
365
636
|
}
|
|
366
637
|
},
|
|
367
638
|
{
|
|
368
639
|
"category": "Schedules",
|
|
369
640
|
"name": "vibekit_create_schedule",
|
|
370
|
-
"
|
|
371
|
-
"
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
"
|
|
377
|
-
|
|
641
|
+
"title": "VibeKit Create Schedule",
|
|
642
|
+
"description": "Create a recurring coding task that the AI runs automatically on a cron schedule (e.g. a weekly SEO pass). Use for 'every Monday, do X to my repo' requests.",
|
|
643
|
+
"annotations": { "title": "VibeKit Create Schedule", "readOnlyHint": false, "destructiveHint": false, "idempotentHint": false },
|
|
644
|
+
"inputSchema": {
|
|
645
|
+
"type": "object",
|
|
646
|
+
"properties": {
|
|
647
|
+
"task": {
|
|
648
|
+
"type": "string",
|
|
649
|
+
"description": "What to do on each run, e.g. 'Improve SEO and page speed'"
|
|
650
|
+
},
|
|
651
|
+
"repo": {
|
|
652
|
+
"type": "string",
|
|
653
|
+
"description": "GitHub repo as 'owner/repo'"
|
|
654
|
+
},
|
|
655
|
+
"cron": {
|
|
656
|
+
"type": "string",
|
|
657
|
+
"description": "Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC"
|
|
658
|
+
},
|
|
659
|
+
"name": {
|
|
660
|
+
"type": "string",
|
|
661
|
+
"description": "Friendly name for the schedule (optional)"
|
|
662
|
+
}
|
|
378
663
|
},
|
|
379
|
-
"required": [
|
|
664
|
+
"required": [
|
|
665
|
+
"task",
|
|
666
|
+
"repo",
|
|
667
|
+
"cron"
|
|
668
|
+
]
|
|
380
669
|
}
|
|
381
670
|
},
|
|
382
671
|
{
|
|
383
672
|
"category": "Schedules",
|
|
384
673
|
"name": "vibekit_list_schedules",
|
|
385
|
-
"
|
|
386
|
-
"
|
|
674
|
+
"title": "VibeKit List Schedules",
|
|
675
|
+
"description": "List all of the account's scheduled recurring tasks.",
|
|
676
|
+
"annotations": { "title": "VibeKit List Schedules", "readOnlyHint": true, "idempotentHint": true },
|
|
677
|
+
"inputSchema": {
|
|
678
|
+
"type": "object",
|
|
679
|
+
"properties": {}
|
|
680
|
+
}
|
|
387
681
|
},
|
|
388
682
|
{
|
|
389
683
|
"category": "Schedules",
|
|
390
684
|
"name": "vibekit_delete_schedule",
|
|
391
|
-
"
|
|
685
|
+
"title": "VibeKit Delete Schedule",
|
|
686
|
+
"description": "Delete a scheduled recurring task by scheduleId. Confirm with the user first.",
|
|
687
|
+
"annotations": { "title": "VibeKit Delete Schedule", "readOnlyHint": false, "destructiveHint": true, "idempotentHint": true },
|
|
392
688
|
"inputSchema": {
|
|
393
689
|
"type": "object",
|
|
394
690
|
"properties": {
|
|
395
|
-
"scheduleId": {
|
|
691
|
+
"scheduleId": {
|
|
692
|
+
"type": "string",
|
|
693
|
+
"description": "Schedule ID to delete (from vibekit_list_schedules)"
|
|
694
|
+
}
|
|
396
695
|
},
|
|
397
|
-
"required": [
|
|
696
|
+
"required": [
|
|
697
|
+
"scheduleId"
|
|
698
|
+
]
|
|
398
699
|
}
|
|
399
700
|
},
|
|
400
701
|
{
|
|
401
702
|
"category": "Account",
|
|
402
703
|
"name": "vibekit_account",
|
|
403
|
-
"
|
|
404
|
-
"
|
|
704
|
+
"title": "VibeKit Account Info",
|
|
705
|
+
"description": "Get VibeKit account info: plan, credit balance, and usage.",
|
|
706
|
+
"annotations": { "title": "VibeKit Account Info", "readOnlyHint": true, "idempotentHint": true },
|
|
707
|
+
"inputSchema": {
|
|
708
|
+
"type": "object",
|
|
709
|
+
"properties": {}
|
|
710
|
+
}
|
|
405
711
|
},
|
|
406
712
|
{
|
|
407
713
|
"category": "Skills",
|
|
408
714
|
"name": "vibekit_list_skills",
|
|
409
|
-
"
|
|
715
|
+
"title": "VibeKit List Skills",
|
|
716
|
+
"description": "List available implementation skills (IDs, names, descriptions, tags) from the VibeKit skills registry. Discover skills here before fetching one with vibekit_get_skill.",
|
|
717
|
+
"annotations": { "title": "VibeKit List Skills", "readOnlyHint": true, "openWorldHint": true },
|
|
410
718
|
"inputSchema": {
|
|
411
719
|
"type": "object",
|
|
412
720
|
"properties": {
|
|
413
|
-
"tag": {
|
|
721
|
+
"tag": {
|
|
722
|
+
"type": "string",
|
|
723
|
+
"description": "Filter skills by tag (e.g. 'react', 'database', 'security')"
|
|
724
|
+
}
|
|
414
725
|
}
|
|
415
726
|
}
|
|
416
727
|
},
|
|
417
728
|
{
|
|
418
729
|
"category": "Skills",
|
|
419
730
|
"name": "vibekit_get_skill",
|
|
420
|
-
"
|
|
731
|
+
"title": "VibeKit Get Skill",
|
|
732
|
+
"description": "Fetch the full content of a specific skill — implementation patterns, code examples, and best practices for a domain. Fetch on-demand when you need guidance on a specific topic.",
|
|
733
|
+
"annotations": { "title": "VibeKit Get Skill", "readOnlyHint": true, "openWorldHint": true },
|
|
421
734
|
"inputSchema": {
|
|
422
735
|
"type": "object",
|
|
423
736
|
"properties": {
|
|
424
|
-
"id": {
|
|
737
|
+
"id": {
|
|
738
|
+
"type": "string",
|
|
739
|
+
"description": "Skill ID from vibekit_list_skills (e.g. 'nextjs', 'trpc', 'auth')"
|
|
740
|
+
}
|
|
425
741
|
},
|
|
426
|
-
"required": [
|
|
742
|
+
"required": [
|
|
743
|
+
"id"
|
|
744
|
+
]
|
|
427
745
|
}
|
|
428
746
|
}
|
|
429
747
|
]
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
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.
|