← The evidence ledger
Evidence row 574922
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint c9bc6137-a070-4074-b489-46d739111de1
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 32865482762240725b14d3c20a34ca3adbc206ed95f81a5e85d503ea94aa5b3c
- Leaf
- 0x0b8d0e59c6dc3a96a4a32f545670a2d5994bb3e1c619f38910fa98d776aef198
What was observed
{
"count": 36,
"tools": [
{
"description": "Get VibeKit account info: plan, credit balance, and usage.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "vibekit_account"
},
{
"description": "Get the recent chat history between the user and an app's AI agent.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"limit": {
"description": "Maximum number of messages to return (default 20)",
"type": "number"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_agent_history"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_agent_status"
},
{
"description": "Get the environment variables configured for an app (names and values). Read-only — use vibekit_set_env to change them.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_app_env"
},
{
"description": "Fetch recent container/application logs for an app. Use this to debug crashes, errors, or a deploy that isn't serving.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"lines": {
"description": "Number of log lines to retrieve (default 100)",
"type": "number"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_app_logs"
},
{
"description": "Cancel a running task by taskId. No-op if it has already finished.",
"inputSchema": {
"properties": {
"taskId": {
"description": "Task ID to cancel (from vibekit_submit_task)",
"type": "string"
}
},
"required": [
"taskId"
],
"type": "object"
},
"name": "vibekit_cancel_task"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"message": {
"description": "What you want the agent to do or change — be specific about features, design, and behavior.",
"type": "string"
}
},
"required": [
"appId",
"message"
],
"type": "object"
},
"name": "vibekit_chat"
},
{
"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.",
"inputSchema": {
"properties": {
"subdomain": {
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens.",
"type": "string"
},
"template": {
"description": "Template id from vibekit_list_templates (e.g. 'landing', 'dashboard', 'blog', 'saas', 'crud-api')",
"type": "string"
}
},
"required": [
"template",
"subdomain"
],
"type": "object"
},
"name": "vibekit_create_app"
},
{
"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.",
"inputSchema": {
"properties": {
"cron": {
"description": "Cron expression, e.g. '0 9 * * 1' for every Monday at 9am UTC",
"type": "string"
},
"name": {
"description": "Friendly name for the schedule (optional)",
"type": "string"
},
"repo": {
"description": "GitHub repo as 'owner/repo'",
"type": "string"
},
"task": {
"description": "What to do on each run, e.g. 'Improve SEO and page speed'",
"type": "string"
}
},
"required": [
"task",
"repo",
"cron"
],
"type": "object"
},
"name": "vibekit_create_schedule"
},
{
"description": "Get an app's database status and connection info (whether it's provisioned, frozen, etc.).",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_database_status"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"sql": {
"description": "SQL to execute (max 5000 chars). Reads and writes both allowed.",
"type": "string"
}
},
"required": [
"appId",
"sql"
],
"type": "object"
},
"name": "vibekit_db_query"
},
{
"description": "Get an app's database schema — every table and its columns. Always call this before writing a query with vibekit_db_query.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_db_schema"
},
{
"description": "Browse rows of one table with pagination and optional sorting — a quick read-only alternative to hand-writing a SELECT.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"limit": {
"description": "Max rows to return (default 50, max 200)",
"type": "number"
},
"offset": {
"description": "Row offset for pagination (default 0)",
"type": "number"
},
"table": {
"description": "Table name (see vibekit_db_schema)",
"type": "string"
}
},
"required": [
"appId",
"table"
],
"type": "object"
},
"name": "vibekit_db_table"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_delete_app"
},
{
"description": "Delete a scheduled recurring task by scheduleId. Confirm with the user first.",
"inputSchema": {
"properties": {
"scheduleId": {
"description": "Schedule ID to delete (from vibekit_list_schedules)",
"type": "string"
}
},
"required": [
"scheduleId"
],
"type": "object"
},
"name": "vibekit_delete_schedule"
},
{
"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.",
"inputSchema": {
"properties": {
"repo": {
"description": "GitHub repo as 'owner/repo' (e.g. 'your-username/my-app')",
"type": "string"
},
"subdomain": {
"description": "Desired subdomain — the app goes live at <subdomain>.vibekit.bot. Lowercase letters, numbers, and hyphens.",
"type": "string"
}
},
"required": [
"repo",
"subdomain"
],
"type": "object"
},
"name": "vibekit_deploy"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_enable_database"
},
{
"description": "Get full details for one hosted app — status, subdomain/URL, repo, runtime, and database/domain config. Use the appId from vibekit_list_apps.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_get_app"
},
{
"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.",
"inputSchema": {
"properties": {
"id": {
"description": "Skill ID from vibekit_list_skills (e.g. 'nextjs', 'trpc', 'auth')",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "vibekit_get_skill"
},
{
"description": "Get the status and result of a task submitted via vibekit_submit_task.",
"inputSchema": {
"properties": {
"taskId": {
"description": "Task ID returned from vibekit_submit_task",
"type": "string"
}
},
"required": [
"taskId"
],
"type": "object"
},
"name": "vibekit_get_task"
},
{
"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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "vibekit_list_apps"
},
{
"description": "List an app's recent deploys, newest first, with status and commit info. Find a deployId here to pass to vibekit_rollback_deploy.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"limit": {
"description": "Max deploys to return (default 20, max 50)",
"type": "number"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_list_deploys"
},
{
"description": "List all of the account's scheduled recurring tasks.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "vibekit_list_schedules"
},
{
"description": "List available implementation skills (IDs, names, descriptions, tags) from the VibeKit skills registry. Discover skills here before fetching one with vibekit_get_skill.",
"inputSchema": {
"properties": {
"tag": {
"description": "Filter skills by tag (e.g. 'react', 'database', 'security')",
"type": "string"
}
},
"type": "object"
},
"name": "vibekit_list_skills"
},
{
"description": "List recent coding tasks, optionally filtered by status.",
"inputSchema": {
"properties": {
"limit": {
"description": "Max number of tasks to return (default 10)",
"type": "number"
},
"status": {
"description": "Filter by task status",
"enum": [
"pending",
"running",
"completed",
"failed"
],
"type": "string"
}
},
"type": "object"
},
"name": "vibekit_list_tasks"
},
{
"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.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "vibekit_list_templates"
},
{
"description": "Get the latest automated QA results and status for an app.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_qa_status"
},
{
"description": "Redeploy an existing app to pull and ship the latest code. Use after pushing changes to the app's GitHub repo.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_redeploy"
},
{
"description": "Restart a hosted app's container. Use when an app is wedged, or to apply changed environment variables.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_restart_app"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"deployId": {
"description": "Deploy ID to roll back to (from vibekit_list_deploys)",
"type": "string"
}
},
"required": [
"appId",
"deployId"
],
"type": "object"
},
"name": "vibekit_rollback_deploy"
},
{
"description": "Kick off an automated QA run (headless-browser checks) against a hosted app. Poll vibekit_qa_status for results.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_run_qa"
},
{
"description": "Set or update environment variables for an app (merges with existing). The app must be restarted or redeployed for changes to take effect.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
},
"vars": {
"description": "Key-value pairs to set as environment variables, e.g. { \"API_KEY\": \"...\", \"NODE_ENV\": \"production\" }",
"type": "object"
}
},
"required": [
"appId",
"vars"
],
"type": "object"
},
"name": "vibekit_set_env"
},
{
"description": "Start a stopped hosted app's container. Use to bring an app stopped via vibekit_stop_app back online.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_start_app"
},
{
"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.",
"inputSchema": {
"properties": {
"appId": {
"description": "App ID (from vibekit_list_apps)",
"type": "string"
}
},
"required": [
"appId"
],
"type": "object"
},
"name": "vibekit_stop_app"
},
{
"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.",
"inputSchema": {
"properties": {
"branch": {
"description": "Git branch to work on (default 'main')",
"type": "string"
},
"callbackUrl": {
"description": "Optional webhook URL to receive a task-completion notification.",
"type": "string"
},
"deploy": {
"description": "Auto-deploy to <subdomain>.vibekit.bot when done (default true)",
"type": "boolean"
},
"repo": {
"description": "GitHub repo as 'owner/repo'. Optional — uses the user's current repo if omitted.",
"type": "string"
},
"task": {
"description": "What you want built or changed. Be specific about features, design, and behavior.",
"type": "string"
}
},
"required": [
"task"
],
"type": "object"
},
"name": "vibekit_submit_task"
},
{
"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.",
"inputSchema": {
"properties": {
"taskId": {
"description": "Task ID to wait for (from vibekit_submit_task)",
"type": "string"
},
"timeoutSeconds": {
"description": "Max seconds to wait (default 300; the remote connector caps this at 120)",
"type": "number"
}
},
"required": [
"taskId"
],
"type": "object"
},
"name": "vibekit_wait_for_task"
}
]
}What the leaf hashes
{"body":"32865482762240725b14d3c20a34ca3adbc206ed95f81a5e85d503ea94aa5b3c","id":574922,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793141847505659,"prev":null,"subject":"c9bc6137-a070-4074-b489-46d739111de1","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0x0b8d329aba4f7e773d3519f84790342d6ef3948fd1b1711ba09c64ae846a60c0
- 0x74fb18915d9e32f4b08a7a09db21e758f8110bbf87762e93405825aeb4de4dba
- 0x3847fbbee5e253c6f97253ca043af639cc00282cc6e35140a3663a58080e8f58
- 0x13be5d0ae448e379bae805ec97c3e8b98890ddedc43149a018d2f46bfdb84fce
- 0xd5f4ec836f671c8b8d0f68c40d16bae92f5c90c997d01260fe76c339f319ceb9
- 0x7bd9235641edd7d19ed2d4b45c5341b3e9f67b3c1954d2bf84aa74aa349925ba
- 0xb2f4868b99751d975b994c99482630d05d487a888b69675934e5155d785266df
- 0xd58aa2e8c1d938f00b6f0475f5ee546f1abb21318e1365955c25d9393a85796a
- 0x05e859de962f0f7f47bad70b465c46c44dc635c8f30bf1eb44cf18eb8d2b64d0
- 0x3a9eaa672aaa217fe62adddaa5b74ee284a048148705ceb0d80777d7aec144a7
- 0xab9a818db8b8604daa1d300b5336a7ecdc718ee9de04e347884c3c2ff6e455d3
- 0x7189e38499a0d36b6f3d244260e4b1d8d20ec79407f4be030531131834122360
- 0x74ffd6144e8464591ea30392b981f197426cfd361178829fb8a66915e2f727b0
- 0x3e0ec8a2a8a954695a9b53a4a48a7656d7e3fd6a8795c73b49e2ef05b201ec3f
- 0x2cf27e8a181d60d0dd27c186c2eddfcbb4e8fa71cf66feeb55a4d730e15ee8c4
- 0x518b93854db03dc9fc938883abf30da6eaae5ae0d4336903968fd32a7df8c71b
- 0x22c1fb9487ee0b9732fa017a0cc321eb27a60c08450d112f755089796e12cb1c
- 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4