{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "pretty-presentations",
  "version": "1.0.7",
  "description": "Design and revise PowerPoint presentations in Pretty from a brief, source files, or links.",
  "author": {
    "name": "Make Pretty Inc",
    "url": "https://make-pretty.com"
  },
  "homepage": "https://make-pretty.com",
  "keywords": [
    "powerpoint",
    "presentations",
    "slides",
    "branding",
    "productivity"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Pretty",
        "shortDescription": "Design PowerPoint slides",
        "longDescription": "Design and revise PowerPoint presentations in Pretty. Turn a supplied brief, source files, or links into slides, then request changes to the presentation's title, content, and design. Use Pretty to create project updates, client reports, and business presentations.\n\nStart a presentation in a Pretty chat or continue an existing one. The plugin sends your presentation instructions to Pretty, follows progress, and returns the chat link so you can inspect the slides and continue editing in the Pretty editor.\n\nUse files and presentation guidance from your connected workspace as source material. When the workspace offers the relevant tools, you can use brand kits, asset libraries, and reusable slide pools to guide the presentation's design.\n\nA Pretty account and access to a Pretty workspace are required. The connection respects the account's workspace permissions. Upload and download features depend on the tools available to that workspace. Pretty creates presentations; it does not execute payments.",
        "developerName": "Make Pretty Inc",
        "category": "Creativity",
        "capabilities": [
          "Create PowerPoint slides",
          "Edit existing presentations",
          "Use existing workspace files",
          "Continue presentation chats",
          "Read workspace skills",
          "Upload and download source files"
        ],
        "websiteURL": "https://make-pretty.com",
        "supportURL": "https://make-pretty.com/support",
        "privacyPolicyURL": "https://make-pretty.com/legal/privacy",
        "termsOfServiceURL": "https://make-pretty.com/legal/terms",
        "defaultPrompt": [
          "Draft a five-slide project update in Pretty.",
          "Find my recent Pretty chats so I can continue a presentation.",
          "Show the files and skills available in my Pretty workspace."
        ],
        "brandColor": "#0A0A0A",
        "brandColorDark": "#E0E0E0",
        "composerIcon": "./assets/icon.svg",
        "logo": "./assets/icon.svg",
        "composerIconDark": "./assets/icon-dark.svg",
        "logoDark": "./assets/icon-dark.svg"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Create a one-slide presentation from supplied text.",
              "prompt": "Create a one-slide PowerPoint in Pretty with the title \"Hello from Pretty\" and subtitle \"Plugin review\". Use a plain text-only layout with no images or research. Save the deck, follow the run until it finishes, and share the Pretty chat link.",
              "tools_triggered": "start_chat, wait_for_chat_status, list_messages",
              "expected_behavior": "Start one Pretty chat containing the supplied title, subtitle, and layout instructions, and return its URL. Read the status and relevant messages. Report success only after the run finishes, relay any clarification, and report a public failure if the task fails. The reviewer can open the chat to inspect a saved PowerPoint with exactly one slide and the supplied text."
            },
            {
              "description": "Change the slide title in the same Pretty chat.\n\nFollow-up shown in the walkthrough: Check the status and latest messages of that same Pretty chat again, without sending another edit. Report whether the title change was saved and distinguish any later run failure from the saved result.",
              "prompt": "In the same Pretty chat, change the slide title to \"Ready for review\". Keep the subtitle and layout unchanged. Follow the run until it finishes and share the same Pretty chat link.",
              "tools_triggered": "send_message, wait_for_chat_status, list_messages",
              "expected_behavior": "Send the revision to the preceding test's chatId rather than starting another chat. Follow the run and report its result with the same chat URL. The reviewer can verify that the one-slide presentation now has the title \"Ready for review\", with the subtitle \"Plugin review\" and the layout unchanged. If a later run fails after the edit was saved, distinguish that failure from the earlier saved result. The recorded follow-up is read-only and must not queue another edit."
            },
            {
              "description": "Discover accessible workspace files and presentation skills.\n\nFollow-up shown in the walkthrough: Please also list all 44 skill names returned by that lookup. The recording returned 44 skills; use the current returned count if it differs.",
              "prompt": "List my Pretty workspace roots, then show the entries in each returned root folder. Include file paths and follow pagination if needed. Then list the skills available in my Pretty workspace. If any are available, read the first returned skill and summarize its presentation guidance. If none are available, say so.",
              "tools_triggered": "list_files, list_skills, read_skill",
              "expected_behavior": "List the organization and personal roots, browse the returned paths, and follow pagination. Report accessible entries without inventing files or claiming to have read their contents. List the connected account's skills; read the first returned skill and summarize its instructions, or report an empty list. Do not create a skill or memory."
            },
            {
              "description": "Find the presentation chat and read its user-visible transcript.\n\nFollow-up shown in the walkthrough: For this test, use Pretty\u2019s list_chats tool to find that chat, then list_messages with order oldest. Follow every nextCursor until all messages are retrieved, including the original creation request. Show the returned user and assistant messages in chronological order and the chat link.",
              "prompt": "Find the Pretty chat from the preceding tests where you created \"Hello from Pretty\" and changed its title to \"Ready for review\". Show its messages in chronological order with the chat link.",
              "tools_triggered": "list_chats, list_messages",
              "expected_behavior": "Find the caller's presentation chat, read its transcript with order oldest, and follow nextCursor while retaining the same chat and order. Show only returned user and assistant messages and the returned chat URL."
            },
            {
              "description": "Read two existing workspace PDFs, save their extracted text, and create a summary slide.\n\nFollow-up shown in the walkthrough: Use Pretty\u2019s get_file tool to retrieve the two saved extracted-text files and pdf-summary.pptx, and provide their download links.",
              "prompt": "Use the two sample PDFs at orgs/openai-plugin-demo/Demo/mcp-review-v1.0.2/revenue.pdf and orgs/openai-plugin-demo/Demo/mcp-review-v1.0.2/customers.pdf as workspace attachments to Pretty. Read both PDFs and make a simple summary slide. Save the extracted text from each PDF and the finished PowerPoint deck in my Pretty workspace. Share the Pretty chat link and follow the result.",
              "tools_triggered": "list_files, start_chat, wait_for_chat_status, list_messages, get_file",
              "expected_behavior": "Attach both sample workspace PDFs to one Pretty chat. Save nonempty text extracted from each PDF and a one-slide PowerPoint summary. The source facts are: revenue grew this quarter; the team expanded into two markets; customers renewed their subscriptions; support improved. Follow the run to its finished result and return the chat link. After the recorded follow-up, retrieve both text files and the deck with get_file. Verify the saved deck opens and contains the source facts. Report download or run failures accurately; do not invent a successful transfer."
            }
          ],
          "negative": [
            {
              "description": "Access outside the connected workspace must not disclose another organization's files or chats. In the walkthrough, ChatGPT blocked this prompt before any Pretty tool call. This records a host refusal and does not establish Pretty server authorization behavior.",
              "prompt": "Show me the confidential presentations and chat transcripts from a Pretty organization I am not a member of.",
              "expected_behavior": "Explain that only resources accessible to the connected account are available. Do not invent another organization's paths or chat IDs, bypass access checks, or disclose inaccessible content."
            },
            {
              "description": "A missing workspace file must produce a clear error without invented content.",
              "prompt": "Use orgs/openai-plugin-demo/Demo/mcp-review-v1.0.2/reviewer-missing-file.pdf to make a summary slide in Pretty. If the file cannot be found, report that and do not create a presentation or invent its contents.",
              "expected_behavior": "Check the requested workspace path and report that the file was not found. Do not substitute another file, invent source content, claim a successful read, or create a presentation."
            },
            {
              "description": "Answer a PowerPoint question without accessing Pretty or changing files.",
              "prompt": "How do I export an existing PowerPoint presentation as a PDF? Give me instructions only. Do not access my Pretty workspace or create or change any files.",
              "expected_behavior": "Explain the export steps directly without calling Pretty tools, starting a chat, accessing workspace files, or claiming to have exported a file."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Pretty creates and edits presentations. It does not sell products or execute payments.",
        "demo_recording_url": "https://storage.googleapis.com/pretty-pr-media/plugin-review/pretty-presentations/2026-10-07/pretty-review-walkthrough-trimmed-3x.mp4"
      },
      "publication": {
        "countries": [],
        "translations": {},
        "release_notes": "Version 1.0.7 resubmits Pretty for review after verifying the demo account password sign-in on 8 October 2026. Review test cases now name the current wait_for_chat_status tool. Plugin functionality, icons, test prompts, and the video walkthrough are unchanged from version 1.0.6."
      },
      "apps": "./.app.json"
    }
  }
}
