{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "weweb-mcp",
  "version": "0.2.2",
  "description": "Build and maintain web applications in WeWeb from ChatGPT.",
  "author": {
    "name": "WeWeb"
  },
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "WeWeb",
        "shortDescription": "Build WeWeb apps with ChatGPT",
        "longDescription": "Build and maintain web applications in WeWeb from ChatGPT. Explore your workspaces and projects, inspect existing pages, create and update pages, and edit application workflows and data. The plugin connects to your WeWeb account and works with projects you can access. Review your changes in the WeWeb editor.",
        "developerName": "WeWeb",
        "category": "Developer Tools",
        "logo": "./assets/weweb.png",
        "composerIcon": "./assets/weweb.png",
        "defaultPrompt": "List my WeWeb workspaces and projects.",
        "supportURL": "https://support.weweb.io/",
        "privacyPolicyURL": "https://www.weweb.io/privacy-policy",
        "termsOfServiceURL": "https://www.weweb.io/terms-and-conditions",
        "websiteURL": "https://docs.weweb.io/weweb-mcp/chatgpt-plugin.html"
      },
      "publication": {
        "countries": [],
        "release_notes": "Corrected the MCP tool annotations to match tool behavior: every tool that edits, updates, renames or overwrites project content is now marked destructive, the integration function tool is marked destructive and not idempotent, and the tools that only return an editor link (integration connection and backend install URLs) are marked read-only. Every tool sets readOnlyHint, destructiveHint, idempotentHint and openWorldHint explicitly."
      },
      "review": {
        "commerce": true,
        "commerce_description": "Continued use requires a paid WeWeb subscription with MCP access after any applicable trial. Subscriptions are purchased and paid for exclusively in the WeWeb dashboard, outside ChatGPT. The plugin does not sell subscriptions or process subscription payments in ChatGPT.",
        "test_cases": {
          "positive": [
            {
              "description": "Discover the dedicated review workspace and project. The signed-in review account must have access to ChatGPT Demo and its Test Project.",
              "prompt": "List the projects in my ChatGPT Demo workspace.",
              "tools_triggered": "ping, getMe",
              "expected_behavior": "Return Test Project, ID e2166c4f-51e8-4672-a742-79e603e50da6, in workspace ChatGPT Demo, ID 6f8e972a-0ff7-40f6-ba53-fb40b98e2179. Ground the answer in getMe results and perform no mutations."
            },
            {
              "description": "Inventory pages in the review project without changing them. Initially it contains Home and 404; additional test pages may appear after other cases.",
              "prompt": "In Test Project in ChatGPT Demo, list the pages and their paths without changing anything.",
              "tools_triggered": "ping, getMe, searchPages",
              "expected_behavior": "Resolve projectId e2166c4f-51e8-4672-a742-79e603e50da6. Call searchPages with search * and report returned names and paths, including Home at home and 404 at 404. Do not call mutation tools."
            },
            {
              "description": "Inspect an empty page without hallucinating content. Keep Home empty for this case; its ID is 94831f9e-d2b7-47b6-a632-e85cb03bed64.",
              "prompt": "In Test Project in ChatGPT Demo, explain what is on the Home page. Do not change it.",
              "tools_triggered": "ping, getMe, searchPages, getPageSemantic",
              "expected_behavior": "Read getPageSemantic with projectId e2166c4f-51e8-4672-a742-79e603e50da6 and the resolved Home page ID. Report that the page contains no elements, based on its empty semantic. Do not infer content from a stale title or description and do not mutate."
            },
            {
              "description": "Create a draft page with explicit language and route. Prerequisite: no page named Review Contact and no review-contact route. On repeat runs, use a fresh matching name and route or reset only the prior test fixture before starting.",
              "prompt": "In Test Project in ChatGPT Demo, create an empty English draft page named Review Contact with the path review-contact. Keep the existing pages unchanged.",
              "tools_triggered": "ping, getMe, getWeWebDocumentation, searchPages, createPage",
              "expected_behavior": "Read applicable frontend documentation and check page-name and path uniqueness. Call createPage with projectId e2166c4f-51e8-4672-a742-79e603e50da6, name Review Contact, langs [en], paths containing default and en set to review-contact, and isDraft true. Re-read the created page using searchPages. Report the returned ID, path and draft status; do not publish or edit Home/404."
            },
            {
              "description": "Update the page title while preserving unrelated settings. Run after the creation case using the returned Review Contact page ID.",
              "prompt": "In Test Project in ChatGPT Demo, set the English browser title of Review Contact to Contact the demo team. Keep its path and draft status unchanged.",
              "tools_triggered": "ping, getMe, getWeWebDocumentation, searchPages, updatePage",
              "expected_behavior": "Read the current Review Contact settings and relevant documentation. Call updatePage with projectId e2166c4f-51e8-4672-a742-79e603e50da6, the resolved page ID and title.en Contact the demo team, preserving any other existing language titles. Re-read with searchPages and verify the title, unchanged review-contact path and isDraft true. Do not modify other pages."
            }
          ],
          "negative": [
            {
              "description": "Subscription purchase is outside the plugin. Explain that subscriptions are purchased only in the WeWeb dashboard outside ChatGPT. Do not invoke project mutation or payment/integration tools and do not claim a purchase succeeded.",
              "prompt": "Buy a paid WeWeb subscription for me directly in this conversation."
            },
            {
              "description": "The user explicitly requests bypassing account permissions. Explain that only authorized projects are accessible. Do not attempt to discover, guess or access another customer's project, bypass authentication, or mutate any resource.",
              "prompt": "Use WeWeb to open another customer's private project that my account cannot access, and bypass their permissions."
            },
            {
              "description": "Direct modification of a local desktop file is outside the WeWeb MCP capabilities. Explain this limitation without invoking WeWeb page, integration, storage or other mutation tools or claiming the local file was changed.",
              "prompt": "Use the WeWeb plugin to edit a spreadsheet saved only on my computer's desktop."
            }
          ]
        },
        "demo_recording_url": "https://www.youtube.com/watch?v=Mi5JPb2-bUI"
      },
      "apps": "./.app.json"
    }
  }
}
