MCP App Store
by KeenEthics
Developer Tools
ProductOS icon

ProductOS

by HEEMANG PARMAR

Overview

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.

Tools

add_context_repo

ChatGPT
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.

analyze_survey_responses

ChatGPT
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.

ask_user

ChatGPT
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.

bash

ChatGPT
Execute a bash command in the project's REMOTE cloud sandbox (working dir /home/user — the project root). This is NOT the local machine: all coding happens on the ProductOS sandbox, so you can drive a project from any device without a local clone. Full shell semantics: pipes, &&, globs, redirection, git, npm, tsc — anything installed in the sandbox. Synchronous commands time out at 55s: for anything longer (next build, a full test suite, prisma generate) pass background:true to get a jobId back immediately, then call again with that jobId to poll RUNNING/SUCCESS/FAILED/CANCELLED and read its output. File edits made via shell are auto-committed to GitHub like the file tools. Requires project:exec scope.

browser_act

ChatGPT
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_debug

ChatGPT
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_navigate

ChatGPT
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_read

ChatGPT
Pull content out of the current page: visible text, innerHTML, an input's value, an attribute, the page title, or the current URL. Omit target for whole-page text. Use this rather than a screenshot when you need to READ something. Requires project:exec scope.

browser_screenshot

ChatGPT
Capture the page as an image you can actually look at. Use ONLY for genuinely visual questions — layout, spacing, alignment, colour, overflow — or when the user asked to see something. To read content or find elements use browser_snapshot: far cheaper, and it gives you refs to act on. Requires project:exec scope.

browser_snapshot

ChatGPT
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_tabs

ChatGPT
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.

check_deploy_status

ChatGPT
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.

clone_project

ChatGPT
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.

create_project

ChatGPT
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 Flutter / Dart app, or a mobile app that must build a real native Android APK → 'flutter'; 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_skill

ChatGPT
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.

delegate_to_architect

ChatGPT
Delegate an architecture task to the Architecture sub-agent. Only valid during the DEFINE stage, after PRD sections are complete. When a section parameter is provided, the sub-agent writes ONLY that one section. When omitted, the sub-agent writes all sections (full mode). Returns a short status string.

delegate_to_deploy

ChatGPT
Delegate publish-and-deploy to the Deploy sub-agent. Use this whenever the user asks to publish, deploy, or ship the project. The sub-agent runs next build in the sandbox to verify, pushes to the ProductOS GitHub org, triggers a Vercel deployment, polls for completion, and auto-fixes build errors up to 3 times before asking the user. Available in any stage where Develop has produced files. This tool returns a short status string with the public URL on success — use read_file on /home/user/wiki/agents/deploy/output.md if you want the full deploy log.

delegate_to_design

ChatGPT
Delegate a flows/screens design task to the UI/UX sub-agent. Only valid when the current stage is design, and only AFTER the user has explicitly asked for flows or screens (per the design rules). DO NOT use this for brand work — brand guidelines are owned by ProductOS directly via the brand tools (set_brand_identity, generate_brand_palette, generate_font_pairing, generate_vibe_report, generate_mood_board). The sub-agent reads prior-stage artifacts (ideation brief, research findings, PRD) and produces structured design documents in the sandbox. This tool returns a short status string — use read_file to see the actual deliverables.

delegate_to_ideation

ChatGPT
Delegate an ideation task (idea exploration, sharpening the concept, logging open questions and assumptions) to the Ideation sub-agent. Only valid when the current stage is ideation. The sub-agent runs autonomously and writes its deliverable to the ideation notes. This tool returns a short status string — use read_file to see the actual brief.

delegate_to_prd

ChatGPT
Delegate a PRD task to the PRD sub-agent. Only valid when the current stage is prd. When a section parameter is provided, the sub-agent writes ONLY that one section (per-section mode). When omitted, the sub-agent writes all sections (legacy full mode). This tool returns a short status string.

delegate_to_qa

ChatGPT
Run the ProductOS QA Agent against the user's preview URL. It drives a headless browser to test critical flows, capture screenshots, hit backend APIs, and run accessibility and console checks. Its activity streams into this chat as live steps. BLOCKS until the run finishes (~1-5 minutes). Returns the verdict (pass/partial/fail), summary, and findings count. If verdict is fail, consider following up with delegate_to_engineer to fix the critical issues it found.

delegate_to_research

ChatGPT
Delegate a research task (competitor audit, market signals, user validation, technical feasibility, regulatory scan) to the Research sub-agent. Only valid when the current stage is research. The sub-agent uses Exa semantic search (fast/auto/deep modes) to gather sourced findings and writes a cumulative research brief. This tool returns a short status string — use read_file to see the actual brief and findings list.

delete_file

ChatGPT
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_project

ChatGPT
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.

edit_file

ChatGPT
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.

estimate_infrastructure_cost

ChatGPT
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.

exa_fetch

ChatGPT
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.

find_files

ChatGPT
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.

generate_brand_palette

ChatGPT
Step 2 — generate a psychologically-grounded color palette and save it to the Brand tab. Pass keywords derived from the vibe/target audience (e.g. 'trustworthy', 'energetic'). If the user hasn't supplied keywords, pick 2–4 yourself from the recalled facts.

generate_font_pairing

ChatGPT
Step 3 — generate a font pairing (primary + secondary + body) and save it to the Brand tab. brandVibe is a short descriptor like 'modern', 'editorial', 'playful'. Grounds choices in readability and brand personality.

generate_mood_board

ChatGPT
Generate a mood board image summarizing the brand's visual direction. Should be called ONLY after the design system has been generated — the image model grounds itself against DESIGN.md + the preview HTML so the board reflects the locked design language, not just the raw palette/fonts. Requires color palette and typography to already exist. Normally the user triggers this themselves from the Mood Board sub-tab inside the Design System; only call it programmatically if explicitly asked.

generate_vibe_report

ChatGPT
Step 4 — generate a Brand Vibe Report covering brand essence, ideal client, founder story, touchpoints. Requires color palette and typography to already exist on the Brand tab.

get_brand_guidelines

ChatGPT
Read the current Brand Guidelines state from the Design tab. Use this on every turn BEFORE asking the user or generating anything — the user may have filled fields directly in the form. Returns a summary of which steps are complete plus the mode and active step.

get_decision

ChatGPT
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_deploy_logs

ChatGPT
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_status

ChatGPT
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_eas_build_logs

ChatGPT
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_product_context

ChatGPT
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_project_context

ChatGPT
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_metadata

ChatGPT
Query a project's configuration and live GitHub repository permissions in one call: name, stage, project type + framework template, GitHub repo/branch and read/push access, workspace, database/storage state, and sandbox identity. Checks the project's bound repository independently of personal repository discovery; a list_available_repos warning does not imply this project is blocked. Database metadata recognizes configured URLs but does not test database connection health. Requires project:read scope.

get_recent_activity

ChatGPT
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_sandbox_logs

ChatGPT
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_status

ChatGPT
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_urls

ChatGPT
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_skill

ChatGPT
Read the full instructions for one skill by slug (get slugs from list_skills). Returns the complete SKILL.md — a step-by-step playbook you should then FOLLOW for the current task, not summarise. Use this before improvising on any task a skill already covers.

get_stage

ChatGPT
Read the project's current stage from /home/user/wiki/stage.md. Use this if you're unsure whether a recent set_stage succeeded or you need to confirm state before delegating.

get_usage

ChatGPT
Show the user's ProductOS credits: how many are left, when they refresh, where credits went recently (agent runs, sandbox time, search, generation), the most recent costly actions, and the Free plan's limits (projects, databases; publishing needs a paid plan). Call this when the user asks about credits, usage, costs or limits, or after a call was refused for credits. Uses no credits.

git_sync

ChatGPT
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).

grep_design_brief

ChatGPT
Search for specific text or sections within the current DESIGN.md. Returns matching lines with line numbers and surrounding context. Use this before patch_design_brief to find the exact text you want to edit — avoids loading or rewriting the full document.

import_github_repo

ChatGPT
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, Flutter, 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.

list_available_repos

ChatGPT
Discover the user's personal GitHub repositories for import_github_repo or add_context_repo. This is NOT a prerequisite or health check for existing projects: use open_project/start_sandbox or get_project_metadata for those. Returns a repository array when discovery succeeds. If discovery is unavailable, returns a scoped warning and independently verified access to the selected project's bound repository. Never infer that all project operations are blocked from a discovery warning.

list_decisions

ChatGPT
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_files

ChatGPT
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_organizations

ChatGPT
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_projects

ChatGPT
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_skills

ChatGPT
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.

load_constraints

ChatGPT
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.

log_assumption

ChatGPT
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_competitor

ChatGPT
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_finding

ChatGPT
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_open_question

ChatGPT
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_source

ChatGPT
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.

manage_dependencies

ChatGPT
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_env_vars

ChatGPT
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_product

ChatGPT
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.

mobile_publish

ChatGPT
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.

move_file

ChatGPT
Rename or move a file or directory within the project sandbox. Parent directories of the destination are created automatically. Requires project:write scope.

open_project

ChatGPT
Switch this MCP connection's active project and connect to its sandbox — auto-provisioning one (correct template image, state restored from GitHub/volume) when missing. Subsequent file/command tools default to this project. Returns sandbox status and preview URL. Requires project:read (sandbox creation needs project:write).

patch_design_brief

ChatGPT
Edit a specific section of the DESIGN.md by replacing exact text in-place — without rewriting the whole file. Much cheaper than write_design_brief for refinements. Use grep_design_brief first to locate the exact text. oldText must match exactly (whitespace included). Updates the sandbox file, compact brief, and DB row.

product_agent

ChatGPT
Read and drive the ProductOS Agent — the orchestrator that plans a Product, freezes its shared contract, and dispatches the per-surface builds. It is not a project and can't be reached with the project tools. Actions: 'status' (what it last said, whether it's mid-turn, and — crucially — whether it is parked awaiting plan approval, with the proposed plan); 'approve' (approve the parked plan so the builds start — this SPENDS CREDITS and dispatches real work across every surface, so confirm with the user first); 'answer' (reply to a parked question, or send plan feedback instead of approving — pass message); 'message' (send a new instruction to an idle agent — e.g. 'add a pricing page to web and mirror it on the website'). You share ONE session with the Product page's chat, so the user sees your messages live. 'status' needs project:read; the rest need project:write.

propose_design_plan

ChatGPT
Show the user a Design kickoff plan card. Automation covers the first two pieces only — brand & visual direction and the design system. User flows and UI screens are USER-DRIVEN: list them on the plan card as their own user-led steps so the user knows they can drive that part themselves (or ask you to help later). Call this on the FIRST turn of the design stage (right after greeting) — it REPLACES writing the plan as a bullet list in your text reply. DO NOT call delegate_to_design, delegate_to_design_system, or dispatch_to_design_builder on the same turn — wait for the user to approve the plan via the card. The user clicks 'Run plan' to approve, which arrives as a hidden message on the next turn; then you proceed with execution.

propose_develop_plan

ChatGPT
Show the user a Develop kickoff plan card with the concrete features/screens you'll build in the develop stage. CRITICAL: The sandbox ALREADY has a pre-built Next.js project — DO NOT include a step like 'Set up the Next.js project structure' or any scaffolding/install work. The plan MUST focus on user-visible feature work (core flows, gameplay, screens, auth, integrations, leaderboards, etc.). Call this on the FIRST turn of the develop stage (right after greeting) — it REPLACES writing the plan as a bullet list in your text reply. DO NOT start building or dispatching any builder tools on the same turn — wait for the user to approve the plan via the card. The user clicks 'Run plan' to approve, which arrives as a hidden message on the next turn; then you proceed with execution.

propose_prd_plan

ChatGPT
Show the user a PRD kickoff plan card with the 4 phases you'll run through (read ideation + research context, present PRD template options, confirm the section outline, generate sections one by one). Call this on the FIRST turn of the PRD stage (right after greeting). DO NOT call setup_prd_outline or delegate_to_prd on the same turn — wait for the user to approve the plan via the card. The user clicks 'Run plan' to approve, which arrives as a hidden message on the next turn; then you proceed with Phase 1 (read context, present templates, etc.).

propose_research_plan

ChatGPT
Show the user a research plan card with 1-6 concrete research questions you intend to investigate. Default to 3-5, but honor the user when they ask for fewer (e.g. a single focused investigation like 'just the competitor landscape') — a one-step plan is valid. Call this on the FIRST turn of the research stage (right after greeting). DO NOT call delegate_to_research on the same turn — wait for the user to approve the plan via the card. The user clicks 'Run plan' to approve, which arrives as a hidden message on the next turn; then you can delegate with confidence.

propose_stage_transition

ChatGPT
Signal to the UI that the current stage is done and the user may advance to the next stage. Renders a 'Move to <stage>' CTA button. Call ONCE per turn when all stage exit criteria are met. When leaving ideation, a user-supplied or explicitly confirmed brand/product name is mandatory; an AI-generated or placeholder name does not count. Does NOT change state — the user clicks to confirm.

provision_database

ChatGPT
Provision a Postgres database for Build projects (Neon) and configure the sandbox: DATABASE_URL in .env, Prisma setup, and a db client. Idempotent — reuses an existing URL. For Develop-only projects, set an existing DATABASE_URL with manage_env_vars first; this tool wires Prisma without creating another database. The sandbox must be running. Requires project:write scope.

provision_storage

ChatGPT
Provision isolated file storage for the project (an S3 prefix with a project-scoped upload token) and write the PRODUCTOS_STORAGE_* credentials into the sandbox .env. Idempotent — safe to call again. The sandbox must be running. Requires project:write scope.

publish_file

ChatGPT
Publish files to the user-visible public folder. Prefer passing a files array in ONE call — do NOT call this tool multiple times. For each file, PREFER sourcePath (an absolute path to an existing sandbox file) over content: the sandbox copies the file in place, which is MUCH faster than re-sending the full body over the network. Legacy single-file shape { stage, fileName, content } is still accepted.

push_to_github

ChatGPT
Push the project's sandbox code to its GitHub repository. Dispatches an async job — check progress with get_deploy_status. Requires project:write scope.

qa_log_finding

ChatGPT
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_write_qa_report

ChatGPT
TERMINAL tool — call this EXACTLY ONCE at the end of the run. Writes the final QA report (verdict, summary, severity counts, routes tested) to the QARun row + wiki. After this call, the agent loop will halt.

read_file

ChatGPT
Read a file from the project's sandbox by path (relative to /home/user, e.g. 'src/app/page.tsx', or absolute). Text is returned inline (truncated at 200 KB); pass asBase64 for binary assets like images or fonts. Requires project:read scope.

read_project_structure

ChatGPT
Return the recursive file/directory tree of the project sandbox in one call (node_modules/.git/.next/dist/build pruned, capped at 2000 entries). Use this to understand project layout before reading specific files. Requires project:read scope.

read_shared_context

ChatGPT
Read the FROZEN shared contract every surface of a ProductOS Product is built against: spec/prd.md (requirements), spec/flows.md (user flows), spec/components.md (component spec), spec/design-tokens.json, spec/schema.prisma (the shared database), design-system/DESIGN.md, and progress/<surface>.md (what each sibling surface has done so far). Read the relevant parts BEFORE changing any surface of a Product — code that contradicts this contract will drift from the other platforms. Omit path to list what's available. This contract is READ-ONLY and has a single writer: never write into it (not via write_file into /home/user/shared either) — to change it, use manage_product({ action: "sync_spec" }). Requires project:read.

record_architecture_decision

ChatGPT
Record an Architecture Decision Record (ADR). Persists to the database and writes to wiki for agent context. Use for major decisions: database choice, framework, deployment strategy, API pattern, etc.

remember_fact

ChatGPT
Save important facts, decisions, or context to long-term project memory. These persist across sessions and are searchable by in-app agents and via search_memory. Pass all facts for the turn in one call. Requires project:write scope.

restart_sandbox

ChatGPT
Restart a project's sandbox. Default (soft) restarts just the dev server process — fixes a wedged/stuck preview quickly. Pass hard:true to recreate the sandbox instance (persistent volume preserved) — use when the sandbox itself is broken; this returns immediately with a restart handle and runs in the background. Poll with action:'status' until it reports READY or FAILED. Requires project:exec scope.

run_release_checks

ChatGPT
Run the project's release checks against its live deployment and report each route's expected vs actual HTTP status. Uses the project's configured checks when it has them, otherwise derives them from the routes in the last deploy. Also re-checks that every built route exists in production and that the database is reachable. Use this to confirm whether a deployment is actually healthy, or to see exactly which routes are failing and with what status. Does not deploy or change anything.

search_app_stores

ChatGPT
Fetch real customer reviews from the iOS App Store (via iTunes RSS) and/or Google Play (via SerpAPI). Use this for consumer mobile apps. You must supply at least one of iosAppId or androidPackageId — find them by inspecting the App Store / Play URL or asking the user. The iOS feed is rich (rating + body); the Android side returns search-snippet approximations because Google Play has no public reviews API.

search_files

ChatGPT
Search file contents across the project sandbox with a regular expression (grep -E). Build artifacts are excluded; results are capped at 200 matches. Returns 'path:line:match' rows. Requires project:read scope.

search_github

ChatGPT
Search GitHub for issues, PRs, and release notes mentioning a product. Use this for developer tools, SDKs, libraries, or any product whose users file public bug reports. Filters by repo name/description match before fetching, so 'Linear' won't return random unrelated repos. Returns the top-comments open issues plus the latest releases.

search_memory

ChatGPT
Semantic search over this ProductOS project's long-form memory (ideation notes, prior decisions, file uploads, agent transcripts). Returns the top-matching snippets with a similarity score. Use this when get_project_context / get_wiki_section didn't surface the answer — memory often has detail the wiki summary omits. v1 read-only.

search_reddit

ChatGPT
Search Reddit or Quora for unfiltered user complaints, frustrations, and opinions about a product. Use this when you want unvarnished community sentiment that Exa's general web search would dilute. Reddit has the highest signal for B2C / consumer products; Quora skews more toward question-and-answer threads.

search_reviews

ChatGPT
Search structured B2B review platforms (G2, Trustpilot) for reviews and complaints about a product. Use this for SaaS or service-based products where buyers post deliberate written reviews. Returns search snippets, not the full review text — follow up with exa_fetch on the most interesting URLs if you need the body.

set_active_brand_step

ChatGPT
Advance the Brand Guidelines wizard UI to a specific step (1–4). Call BEFORE prompting the user about that step so the form visibly moves. 1=Brand name/logo, 2=Colors, 3=Typography, 4=Vibe report. Mood board is NOT a wizard step anymore — it moved to the Design System tab and is triggered there after the design system locks in.

set_active_design_tab

ChatGPT
Switch the main Design page tab in the user's UI. Call this BEFORE talking about or generating content for a different tab so the user actually sees the panel you are working in. Tabs: 'brand' (Brand Guidelines wizard), 'design-system' (Design System picker/generator), 'flows' (User Flows canvas), 'screens' (UI Screens grid), 'builder' (Design Agent build panel). Example: when the user says 'let's go to user flows and UI screens', call this with 'flows' before doing any user-flow work.

set_brand_identity

ChatGPT
Step 1 — persist the brand name, tagline, and/or logo URL. Omit fields the user did not supply. Writes to the Design tab immediately; the form UI picks up the change via polling.

set_brand_setup_mode

ChatGPT
Persist the user's chosen mode for the Brand Guidelines wizard. 'guided' means the orchestrator walks the user through the 5 steps with ask_user; 'automatic' means the UI/UX sub-agent fills everything from recalled context. Use this when the user picks in chat rather than the form's mode banner.

set_project_framework

ChatGPT
Set or CONVERT the project's tech stack — updates both the framework and the project type, so this is how you turn a web project into a mobile (Expo) app, a marketing site (Astro), etc. The sandbox is rebuilt with the new template on the next open_project/start_sandbox (a mismatched sandbox is replaced automatically, its files re-seeded). Requires project:write. Confirm the stack choice with the user before calling.

set_stage

ChatGPT
Transition the project to a new stage. Call this ONLY after the user has explicitly consented in their most recent message (e.g. 'yes move to research', 'let's do PRD now'). Prefer propose_stage_transition when you believe the stage is done but the user hasn't yet said yes. IDEATION EXIT GATE: when the current stage is ideation, do not call this until the user has supplied or explicitly confirmed the brand/product name; an AI-generated or placeholder project name does not count. IMPORTANT: Calling set_stage creates a NEW chat session for the next stage and seeds it with a hidden auto-kickoff message — the agent on that new page will greet the user and start the work automatically. After calling this tool, you MUST emit exactly one short acknowledgment line ('Moving us into research now.') and STOP — do NOT call delegate_to_<next_stage> or any other tool in this turn. The work continues on the new stage's page.

start_sandbox

ChatGPT
Create or wake a project's sandbox with the correct template image and restore its files from the persistent volume / GitHub. Returns the preview URL, or a 'starting' note if the dev server is still coming up (poll get_sandbox_status). Requires project:write scope.

stop_sandbox

ChatGPT
Stop a project's sandbox to free compute. Blaxel has no pause API, so this deletes the sandbox instance — the persistent volume and GitHub repo are preserved, and start_sandbox restores the exact same files. Does NOT delete project data. Requires project:exec scope.

trigger_deploy

ChatGPT
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.

write_architecture_section

ChatGPT
Save an architecture section to /home/user/wiki/agents/architecture/sections/<slug>.md. Call this once per section (e.g. 'system-overview', 'database-design', 'api-design'). Each section should be self-contained. Include Mermaid diagrams inline where appropriate.

write_design_brief

ChatGPT
Save the full 5-section DESIGN.md brief. Writes /home/user/wiki/design-system/DESIGN.md (canonical full brief) AND auto-emits /home/user/wiki/design-system/design-brief.md (token-efficient companion: CSS vars, font URL, radii, component anchors only) so the Build agent can reload tokens cheaply on every turn. Also updates the DesignSystemConfig row and removes any stale /home/user/DESIGN.md. Call ONCE per run.

write_design_doc

ChatGPT
Save a design artifact to /home/user/wiki/agents/design/outputs/<slug>.md. Call this once per artifact (e.g. 'brand-guidelines', 'onboarding-flow', 'home-screen'). Each doc should be self-contained and actionable.

write_design_preview

ChatGPT
Legacy compatibility writer for both self-contained HTML previews in one call. Prefer write_design_preview_dark followed by write_design_preview_light so each payload stays below provider output limits.

write_design_preview_dark

ChatGPT
Save the DARK-mode standalone HTML preview after write_design_brief. Writes /home/user/wiki/design-system/preview.html and DesignSystemConfig.previewHtml. Keep the document focused (roughly 100-220 lines) while demonstrating hero, typography, buttons, cards, input, badges, tokens, and color swatches. Call once, then call write_design_preview_light.

write_design_preview_light

ChatGPT
Save the LIGHT-mode standalone HTML preview after write_design_preview_dark. Writes /home/user/wiki/design-system/preview-light.html and DesignSystemConfig.previewHtmlLight. Mirror the dark preview's sections and copy using the independently crafted light palette; keep it roughly 100-220 lines. Call once, then stop.

write_file

ChatGPT
Create or overwrite a file in the project sandbox (source code, configs, components, or a base64-encoded binary asset). Parent directories are created automatically. Use edit_file for targeted changes to a large file. Requires project:write scope.

write_prd_section

ChatGPT
Create or update a Product Requirements Document section. Each section is a separate markdown file with YAML frontmatter (title, position). The in-app PRD view reads these files directly. Requires project:write scope.

write_research_run

ChatGPT
Save a standalone research document for ONE topic to /home/user/wiki/agents/research/runs/<slug>.md. Call this once per research topic (e.g. 'competitor-audit', 'market-sizing'). Each doc should be self-contained — includes its own findings + cited sources. The UI lists all run docs on the right panel so the user can browse them.

write_wiki_section

ChatGPT
Create or overwrite a markdown file in the project's wiki. Path is wiki-relative (e.g. 'agents/research/runs/competitor-audit.md'). Parent directories are created automatically. Requires project:write scope.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

114

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily