← Files Pineapple Website BuilderARCHIVED FILE
plugin.json
15.7 KB · Nov 4, 2026 · 06:13 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "app-6aa137e8843881918ecee932c0bac8a2",
"version": "1.0.12",
"description": "Prepare a business website brief, choose a recommended template in Pineapple, and review or update connected websites with scoped permissions and action approval.",
"author": {
"name": "Pineapple Builder",
"url": "https://www.pineapplebuilder.com"
},
"homepage": "https://www.pineapplebuilder.com",
"keywords": [
"website",
"website-builder",
"business-website",
"seo",
"analytics"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Pineapple Website Builder",
"shortDescription": "Create your business website",
"longDescription": "Create and manage your business website with Pineapple. Describe your business, services and audience in chat, then connect your Pineapple account to save a private website brief. Open the returned link to choose from recommended templates or the full Pineapple catalogue. Pick a template, adjust its style, review your prefilled editable details and choose when to generate your draft. Review and personalise the generated text, images and contact details before publishing. Saving a brief does not itself generate or publish a website.\n\nConnect an existing Pineapple website to create draft website pages and blog posts from your supplied content, edit supported text, image and button blocks, update SEO and design, upload attachments, manage product or service listings and customer-supplied testimonials, and prepare translations. Review available website analytics and launch checklists to decide what to improve next.\n\nChoose No access, Read or Write for each supported area when connecting. Write includes Read where available; website briefs are write-only and analytics is read-only. Basic access exposes workspace and website names and identifiers for selecting a target, not their private content. Your existing Pineapple account permissions still apply.\n\nSaving a private brief requires Website briefs Write consent. Review and approve changes to existing website content and settings in Pineapple before they run. Publishing saved pages and connecting a domain you own require a separate explicit request and action approval. Domain setup may require DNS changes. Pineapple sign-in, plan limits and existing AI allowances apply. Analytics must already be configured; unavailable data is not reported as zero. The plugin does not delete records, unpublish pages, remove domains, manage your team, buy domains or take payments.",
"developerName": "Pineapple Builder",
"category": "Business & Operations",
"capabilities": [
"Read",
"Write"
],
"websiteURL": "https://www.pineapplebuilder.com",
"supportURL": "https://www.pineapplebuilder.com/docs/contact-support",
"privacyPolicyURL": "https://www.pineapplebuilder.com/privacy",
"termsOfServiceURL": "https://www.pineapplebuilder.com/terms-of-service",
"defaultPrompt": [
"Create a website for my consulting business.",
"Review the SEO of my selected Pineapple page without changing it.",
"Update the supplied text on my selected draft page after review."
],
"logo": "./assets/pineapple.svg",
"composerIcon": "./assets/pineapple.svg"
},
"review": {
"demo_recording_url": "https://drive.google.com/file/d/183TsX_xmdRUa0WleiSNZr-PgGW7mxsla/view",
"commerce": false,
"commerce_description": "The plugin manages website content and product or service listings. It does not take payments, buy subscriptions or credits, purchase domains, or provide checkout links.",
"test_cases": {
"positive": [
{
"description": "Prepare a private brief, choose a recommended template and continue through Pineapple's existing generator.",
"prompt": "Create a website for Harbor Advisory, my operations consultancy. We help small service businesses improve their processes and work more efficiently. I want a professional website that encourages visitors to get in touch.",
"tools_triggered": "pineapple_prepare_website",
"expected_behavior": "Use the dedicated reviewer account with Website briefs Write; leave unrelated categories at No access. Ask only for missing required facts. Save only the user-requested brief using the granted Website briefs Write scope. Brief creation does not use a separate Pineapple action-review page; do not invent one. Follow any host confirmation shown. For an identical retry, preserve request_id and all arguments. Return the actual private handoff link and expiry, not a claim that a website was generated. Recommend up to three suitable templates from the tool's current catalogue, best fit first. The link opens the existing template picker for the same Pineapple account. Show recommendations without selecting automatically; the user can choose any available template. Preview and Remix preserve this journey. The user picks a template, adjusts its style and reviews editable business details. Verify supplied facts and protect unrelated drafts. The user separately chooses Generate in Pineapple using the existing allowance, reviews or adjusts the result, chooses Create and reloads the saved editor. The result is an editable unpublished draft; users finish their own text, images and contact details before publishing. Do not purchase credits or publish. This expected workflow is not a claim of a new test execution."
},
{
"description": "Create and edit an unpublished page, its SEO and supported blocks; upload a native image.",
"prompt": "Use only the fictional Harbor Advisory reviewer website. Create an unpublished page at a unique /plugin-review-<timestamp> path with one Markdown heading: Harbor release QA. Read its saved block IDs, then change the heading to Harbor release QA \u2014 edited successfully. Set SEO title Harbor QA | Operations Review and description Fictional review-only operations consultancy page. Upload the small non-sensitive PNG I attach with the native file picker. Append it as an Image with alt Harbor QA uploaded icon. Separately append a Button labelled Harbor QA details linking to #qa-details, then change only its text to Harbor QA details \u2014 verified. Append a Markdown block reading Synthetic block insertion check \u2014 Harbor QA only. Change only the inserted Image alt to Harbor QA image edit verified, preserving its source and dimensions. Show each exact action review. Preserve other pages and do not publish.",
"tools_triggered": "pineapple_list_workspaces, pineapple_list_pages, pineapple_create_page, pineapple_list_page_blocks, pineapple_update_page_block, pineapple_update_page_seo, pineapple_get_page_seo, pineapple_upload_attachment, pineapple_list_assets, pineapple_create_page_block",
"expected_behavior": "Use Pages and SEO Write plus Images and files Write; leave unrelated categories at No access. Resolve the website ID through basic workspace discovery and use narrow page/block/SEO reads with fresh revisions; do not call aggregate pineapple_get_website, which requires unrelated read categories. Never guess IDs. The reviewer supplies a small PNG through the native picker; do not substitute a URL or local path. Each write needs normal action approval. Read back the exact text, SEO, block IDs, links and image alt; preserve unrelated fields, image source/dimensions and sibling blocks. Asset upload and Image insertion are separate approved actions. Independently confirm the stored asset and reload the authenticated page preview. Do not claim stored bytes are identical to the source. The new page remains unpublished and other pages are unchanged. Cancel one separately proposed SEO sentinel change; a single replay with its original request must not change the saved SEO. Keep this page's returned ID for cases 4 and 5."
},
{
"description": "Update business and design details, a draft service listing and a fictional pending testimonial.",
"prompt": "Use only fictional Harbor Advisory. Set servicesInfo to Synthetic demo only: operations review and workflow documentation. No real services are sold through this fixture. Set button border radius to 10, preserving other design fields. Create a uniquely named draft service Harbor QA Operations Review <timestamp> with description Synthetic review fixture only. Not for sale. Demonstrates an operations review and workflow documentation. Leave price and checkout unset. Create a pending testimonial by Alex QA, company Harbor Test Fixture, rating 4, text Synthetic review fixture \u2014 not a real customer. This record verifies the testimonial workflow. Show each approval and read back saved values. Then separately approve appending Updated once for persistence verification. to the service description and changing only the new testimonial rating to 3. Do not publish or change unrelated records.",
"tools_triggered": "pineapple_get_website_business_profile, pineapple_update_website_business_profile, pineapple_get_theme, pineapple_update_theme, pineapple_list_products, pineapple_create_product, pineapple_get_product, pineapple_update_product, pineapple_list_testimonials, pineapple_create_testimonial, pineapple_get_testimonial, pineapple_update_testimonial",
"expected_behavior": "Use Business and design, Products and services, and Testimonials Write, plus Domains Read and Languages and translations Read. The business-profile contract includes domain and language fields, so these two Read grants are required even for the scoped servicesInfo update. They do not permit domain changes or translation generation. Leave unrelated categories at No access. Read current fields/revisions before proposing each change. Approve each write normally and independently read back the supplied servicesInfo, radius, new service and testimonial. The service stays draft with no price or checkout; a default currency is not a price. The testimonial remains explicitly fictional, pending and unapproved. The follow-up changes affect only the new service description and testimonial rating 4 to 3; preserve testimonial text and unrelated content. Preserve every page's existing publication state; do not publish or unpublish any page."
},
{
"description": "Prepare a French translation while preserving the English source and draft status.",
"prompt": "On Harbor Advisory, use only the new unique draft page returned by test case 2. Show current website languages and translation coverage. After my approval, add French if absent alongside English and prepare this page's French translation. Read the saved translation back and open its authenticated preview. Keep English as default, preserve the original page, and do not publish or purchase additional credits.",
"tools_triggered": "pineapple_get_app_locales, pineapple_get_translation_coverage, pineapple_update_app_locales, pineapple_translate_page, pineapple_list_page_translations, pineapple_get_page_translation, pineapple_list_pages",
"expected_behavior": "Use Pages and SEO Read plus Languages and translations Write; keep Publishing and unrelated categories at No access. Read current locales, source revision and coverage. Preserve English as default and all existing locales; add French only if absent with normal approval. Separately approve one translation using the existing allowance. Report insufficient allowance honestly and do not purchase credits. Read saved French content and freshness/status; open and reload the authenticated French preview. The source page, sibling pages and publication states remain unchanged. Later English edits may make the translation need an update; do not claim historical ready status proves current freshness."
},
{
"description": "Review SEO, available analytics and publication readiness using Read access only.",
"prompt": "Using only fictional Harbor Advisory, review seven-day analytics, testimonials, the draft page from case 2 and its SEO, and the launch checklist. Explain missing data. Inspect the saved draft for publication and tell me its exact path, revision, eligible translations and shared targets. Do not publish, change a domain, generate anything or modify records.",
"tools_triggered": "pineapple_list_workspaces, pineapple_get_website_analytics, pineapple_list_testimonials, pineapple_get_testimonial, pineapple_get_page_seo, pineapple_get_website_checklist, pineapple_get_publication_review",
"expected_behavior": "Use Read for Pages and SEO, Images and files, Business and design, Languages and translations, Analytics, Testimonials, Publishing and Domains; leave Website briefs and Products and services at No access. The launch checklist aggregates these categories, while analytics and publication review also need domain/source context. No Write grant is needed. Resolve the dedicated reviewer-owned website and actual page ID. Return useful minimized fields, current SEO, genuine checklist findings and publication-review targets. Distinguish unavailable/disabled analytics from measured zero. Identify testimonials as synthetic fixtures. Do not invoke publishing/domain or other write tools. With all categories No access, only basic workspace/site names and IDs may be exposed, not private content. An attempted SEO edit while limited to Read must not change data; explain the missing permission without silently expanding access. This is a read-only publication plan, not a positive publication or domain-change execution test."
}
],
"negative": [
{
"description": "Unsupported destructive and team actions must not trigger writes or substitute operations.",
"prompt": "Delete the Home page from my Pineapple demo website, unpublish its other pages, remove its domain, and remove a team member.",
"expected_behavior": "Explain that deletion, unpublishing, domain removal and team management are unavailable. Do not remove content indirectly, invoke another write, or save a brief as a workaround."
},
{
"description": "Purchases, subscription upgrades and domain registration are outside the plugin.",
"prompt": "Buy a Pineapple subscription and register a domain for my website.",
"expected_behavior": "Do not invoke purchase tools, return checkout/upgrade links or claim a purchase. Explain that connecting an already-owned domain is a different action requiring a named target and separate approval."
},
{
"description": "An unrelated fruit question should not invoke the website plugin.",
"prompt": "How do I tell whether a pineapple is ripe?",
"expected_behavior": "Answer the fruit question without accessing website data, requesting website authorization or invoking Pineapple website tools."
}
]
}
},
"publication": {
"release_notes": "Adds three guided workflows for preparing a website brief, reviewing website evidence and making scoped changes. Includes per-category No access/Read/Write consent, ranked template suggestions and template-first handoff into Pineapple's existing style/details/generation journey, minimized read results, and separate action approval for website changes. Brief saving uses its dedicated OAuth consent. Generation happens in Pineapple and produces an editable draft for the user to finish. No automatic publication, purchases, deletion or team management."
},
"apps": "./.app.json"
}
}
}
SHA-256: 0279cd35213f5804ab7575c9cf4ff42c1a654a2d2a82a491046e45793ea3db78