Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get VibeKit account info: plan, credit balance, and usage.
This tool takes no arguments.
Get VibeKit account info: plan, credit balance, and usage.
No arguments.
{
"type": "object",
"properties": {}
}Get the recent chat history between the user and an app's AI agent.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| limit | number | Maximum number of messages to return (default 20) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"limit": {
"type": "number",
"description": "Maximum number of messages to return (default 20)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Get the environment variables configured for an app (names and values). Read-only — use vibekit_set_env to change them.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Fetch recent container/application logs for an app. Use this to debug crashes, errors, or a deploy that isn't serving.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| lines | number | Number of log lines to retrieve (default 100) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"lines": {
"type": "number",
"description": "Number of log lines to retrieve (default 100)"
}
}
}Cancel a running task by taskId. No-op if it has already finished.
| Argument | Type | Description |
|---|---|---|
| taskId* | string | Task ID to cancel (from vibekit_submit_task) |
{
"type": "object",
"required": [
"taskId"
],
"properties": {
"taskId": {
"type": "string",
"description": "Task ID to cancel (from vibekit_submit_task)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| message* | string | What you want the agent to do or change — be specific about features, design, and behavior. |
{
"type": "object",
"required": [
"appId",
"message"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"message": {
"type": "string",
"description": "What you want the agent to do or change — be specific about features, design, and behavior."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| template* | string | Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api') |
| subdomain* | string | Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens. |
{
"type": "object",
"required": [
"template",
"subdomain"
],
"properties": {
"template": {
"type": "string",
"description": "Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api')"
},
"subdomain": {
"type": "string",
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| cron* | string | Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC |
| name | string | Friendly name for the schedule (optional) |
| repo* | string | GitHub repo as 'owner/repo' |
| task* | string | What to do on each run, e.g. 'Improve SEO and page speed' |
{
"type": "object",
"required": [
"task",
"repo",
"cron"
],
"properties": {
"cron": {
"type": "string",
"description": "Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC"
},
"name": {
"type": "string",
"description": "Friendly name for the schedule (optional)"
},
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo'"
},
"task": {
"type": "string",
"description": "What to do on each run, e.g. 'Improve SEO and page speed'"
}
}
}Get an app's database status and connection info (whether it's provisioned, frozen, etc.).
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| sql* | string | SQL to execute (max 5000 chars). Reads and writes both allowed. |
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId",
"sql"
],
"properties": {
"sql": {
"type": "string",
"description": "SQL to execute (max 5000 chars). Reads and writes both allowed."
},
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Get an app's database schema — every table and its columns. Always call this before writing a query with vibekit_db_query.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Browse rows of one table with pagination and optional sorting — a quick read-only alternative to hand-writing a SELECT.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| limit | number | Max rows to return (default 50, max 200) |
| table* | string | Table name (see vibekit_db_schema) |
| offset | number | Row offset for pagination (default 0) |
{
"type": "object",
"required": [
"appId",
"table"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"limit": {
"type": "number",
"description": "Max rows to return (default 50, max 200)"
},
"table": {
"type": "string",
"description": "Table name (see vibekit_db_schema)"
},
"offset": {
"type": "number",
"description": "Row offset for pagination (default 0)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Delete a scheduled recurring task by scheduleId. Confirm with the user first.
| Argument | Type | Description |
|---|---|---|
| scheduleId* | string | Schedule ID to delete (from vibekit_list_schedules) |
{
"type": "object",
"required": [
"scheduleId"
],
"properties": {
"scheduleId": {
"type": "string",
"description": "Schedule ID to delete (from vibekit_list_schedules)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| repo* | string | GitHub repo as 'owner/repo' (e.g. 'your-username/my-app') |
| subdomain* | string | Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens. |
{
"type": "object",
"required": [
"repo",
"subdomain"
],
"properties": {
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo' (e.g. 'your-username/my-app')"
},
"subdomain": {
"type": "string",
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Get full details for one hosted app — status, subdomain/URL, repo, runtime, and database/domain config. Use the appId from vibekit_list_apps.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | Skill ID from vibekit_list_skills (e.g. 'nextjs', 'trpc', 'auth') |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Skill ID from vibekit_list_skills (e.g. 'nextjs', 'trpc', 'auth')"
}
}
}Get the status and result of a task submitted via vibekit_submit_task.
| Argument | Type | Description |
|---|---|---|
| taskId* | string | Task ID returned from vibekit_submit_task |
{
"type": "object",
"required": [
"taskId"
],
"properties": {
"taskId": {
"type": "string",
"description": "Task ID returned from vibekit_submit_task"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}List an app's recent deploys, newest first, with status and commit info. Find a deployId here to pass to vibekit_rollback_deploy.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| limit | number | Max deploys to return (default 20, max 50) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"limit": {
"type": "number",
"description": "Max deploys to return (default 20, max 50)"
}
}
}List all of the account's scheduled recurring tasks.
No arguments.
{
"type": "object",
"properties": {}
}List available implementation skills (IDs, names, descriptions, tags) from the VibeKit skills registry. Discover skills here before fetching one with vibekit_get_skill.
| Argument | Type | Description |
|---|---|---|
| tag | string | Filter skills by tag (e.g. 'react', 'database', 'security') |
{
"type": "object",
"properties": {
"tag": {
"type": "string",
"description": "Filter skills by tag (e.g. 'react', 'database', 'security')"
}
}
}List recent coding tasks, optionally filtered by status.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max number of tasks to return (default 10) |
| status | string | Filter by task status |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max number of tasks to return (default 10)"
},
"status": {
"enum": [
"pending",
"running",
"completed",
"failed"
],
"type": "string",
"description": "Filter by task status"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}Get the latest automated QA results and status for an app.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Redeploy an existing app to pull and ship the latest code. Use after pushing changes to the app's GitHub repo.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Restart a hosted app's container. Use when an app is wedged, or to apply changed environment variables.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
| deployId* | string | Deploy ID to roll back to (from vibekit_list_deploys) |
{
"type": "object",
"required": [
"appId",
"deployId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
},
"deployId": {
"type": "string",
"description": "Deploy ID to roll back to (from vibekit_list_deploys)"
}
}
}Kick off an automated QA run (headless-browser checks) against a hosted app. Poll vibekit_qa_status for results.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Set or update environment variables for an app (merges with existing). The app must be restarted or redeployed for changes to take effect.
| Argument | Type | Description |
|---|---|---|
| vars* | object | Key-value pairs to set as environment variables, e.g. { "API_KEY": "...", "NODE_ENV": "production" } |
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId",
"vars"
],
"properties": {
"vars": {
"type": "object",
"description": "Key-value pairs to set as environment variables, e.g. { \"API_KEY\": \"...\", \"NODE_ENV\": \"production\" }"
},
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}Start a stopped hosted app's container. Use to bring an app stopped via vibekit_stop_app back online.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| appId* | string | App ID (from vibekit_list_apps) |
{
"type": "object",
"required": [
"appId"
],
"properties": {
"appId": {
"type": "string",
"description": "App ID (from vibekit_list_apps)"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| repo | string | GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted. |
| task* | string | What you want built or changed. Be specific about features, design, and behavior. |
| branch | string | Git branch to work on (default 'main') |
| deploy | boolean | Auto-deploy to <subdomain>.vibekit.bot when done (default true) |
| callbackUrl | string | Optional webhook URL to receive a task-completion notification. |
{
"type": "object",
"required": [
"task"
],
"properties": {
"repo": {
"type": "string",
"description": "GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted."
},
"task": {
"type": "string",
"description": "What you want built or changed. Be specific about features, design, and behavior."
},
"branch": {
"type": "string",
"description": "Git branch to work on (default 'main')"
},
"deploy": {
"type": "boolean",
"description": "Auto-deploy to <subdomain>.vibekit.bot when done (default true)"
},
"callbackUrl": {
"type": "string",
"description": "Optional webhook URL to receive a task-completion notification."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| taskId* | string | Task ID to wait for (from vibekit_submit_task) |
| timeoutSeconds | number | Max seconds to wait (default 300; the remote connector caps this at 120) |
{
"type": "object",
"required": [
"taskId"
],
"properties": {
"taskId": {
"type": "string",
"description": "Task ID to wait for (from vibekit_submit_task)"
},
"timeoutSeconds": {
"type": "number",
"description": "Max seconds to wait (default 300; the remote connector caps this at 120)"
}
}
}