This turns Claude into a deployment pipeline. You describe an app, it writes the code, and Hatchable provisions the database, auth, storage, and hosting in one go. The MCP server exposes tools for creating projects, writing files, managing schemas, deploying builds, and querying live app data after launch. The same AI connection that scaffolded your app can later read its database, modify tables, or send emails through it. You'd reach for this when you want to go from prompt to live URL without touching Vercel, Supabase, or a build config. Free tier for personal projects, flat monthly pricing for public apps. Works over OAuth so no API keys to rotate.
Public tool metadata for what this MCP can expose to an agent.
create_projectCreate a new Hatchable project. This generates a URL slug, creates a dedicated PostgreSQL database, and returns the project ID and URLs. Call this first before writing files or creating tables. ## Project structure ``` public/ static files, served at their file path api/ backe...3 paramsCreate a new Hatchable project. This generates a URL slug, creates a dedicated PostgreSQL database, and returns the project ID and URLs. Call this first before writing files or creating tables. ## Project structure ``` public/ static files, served at their file path api/ backe...
namestringvisibilitystringpersonal · public · appdescriptionstringget_projectGet project details including slug, visibility, status, deployed functions, and the database schema (tables, columns, types).1 paramsGet project details including slug, visibility, status, deployed functions, and the database schema (tables, columns, types).
project_idstringlist_projectsList all projects you own or collaborate on, with their visibility, tier, role, and current version.List all projects you own or collaborate on, with their visibility, tier, role, and current version.
No parameter schema in public metadata yet.
deployDeploy the project. Runs migrations/*.sql (tracked so each runs once), runs seed.sql on first deploy, copies public/ files to the CDN, and registers api/ files as live endpoints. Increments the project version. Call this after writing all your files. To verify your functions w...1 paramsDeploy the project. Runs migrations/*.sql (tracked so each runs once), runs seed.sql on first deploy, copies public/ files to the CDN, and registers api/ files as live endpoints. Increments the project version. Call this after writing all your files. To verify your functions w...
project_idstringwrite_fileWrite or overwrite a project file. Paths are relative to the project root. Valid locations: public/** static files (HTML, CSS, JS, images, etc.) api/**.js backend functions (each file is one endpoint) api/_lib/** shared helpers imported by api/ files, not routed migrations/*.s...3 paramsWrite or overwrite a project file. Paths are relative to the project root. Valid locations: public/** static files (HTML, CSS, JS, images, etc.) api/**.js backend functions (each file is one endpoint) api/_lib/** shared helpers imported by api/ files, not routed migrations/*.s...
pathstringcontentstringproject_idstringwrite_filesWrite multiple project files in a single call. Same rules as write_file but batched — faster for scaffolding a new project or updating several files at once. Each entry in the files array has a path and content. All files are written atomically — if any path is invalid, none a...2 paramsWrite multiple project files in a single call. Same rules as write_file but batched — faster for scaffolding a new project or updating several files at once. Each entry in the files array has a path and content. All files are written atomically — if any path is invalid, none a...
filesarrayproject_idstringread_fileRead the content of a project file. Pass offset/limit to read a range of lines — useful for large files where the whole file would blow the context window. When either is set, the response includes cat -n style line-numbered content so subsequent patch_file calls can reference...4 paramsRead the content of a project file. Pass offset/limit to read a range of lines — useful for large files where the whole file would blow the context window. When either is set, the response includes cat -n style line-numbered content so subsequent patch_file calls can reference...
pathstringlimitintegeroffsetintegerproject_idstringgrepRegex content search across a project's files. Postgres-backed, scoped to one project, with glob filtering. Three output modes: - files_with_matches (default) — list paths containing a match - content — matching lines with optional context and line numbers - count — per-file m...8 paramsRegex content search across a project's files. Postgres-backed, scoped to one project, with glob filtering. Three output modes: - files_with_matches (default) — list paths containing a match - content — matching lines with optional context and line numbers - count — per-file m...
-iboolean-nbooleanglobstringcontextintegerpatternstringhead_limitintegerproject_idstringoutput_modestringfiles_with_matches · content · countlist_filesList all files in a project with their paths, sizes, and hashes.1 paramsList all files in a project with their paths, sizes, and hashes.
project_idstringpatch_fileApply a targeted edit to an existing project file without rewriting the entire file. Finds the first occurrence of `old_string` and replaces it with `new_string`. Use this instead of write_file when modifying large files (e.g. HTML) — you only send the changed portion, not the...4 paramsApply a targeted edit to an existing project file without rewriting the entire file. Finds the first occurrence of `old_string` and replaces it with `new_string`. Use this instead of write_file when modifying large files (e.g. HTML) — you only send the changed portion, not the...
pathstringnew_stringstringold_stringstringproject_idstringdelete_fileDelete a project file. Takes effect after the next deploy.2 paramsDelete a project file. Takes effect after the next deploy.
pathstringproject_idstringexecute_sqlRun SQL against the project's dedicated PostgreSQL database. Supports: CREATE TABLE, ALTER TABLE, DROP TABLE, INSERT, SELECT, UPDATE, DELETE. Use parameterized queries for safety: pass values in the `params` array with $1, $2, etc. placeholders. Return format: - SELECT: { rows...3 paramsRun SQL against the project's dedicated PostgreSQL database. Supports: CREATE TABLE, ALTER TABLE, DROP TABLE, INSERT, SELECT, UPDATE, DELETE. Use parameterized queries for safety: pass values in the `params` array with $1, $2, etc. placeholders. Return format: - SELECT: { rows...
sqlstringparamsarrayproject_idstringget_schemaReturn the database schema for the project's PostgreSQL database: tables, columns (with types), and indexes.1 paramsReturn the database schema for the project's PostgreSQL database: tables, columns (with types), and indexes.
project_idstringset_envSet environment variables for a project. Available in functions via process.env.KEY. Keys containing SECRET, PASSWORD, TOKEN, API_KEY, or PRIVATE are automatically marked as secrets.2 paramsSet environment variables for a project. Available in functions via process.env.KEY. Keys containing SECRET, PASSWORD, TOKEN, API_KEY, or PRIVATE are automatically marked as secrets.
varsobjectproject_idstringset_visibilityChange a project's visibility. - personal: you + invitees, login-gated, free - public: on the open web, requires Public plan ($12/mo). No app-level auth. - app: on the open web + user signups, requires App plan ($39/mo). Required if [auth] is enabled.2 paramsChange a project's visibility. - personal: you + invitees, login-gated, free - public: on the open web, requires Public plan ($12/mo). No app-level auth. - app: on the open web + user signups, requires App plan ($39/mo). Required if [auth] is enabled.
project_idstringvisibilitystringpersonal · public · apprun_functionExecute a deployed function and return the real response. Use this to test your API endpoints. Returns: { status, headers, body, logs, error, duration_ms } Example: run_function({ project_id: 1, path: "/api/users", method: "GET" }) Example: run_function({ project_id: 1, path:...6 paramsExecute a deployed function and return the real response. Use this to test your API endpoints. Returns: { status, headers, body, logs, error, duration_ms } Example: run_function({ project_id: 1, path: "/api/users", method: "GET" }) Example: run_function({ project_id: 1, path:...
bodyvaluepathstringqueryobjectmethodstringGET · POST · PUT · DELETEheadersobjectproject_idstringview_logsView function execution logs with rich filtering. Each entry includes status_code, duration_ms, log_output (captured console.log), error (if any), and a derived `level` field (error/warning/info). Filter by any combination of function_name, route, method, status_code (exact or...11 paramsView function execution logs with rich filtering. Each entry includes status_code, duration_ms, log_output (captured console.log), error (if any), and a derived `level` field (error/warning/info). Filter by any combination of function_name, route, method, status_code (exact or...
levelstringlimitintegerquerystringroutestringsincestringuntilstringmethodstringproject_idstringrequest_idstringstatus_codestringfunction_namestringlist_deploymentsList deployments for a project in reverse-chronological order. Each entry includes version, status, deployed_at, description, and summary counts (files, functions). Use this to understand recent deploy history, identify a known-good version for rollback, or debug a regression...2 paramsList deployments for a project in reverse-chronological order. Each entry includes version, status, deployed_at, description, and summary counts (files, functions). Use this to understand recent deploy history, identify a known-good version for rollback, or debug a regression...
limitintegerproject_idstringlist_functionsList every deployed API function for a project: route, method, runtime tier, cron schedule (if any), and 24-hour invocation and error counts. This is the 'what routes did I ship' introspection tool. Call it after a fork, after picking up an unfamiliar project, or to verify a d...1 paramsList every deployed API function for a project: route, method, runtime tier, cron schedule (if any), and 24-hour invocation and error counts. This is the 'what routes did I ship' introspection tool. Call it after a fork, after picking up an unfamiliar project, or to verify a d...
project_idstringget_deploymentDetail view of one deployment by version number — returns the full file manifest (paths, hashes, sizes) and function list captured when that version shipped. Use it with list_deployments to audit or compare what changed between versions.2 paramsDetail view of one deployment by version number — returns the full file manifest (paths, hashes, sizes) and function list captured when that version shipped. Use it with list_deployments to audit or compare what changed between versions.
versionintegerproject_idstringlist_cron_jobsList every scheduled (cron) function in a project with its cron expression, 7-day run count, error count, and last_run_at timestamp. Use this to verify a cron job is actually firing without tailing logs manually.1 paramsList every scheduled (cron) function in a project with its cron expression, 7-day run count, error count, and last_run_at timestamp. Use this to verify a cron job is actually firing without tailing logs manually.
project_idstringlist_envList environment variable keys for a project. Only key names and an is_secret flag are returned — values are never exposed through this tool. Use process.env.KEY inside a deployed function to read the actual value.1 paramsList environment variable keys for a project. Only key names and an is_secret flag are returned — values are never exposed through this tool. Use process.env.KEY inside a deployed function to read the actual value.
project_idstringdelete_envDelete one or more environment variables by key. Pass `key` for a single delete or `keys` for a batch. Missing keys are reported in `skipped`, not errored, so retries are idempotent. Takes effect on the next deploy.3 paramsDelete one or more environment variables by key. Pass `key` for a single delete or `keys` for a batch. Missing keys are reported in `skipped`, not errored, so retries are idempotent. Takes effect on the next deploy.
keystringkeysarrayproject_idstringupdate_projectUpdate project metadata: name, tagline, description, category. Only the fields you pass are touched. For visibility changes use set_visibility; slug and tier are immutable.5 paramsUpdate project metadata: name, tagline, description, category. Only the fields you pass are touched. For visibility changes use set_visibility; slug and tier are immutable.
namestringtaglinestringcategorystringproject_idstringdescriptionstringimport_file_from_urlFetch a remote URL and save the response body as a project file — server-side, so the bytes never pass through your context window. Useful for seed data, vendor libs, and asset migration. Capped at 10 MB and 10s timeout. Private/loopback addresses are rejected. Path must live...3 paramsFetch a remote URL and save the response body as a project file — server-side, so the bytes never pass through your context window. Useful for seed data, vendor libs, and asset migration. Capped at 10 MB and 10s timeout. Private/loopback addresses are rejected. Path must live...
urlstringpathstringproject_idstringsearch_documentationSearch Hatchable's own documentation for platform behavior — routing, the SDK surface, deploy semantics, auth config, runtime limits. Call this instead of guessing when you're unsure how a Hatchable feature works. Ranks results by term frequency across headed sections. Returns...2 paramsSearch Hatchable's own documentation for platform behavior — routing, the SDK surface, deploy semantics, auth config, runtime limits. Call this instead of guessing when you're unsure how a Hatchable feature works. Ranks results by term frequency across headed sections. Returns...
limitintegerquerystringdry_run_deployRun every deploy-time validator against the project's current files without actually deploying. Returns `errors` (hard gates) and `warnings` (soft lints), plus a `would_deploy` summary of what would ship. Errors catch: package.json build scripts, reserved table names in migrat...1 paramsRun every deploy-time validator against the project's current files without actually deploying. Returns `errors` (hard gates) and `warnings` (soft lints), plus a `would_deploy` summary of what would ship. Errors catch: package.json build scripts, reserved table names in migrat...
project_idstringupload_fileMultipart file upload for content that exceeds a single model response's output token cap (big SPA bundles, large seed data, inline vendor libs). Flow: first call with chunk_index=0 and NO upload_id — response returns an upload_id. Subsequent calls pass that upload_id with chu...6 paramsMultipart file upload for content that exceeds a single model response's output token cap (big SPA bundles, large seed data, inline vendor libs). Flow: first call with chunk_index=0 and NO upload_id — response returns an upload_id. Subsequent calls pass that upload_id with chu...
pathstringchunkstringfinalbooleanupload_idstringproject_idstringchunk_indexintegerlist_pending_uploadsShow multipart uploads currently staged for this project that haven't yet been committed. Use this to recover from a disconnect — find the upload_id and resume from the next chunk_index. Uploads expire 10 minutes after the last chunk was added.1 paramsShow multipart uploads currently staged for this project that haven't yet been committed. Use this to recover from a disconnect — find the upload_id and resume from the next chunk_index. Uploads expire 10 minutes after the last chunk was added.
project_idstringrun_codeExecute arbitrary JS in the project's isolate runtime with the same bindings a deployed function gets: `db`, `auth`, `email`, `storage` from "hatchable", plus process.env and global fetch. The return value of the snippet becomes the `result` field. Use this as a REPL: probe th...3 paramsExecute arbitrary JS in the project's isolate runtime with the same bindings a deployed function gets: `db`, `auth`, `email`, `storage` from "hatchable", plus process.env and global fetch. The return value of the snippet becomes the `result` field. Use this as a REPL: probe th...
codestringproject_idstringtimeout_msintegerfork_projectFork a public project into your account. Copies all code and database schema (no data). The fork starts as a personal project you can modify freely. This is the recommended way to start from an existing app: fork it, then modify the code.2 paramsFork a public project into your account. Copies all code and database schema (no data). The fork starts as a personal project you can modify freely. This is the recommended way to start from an existing app: fork it, then modify the code.
namestringproject_idstringsearch_projectsSearch the public Hatchable project directory — other people's projects that you can view or fork. Use this to find existing apps to fork-and-modify as a starting point. Note: this searches the public *marketplace*. To search inside your own project's files, use the `grep` too...3 paramsSearch the public Hatchable project directory — other people's projects that you can view or fork. Use this to find existing apps to fork-and-modify as a starting point. Note: this searches the public *marketplace*. To search inside your own project's files, use the `grep` too...
limitintegerquerystringcategorystringsetup_accountAssociate an email and handle with your account. Step 1: Call with just email — sends a 6-digit verification code. Step 2: Call with email + code + handle — verifies and completes setup. This lets you log in to the console and sets your permanent @handle.3 paramsAssociate an email and handle with your account. Step 1: Call with just email — sends a 6-digit verification code. Step 2: Call with email + code + handle — verifies and completes setup. This lets you log in to the console and sets your permanent @handle.
codestringemailstringhandlestringmakafeli/n8n-workflow-builder
danishashko/make-mcp
lukisch/n8n-manager-mcp
io.github.us-all/airflow
io.github.infoinlet-marketplace/mcp-workflow