{
  "markdown": "# 2ools MCP Server\n\n**Remote MCP server for [2ools](https://2ools.app) — build, version, review and export\nwebsites, web apps and games from inside the AI chat you already use.**\n\n[![MCP Registry](https://img.shields.io/badge/MCP%20Registry-app.2ools%2Fmcp-0a7?style=flat-square)](https://registry.modelcontextprotocol.io/v0/servers?search=2ools)\n[![Transport](https://img.shields.io/badge/transport-Streamable%20HTTP-444?style=flat-square)](https://modelcontextprotocol.io)\n[![Tools](https://img.shields.io/badge/tools-43-444?style=flat-square)](#tools)\n\n```\nhttps://2ools.app/mcp\n```\n\nYour assistant writes the site. 2ools is where it lives: every result becomes a\nrestorable version, previews are shareable links that need no account to open,\nand the source exports as plain files with no proprietary runtime.\n\n**One tool is free and needs no account at all** — `create_public_preview` turns a\nstandalone HTML document your model just wrote into a real, viewable URL. The rest\nconnect over OAuth 2.1 with PKCE and least-privilege scopes.\n\n---\n\n## Quick start\n\nPaste this into the AI client you want to connect:\n\n> Connect this client to 2ools (github.com/2ools/mcp-server, MCP endpoint https://2ools.app/mcp). Retrieve https://2ools.app/start non-visibly with an HTTP or web-fetch tool; never navigate the in-app browser to that instructions page. Use this client's in-app browser for every 2ools sign-in and authorization page; never use Chrome, another external browser, or the system browser when this client has an in-app browser or preview pane. The exact OAuth approval URL must be the first 2ools page you visibly open. Before I must act, your only user-facing setup message may be `Connecting 2ools in this client's browser…`. Do not output insight blocks or narrate setup mechanics. Ask me exactly once to sign in and click Authorize. Do not end your turn while authorization is pending; after it succeeds, keep the 2ools app visibly open in that pane. Fetch https://2ools.app/start and follow its \"For your AI\" steps exactly.\n\nThe live [start page](https://2ools.app/start) is the single current connection\nritual for every client. It detects the current client path, keeps OAuth alive,\nand leaves only sign-in and the **Authorize** click to the person. Manual MCP\nconfiguration is a fallback only for clients that cannot manage their own\nremote-MCP setup.\n\nAfter authorization, the initiating context selects the app destination: an\nexact project's Project OS when its ID is known, the new-project or\nexisting-project workspace flow when that intent is known, and the authenticated\nMCP workspace for a generic install. The public homepage is never the fallback.\n\n### Registry introspection proxy\n\nRegistries that require a local stdio process can run the included credential-free\nproxy. It forwards MCP JSON-RPC traffic to the same verified remote endpoint; it\ndoes not mock or reimplement any 2ools tools. It translates the stdio handshake\ninto the remote endpoint's current per-request MCP envelope and returns the live\nschemas from 2ools.\n\n```bash\nnpm ci\nnpm start\n```\n\nThe included `Dockerfile` runs the same dependency-free proxy for reproducible\nregistry introspection. It intentionally does not perform an interactive OAuth\nflow. Clients using authenticated workspace tools should connect directly to\n`https://2ools.app/mcp` so OAuth remains end-to-end with 2ools.\n\n### 2ools Skill\n\nFor assistants that support repository skills, add or copy the\n[2ools Skill](./skills/2ools/SKILL.md). It keeps the temporary-preview and\nOAuth workspace boundaries explicit. Client support for remote MCP and Skill\nfolders varies; the live start page routes each client to its supported flow.\n\n### Try it with no account\n\nAsk your assistant:\n\n> Write this as one standalone HTML document, create a free 2ools preview, and show me the link.\n\nYou get back a real URL that anyone can open. It expires after 24 hours.\n\n---\n\n## What you can do with it\n\n| Ask your assistant… | It uses |\n|---|---|\n| \"Open this generated site in 2ools and give me a client-safe preview link\" | `create_public_preview` |\n| \"Save this conversation as a durable 2ools project\" | `build_from_conversation` |\n| \"Make the hours bigger and show me the new version\" | `refine_project` |\n| \"Compare the last two versions\" | `compare_versions` |\n| \"What changed on this project since Tuesday?\" | `get_project_activity` |\n| \"Export the source as a zip\" | `prepare_version_export` |\n\n---\n\n## Tools\n\n43 tools, each with explicit `readOnlyHint` and `destructiveHint` annotations so a\nclient can reason about blast radius before calling anything.\n\n### Free — no account required\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `create_public_preview` | write | Turn a complete standalone HTML document already created in this chat into a temporary, read-only 2ools preview. |\n\n### Build and refine\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `build_from_conversation` | write | Create a new 2ools project from a structured conversation brief and queue one durable build. |\n| `refine_project` | write | Create one protected child version from a saved base version and concrete review feedback. |\n| `get_build` | read-only | Get one build's current status, progress, errors, completed version IDs, and protected preview URLs. |\n| `cancel_build` | destructive | Cancel a queued or running non-Agent 2ools build. |\n| `compare_versions` | read-only | Compare two saved versions in one project without returning source. |\n| `list_build_systems` | read-only | List the Curators, Rulebooks, and Skills this paid account may explicitly apply. |\n\n### Read a project\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_projects` | read-only | List recent 2ools projects the authenticated account can access, including owned and shared projects. |\n| `get_project` | read-only | Get a 2ools project's brief, selected pages, active version, and compact version history. |\n| `get_project_context` | read-only | Read one source-free operating packet before acting: the active version, exact frozen Curator snapshot, revision-… |\n| `render_project_preview` | read-only | Render an interactive, read-only card for one saved 2ools version. |\n| `get_project_activity` | read-only | Read the attributable project timeline across human work, external MCP agents, builds, versions, feedback, and… |\n| `wait_for_project_activity` | read-only | Wait up to 20 seconds for attributable project events newer than a head_cursor or prior next_cursor. |\n\n### Review and approval\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_approval_requests` | read-only | List exact saved versions waiting for a separately delegated reviewer. |\n| `approve_version` | destructive | Use separately delegated review authority to approve one saved version and make it the project's active version. |\n| `reject_version` | destructive | Use separately delegated review authority to reject one saved version. |\n\n### Feedback and shared notes\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_project_feedback` | read-only | Read page-anchored review feedback for versions in a project, with explicit human or external-agent attribution. |\n| `add_project_feedback` | write | Add an attributable review comment to a saved project version. |\n| `resolve_project_feedback` | destructive | Owner-only review decision that resolves or reopens one saved feedback item. |\n| `list_project_pins` | read-only | Read shared workspace notes and http(s) links, with explicit attribution. |\n| `add_project_pin` | write | Add an attributable note or safe http(s) link to the shared project workspace. |\n| `remove_project_pin` | destructive | Remove one shared workspace pin. |\n\n### Export and sharing\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `prepare_version_export` | read-only | Create a five-minute download URL for an exact saved version. |\n| `get_version_share_link` | read-only | Read the durable sharing state and current URL for one exact saved version. |\n| `create_version_share_link` | write | Create or recover a durable public or code-protected link for one exact saved version. |\n| `revoke_version_share_link` | destructive | Disable every existing public or code-protected URL for one exact saved version. |\n\n### Artifacts\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_artifacts` | read-only | List durable project artifacts and each latest immutable version without returning stored bytes. |\n| `get_artifact` | read-only | Read one artifact's immutable version history, provenance, attribution, digests, and review states without… |\n| `prepare_artifact_upload` | write | Create a five-minute PUT URL for exact bytes. |\n| `prepare_artifact_download` | read-only | Create a five-minute download URL for one immutable artifact version. |\n| `list_artifact_approval_requests` | read-only | List exact artifact versions awaiting or carrying a human review decision. |\n| `approve_artifact_version` | write | Approve one pending immutable artifact version and make it current. |\n| `reject_artifact_version` | write | Reject one pending immutable artifact version with useful feedback. |\n\n### Agents\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_project_agents` | read-only | List the authorizing account's built-in Agents assigned to one readable project. |\n| `get_agent` | read-only | Read one Agent's saved Limits, trigger, immutable revision summaries, and redacted append-only run traces. |\n| `run_project_agent` | write | Queue real execution for a project-linked Agent the person already test-ran and armed. |\n| `cancel_agent_run` | destructive | Stop one queued or running Agent execution and close its durable run history. |\n\n### Work assignments\n\n| Tool | Effect | What it does |\n|---|---|---|\n| `list_work_assignments` | read-only | List durable project work contracts, bounded attempts, leases, budgets, and result references. |\n| `create_work_assignment` | write | Create a durable assignment with acceptance criteria and hard step, time, and spend ceilings. |\n| `claim_work_assignment` | write | Atomically claim one open assignment and receive a five-minute renewable lease plus an immutable budget snapshot. |\n| `heartbeat_work_session` | write | Renew the authenticated worker's active lease without widening its immutable step, time, or spend ceilings. |\n| `submit_work_session` | write | End the authenticated worker's lease and submit typed result references for a separate review decision. |\n| `decide_work_assignment` | write | Complete submitted work or reopen it with useful feedback. |\n---\n\n## Authentication\n\n| Access | Method | Scopes |\n|---|---|---|\n| `create_public_preview` | none — genuinely authless | — |\n| Everything else | OAuth 2.1 authorization code + PKCE (S256) | least-privilege, consented per connection |\n\nThe authorization server publishes RFC 8414 and RFC 9728 discovery documents at\n`/.well-known/oauth-authorization-server` and `/.well-known/oauth-protected-resource`,\nsupports RFC 7591 dynamic client registration, rotates refresh tokens with family\nrevocation on replay, and stores only token digests.\n\n**Review authority is deliberately separate from build authority.** `projects:build`\nlets an agent produce candidate versions; `approve_version` and `reject_version`\nrequire `projects:approve`, which is excluded from default grants. An agent that can\nbuild cannot sign off on its own work unless a human explicitly delegates that.\n\n---\n\n## Design notes\n\n**Source never travels through the model transcript.** Exports and artifact downloads\nare five-minute signed URLs bound to the action, the account and the exact version.\nThe MCP response carries metadata and links, not bytes — so a large site does not\nconsume the context window, and generated source is not replayed into a provider log.\n\n**Shared previews run in an opaque-origin sandbox.** A shared page is served under a\nCSP sandbox with `connect-src 'none'`, so a site built by a model cannot read the\nviewer's cookies, storage, or reach the network.\n\n**External agent output enters review, not production.** An artifact uploaded by an\noutside agent is stored immutably and marked pending; it cannot become the current\nversion until a human with review authority approves that exact digest.\n\n**Interactive previews use MCP Apps.** `render_project_preview` returns a real\ninteractive card via `ui://2ools/project-preview-v1.html` rather than a wall of text.\n\n---\n\n## Links\n\n- **Product** — <https://2ools.app>\n- **Connection guide** — <https://2ools.app/connect-ai>\n- **Free website audit** (28 deterministic checks, no account) — <https://2ools.app/website-audit>\n- **Benchmarks: 36 real sites scored** — <https://2ools.app/website-audit/benchmarks>\n- **What 2ools does** — <https://2ools.app/product>\n- **Pricing** — <https://2ools.app/pricing>\n- **LLM guide** — <https://2ools.app/llms.txt>\n- **Privacy & terms** — <https://2ools.app/legal>\n\n## Registry\n\nPublished to the official Model Context Protocol registry under the\ndomain-verified namespace **`app.2ools/mcp`**.\n\n```bash\ncurl \"https://registry.modelcontextprotocol.io/v0/servers?search=2ools\"\n```\n\n## Status\n\nThe endpoint is live in production. Health, including the exact deployed release:\n\n```bash\ncurl https://2ools.app/api/health\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE). This repository holds the server's public manifest\nand documentation; the 2ools application itself is a hosted product.\n",
  "bytes": 13432,
  "sha": "7b32aa6977cc50d26587925ec62c11b6eabc7b8f51a4b1feb56c1c972d2b8237",
  "repo_slug": "2ools/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_app_2ools_mcp_899ebc0e/readme"
}