- Brand
- ProductOS
- Category
- AI
- Primary Subcategory
- AI App & Website Builders
Integration details
Description
ProductOS is a remote-first, AI-native development platform. Connect ChatGPT to your entire cloud workspace with no local clone needed. Create and manage projects, boot isolated cloud sandboxes with live preview URLs, read and write files, run a full shell (npm, git, node), provision Postgres databases and S3 storage, and trigger production deploys. Every file change auto-syncs to GitHub. Perfect for rapid prototyping, full-stack development, and team collaboration directly from chat.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI App & Website Builders
- Secondary Subcategories
- None listed
- Brand
- ProductOS
- Access
- Account optional
- First tracked
- 2026-08-17
- Tool count
- 114
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Get alerts for ProductOS
Get updates when ProductOS’s Discoverability Score or category rank changes.
Competing in ChatGPT AI App & Website Builders
View Category114 tools agents can invoke
THIS is how you see a page: an accessibility tree with @eN refs for the interactive elements, which browser_act then acts on. Prefer it over browser_screenshot — a fraction of the tokens and it gives you refs. Refs go stale after ANY page change, so re-snapshot after every click, fill, or navigation. Requires project:exec scope.
browser_snapshot
Perform one interaction. Targets are @eN refs from browser_snapshot or CSS selectors. Actions: click, double_click, hover, fill (clear then type), type (append), select (dropdown), check/uncheck, press (a key or combo like 'Enter' or 'Control+a'), scroll, scroll_into_view, wait (for an element, text, or a pause — use before snapshotting an async UI). Re-snapshot afterwards — refs go stale. Requires project:exec scope.
browser_act
Pull all responses for a survey in this project and return per-question statistics (distributions, averages, top open-text answers). YOU interpret them: write the headline, a 2-paragraph PM-grade narrative, and a confirmed / partially_confirmed / refuted / new_finding verdict against each of your prior hypotheses, into your research run doc. Use this once you've collected at least a handful of responses to a previously-generated survey. Pass `surveyId` from a prior generate_survey result.
analyze_survey_responses
This is the ONLY permitted way to ask the user a question. Ask up to 5 questions in one card; never put questions or response invitations in ordinary chat text. The UI renders a stepper and submits all answers together. Use options for yes/no or short picks. For an open-ended response, omit options or pass an empty array. `log_open_question` records backlog questions but does not surface them to the user. For one question, still pass `questions` as a one-item array. When `options` is present, pass one flat string array such as ["Yes", "No"] — never nest the array. After calling this tool, STOP your turn — the user's answers arrive as a single hidden message on the next turn.
ask_user
Read the page's debugging state: console output (log/warn/error/info), uncaught JavaScript exceptions, or captured network requests. THIS is how you find out why the app being built misbehaves in the browser — check errors after any flow that should have worked but didn't. Set clear:true to empty a buffer so the next read shows only what happens after this point. Requires project:exec scope.
browser_debug
The Expo/EAS pipeline for MOBILE_EXPO projects — app identity → EAS build → App Store / Play Store submission. Use this instead of trigger_deploy for any mobile app (trigger_deploy is the web/Vercel pipeline and will not produce an app). Actions: 'status' (ALWAYS start here — app identity, which store credentials are connected, what can run now, and the in-flight/latest build); 'configure' (set packageName + displayName — required before any build; the package name is permanent once published); 'build' (EAS build producing a downloadable APK/AAB, no store submission and no Google Play account needed — Android only, because iOS binaries are signed during the build); 'submit' (build AND submit to the store — TestFlight for iOS, internal testing track for Play); 'cancel' (stop the in-flight run). Builds take 10–30 minutes: poll 'status', and on failure read get_eas_build_logs for the real cause. Connecting Apple / Google Play is done BY THE USER in the ProductOS app — this tool never accepts store credentials. 'status' needs project:read; the rest need project:write.
mobile_publish
Check the latest deployment's live Vercel status for this project. Use whenever the user asks 'is it done?', 'what's the status?', 'did the deploy finish?', or asks for the public URL after a prior delegate_to_deploy. By DEFAULT this BLOCKS up to ~3 minutes polling Vercel until the deployment reaches a terminal state (READY/FAILED/CANCELLED) — that is what 'wait for the deploy' means. Pass `wait: false` for an instant non-blocking snapshot. Returns a structured JSON string.
check_deploy_status
Check a deployment's status for this project. Returns status (QUEUED/PUSHING/DEPLOYING/READY/DEGRADED/FAILED/CANCELLED), the exact source commit deployed, the deployment URL, GitHub repo info, and the full post-deploy verification report — including any routes that failed their release check with expected vs actual HTTP status. DEGRADED means the build succeeded but verification failed, so it was not promoted to production. Defaults to the latest deployment.
get_deploy_status
Duplicate an existing project — copies its documents, stage data, settings (framework/template), and project memory into a new project owned by you. The clone gets its own sandbox and Git repo lazily on first open. Requires project:write scope on the source project.
clone_project
Save a reusable playbook (a SKILL.md) into this workspace or project so future agents and teammates can follow it. Use when you've worked out a repeatable procedure worth keeping — team conventions, a deployment ritual, a recurring fix. The skill is immediately usable in this workspace; set submit_to_platform to also offer it to ProductOS admins for publication to every workspace. Requires project:write.
create_skill
Create a new ProductOS project: registers it in the workspace, initializes its Git repository, applies the chosen template, and optionally provisions + boots its sandbox. Returns the project id, repo, and sandbox/preview URLs. IMPORTANT — pick `template` from what the user actually wants, don't just default to web: a MOBILE app / iOS / Android / React Native / Expo → 'mobile'; a marketing/landing/brand/blog/SEO site → 'website'; a web app / dashboard / SaaS → 'web-app'. If the user says 'app' without qualifying and the context is mobile, prefer 'mobile'; if genuinely unsure, ask them. Requires project:write scope and a non-viewer workspace role.
create_project
Create and steer a ProductOS Product (several platform projects — web / mobile / website — sharing one frozen spec, one database and one orchestrator agent). Actions: 'create' (from a brief + surfaces: provisions the shared database, creates one project per surface, and starts the ProductOS Agent in PLAN MODE — nothing builds until you approve its plan with product_agent); 'add_surface' (add a platform to an existing product and build it against the existing contract); 'sync_spec' (re-freeze the shared contract — this REBUILDS EVERY SURFACE, so confirm with the user); 'resume' (recover a stalled product: backfill missing platform projects, restart a dead orchestrator, re-dispatch dead builds). Every action spends credits. Use create_project instead when the user wants ONE standalone app. Requires project:write.
manage_product
Permanently delete a ProductOS project — its sandbox and volume are reaped, project storage is cleaned up, the cross-surface registry entry is tombstoned, and the project row is removed. This cannot be undone. Requires project:write scope and workspace permission to manage the project.
delete_project
Delete a file or directory from the project sandbox. Pass recursive:true to delete a non-empty directory. The project root cannot be deleted. Requires project:write scope.
delete_file
Deploy the active project to production: GitHub push → Vercel deployment (deterministic, no auto-fix). Works in both Manual and Automatic deployment mode — calling it is the user's explicit deploy. Runs asynchronously and shows live in the ProductOS UI. On a build failure it stops at FAILED with the build logs — read get_deploy_logs, fix the code (edit_file/bash), and call trigger_deploy again. Poll get_deploy_status for status/URL. Requires project:write scope.
trigger_deploy
Modify an existing file by replacing exact strings — the right tool for surgical code edits and refactors without rewriting the whole file. Edits apply in order; each oldString must appear exactly once unless replaceAll is set. Requires project:write scope.
edit_file
Estimate infrastructure costs for different deployment options. Compares serverless vs container vs VM strategies at multiple scale tiers. Use this when writing the Infrastructure & Deployment architecture section. The result is formatted as a markdown comparison table that you should include in the architecture section body.
estimate_infrastructure_cost
Fetch extracted text for a list of URLs you already have (from a prior `exa_search` or from the user). Each page is capped at 4000 characters to keep token usage sane.
exa_fetch
Find files by filename glob across the project sandbox (build artifacts pruned, capped at 500 results). Matches the file NAME, e.g. 'page.tsx', '*.config.*', 'tailwind.config.*'. To search file CONTENTS use search_files. Requires project:read scope.
find_files
Return the real failure logs for a mobile EAS build — the 'Run gradlew' (Android) / Xcode (iOS) phase output, plus the extracted cause. Use this whenever a Play Store / App Store build fails, ESPECIALLY when the status says "unknown error — see logs for the Run gradlew phase": that message is EAS's classifier giving up, and this tool fetches what it points at. Defaults to the project's most recent mobile build. Pass grep to filter (e.g. 'Execution failed|e: file://'). Requires project:read scope.
get_eas_build_logs
Returns a markdown summary of this ProductOS project: name, current stage, overview, PRD, research, design notes. Reads live wiki files from the project's sandbox — always the latest, no staleness. Call this first when the user wants you to work in their ProductOS project. v1 read-only.
get_project_context
Read the full body of one logged decision (PRD section, page) from this project's sandbox wiki. Pass an `id` from list_decisions (a wiki-relative path like 'agents/prd/sections/overview.md'). Returns markdown with title + stage + body. Live data — no DB lag.
get_decision
Return build AND runtime logs for a deployment. Build logs explain why a deploy failed to compile; runtime logs explain why a deployed route returns 500 (missing env var, Prisma init failure, DB unreachable). Falls back to fetching live from Vercel when nothing was captured at deploy time. Secrets and connection strings are redacted. Defaults to the latest deployment. Requires project:read scope.
get_deploy_logs
Orient in ProductOS Product mode — a Product groups several platform projects (web / mobile / website) that share ONE frozen spec, one database, and one orchestrator agent. Call this FIRST whenever the project you're working on might belong to a Product: it lists the sibling surfaces, whether the shared contract is frozen (and at which version), and what the ProductOS Agent is doing. With no arguments it resolves the Product owning the connection's active project, or — if that project is standalone — lists every Product this connection can reach. Follow up with read_shared_context (the contract each surface must satisfy) and product_agent (the main agent). Requires project:read.
get_product_context
Query a project's configuration in one call: name, stage, project type + framework template, GitHub repo/branch, workspace, database/storage state, and sandbox identity. Database metadata refreshes on every call and recognizes existing DATABASE_URL settings, shared product databases, secrets, and running sandbox configuration; it does not test connection health. Requires project:read scope.
get_project_metadata
Returns a dated summary of recent project activity from canonical wiki memory and sub-agent outputs. Use it on demand when the request depends on earlier work; it is not a prerequisite for starting a turn.
get_recent_activity
Return the live preview URL for a project's running sandbox (and the Expo tunnel URL for mobile projects). Use to view or share the running app. If the sandbox isn't running, start it first with start_sandbox / open_project. Requires project:read scope.
get_sandbox_urls
Tail the dev-server log for a project's sandbox — use to debug build errors, runtime crashes, or a preview that won't load. Returns the last N lines (default 200) of the type-aware log file. Requires project:read scope.
get_sandbox_logs
Report a project's sandbox health: instance status (DEPLOYED/…), whether the dev server is responding, whether it's currently compiling, last-active time, and the sandbox id. Requires project:read scope.
get_sandbox_status
Git operations on the project sandbox. action='status' shows the working tree + recent commits (project:read). action='commit-push' commits the live sandbox state and pushes it to the project's GitHub repo via the durable commit pipeline — file writes via MCP already auto-commit, so use this to force an immediate sync point (project:write). action='pull' pulls the latest from the project's GitHub repo INTO the sandbox — it first backs up the current tree to S3 so the pull is undoable, and refuses while an agent turn is mid-write (project:write).
git_sync
Import an existing GitHub repository (an existing codebase) as a new ProductOS project: downloads the code into a live sandbox, detects the stack (Next.js, Vite, Astro, Expo, Node, Python, PHP, Go, static — anything else runs on a universal image), starts installing dependencies and the dev server, and returns the project id + preview URL. The project stays linked to the repository. Use this — not create_project — when the user wants to work on code they already have on GitHub; add_context_repo only attaches a repo as reference docs to an existing project. The user's GitHub account must be connected to ProductOS; list_available_repos shows the repositories it can read. Importing the same repository and branch again returns the existing project instead of a duplicate. Takes a few minutes on a cold start. Requires project:write scope and a non-viewer workspace role.
import_github_repo
Link a GitHub repository to this project so agents can understand the codebase. A Code Wiki (structured architecture docs) will be generated automatically. This does NOT bring the code into the project — to import a repository as a new, runnable project, use import_github_repo. IMPORTANT: Always ask the user for confirmation before linking a repository.
add_context_repo
List the design / PRD / research decisions logged in this ProductOS project, read straight from the live sandbox wiki (no DB lag). Returns a JSON array with id (wiki-relative path), title, type, position, updatedAt for each. v1 returns PRD section files and pages; structured alternatives / rationale fields ship in v1.1.
list_decisions
List files and subdirectories in one directory of the project sandbox (non-recursive). Build artifacts (node_modules, .git, .next, dist, build) are hidden. For a full recursive tree use read_project_structure. Requires project:read scope.
list_files
List the ProductOS projects this MCP connection can access, with each project's access level (READ / WRITE / FULL_DEV), current stage, and id. Projects that are platforms of a multi-platform Product are grouped under it — use get_product_context for that Product's shared spec and orchestrator agent. The active project is marked — switch it with open_project, or pass projectId to any file/sandbox tool to target another project directly.
list_projects
List the user's GitHub repositories that can be imported as a project (import_github_repo) or linked for codebase context (add_context_repo). Returns name, full_name, description, default_branch, and language for each repo. Use this to suggest which repos to link when the user describes an existing product.
list_available_repos
List the reusable agent skills (playbooks) available to this connection — platform skills shipped by ProductOS plus any this workspace or project defines. Each entry is a slug + description; call get_skill with a slug to read the full instructions. CHECK THIS FIRST when a task sounds like a repeatable workflow (cloning a website, an SEO pass, a design-system import) — following an existing skill beats improvising.
list_skills
List the ProductOS organizations (workspaces) this MCP connection can access, with your role in each. Use list_projects to see the projects inside them. Requires project:read scope.
list_organizations
Manage tabs in the shared browser session: list them, open a new one, switch by id/label (t1, t2, …), or close one. Requires project:exec scope.
browser_tabs
Load all active project constraints (legacy APIs, compliance requirements, tech debt, security, performance, infrastructure). ALWAYS call this before writing PRD sections, architecture docs, or making technical decisions. Constraints are structured inputs from the project owner that MUST influence your output.
load_constraints
Record ideation assumptions. Pass every new assumption in ONE `assumptions` array so the file is read and written once. The legacy singular shape remains supported.
log_assumption
Record open ideation questions. Pass every new question in ONE `questions` array so the file is read and written once. The legacy singular `question` + `why` shape remains supported.
log_open_question
Log 1-30 QA findings in a single call. ALWAYS batch — do not call this once per finding. Each finding needs severity, type, title, and (recommended) evidence with the route + screenshot URL.
qa_log_finding
Record ALL worthwhile source URLs for this turn in a single call. Pass every source as an entry in the `entries` array — do NOT call this tool per URL.
log_source
Record ALL competitors discovered this turn in a single call. Pass every competitor as an entry in the `competitors` array — do NOT call this tool per competitor.
log_competitor
Record ALL validated research findings for this turn in a single call. Pass every finding as an entry in the `findings` array — do NOT call this tool multiple times in the same turn.
log_finding
List, set, or delete a project's environment variables (the Secret Manager backing the sandbox's .env). 'list' returns key names only — values are encrypted and never exposed. 'set'/'delete' also sync the sandbox .env so the running app picks the change up. DATABASE_URL is reserved (use provision_database). Requires project:write scope.
manage_env_vars
Add, remove, or install npm dependencies in the project sandbox. 'add' installs the given packages, 'remove' uninstalls them, 'install' installs everything in package.json. Package names are validated. Requires project:exec scope.
manage_dependencies
Rename or move a file or directory within the project sandbox. Parent directories of the destination are created automatically. Requires project:write scope.
move_file
Navigate the project sandbox's Chromium to a URL. The app being built is at http://localhost:3000 — reachable ONLY from inside the sandbox, which is why this tool exists rather than fetching the URL yourself. Follow with browser_snapshot to see what is on the page. Shares one browser session with the in-app agents and the user's live Browser panel. Requires project:exec scope.
browser_navigate
ProductOS ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve ProductOS's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are ProductOS alternatives on ChatGPT?
As of 2026-10-05, ProductOS competes with Adalo, AI Roleplay Chat Simulator, Akwadra, AppDeploy, Base44, Buildfire, Charming, Craftian and 16 more in ChatGPT AI App & Website Builders, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.