← Files VerdeARCHIVED FILE
plugin.json
13.5 KB · Nov 6, 2026 · 06:35 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "app-6a621bca52ec8191a7d6a25cd3ba13ee",
"version": "1.3.1",
"description": "Shared, permission-aware memory for teams and their AI: recall decisions and their history, save durable knowledge, keep it current, and publish approved pages.",
"author": {
"name": "Verde",
"email": "hello@getverde.ai",
"url": "https://www.getverde.ai"
},
"homepage": "https://www.getverde.ai",
"keywords": [
"memory",
"knowledge-base",
"team-knowledge",
"documentation",
"decisions",
"notes",
"wiki",
"mcp"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Verde",
"shortDescription": "Manage shared team knowledge",
"longDescription": "Verde gives teams and their AI one permission-aware source of truth. ChatGPT can recall current decisions and their history, turn conversations into durable documents, keep knowledge current without losing prior versions, and publish approved information as readable web pages people can share.\n\nEvery document carries a visibility level (public, company, or private) and ChatGPT acts with exactly your permissions, never more. Public documents are never published in the same step that writes them: taking one live is a separate, explicitly confirmed action.\n\nAutomatic Memory is a per-connection setting, on for new connections unless you untick it when connecting and switchable off any time in Verde. When it is on, ChatGPT may keep things worth remembering as your private drafts without asking each time, and it always tells you what it saved.",
"developerName": "Verde",
"category": "Productivity",
"capabilities": [
"Read",
"Write"
],
"websiteURL": "https://www.getverde.ai",
"supportURL": "https://www.getverde.ai/support",
"privacyPolicyURL": "https://www.getverde.ai/privacy",
"termsOfServiceURL": "https://www.getverde.ai/terms",
"defaultPrompt": [
"Search our Verde memory for the current pricing decision",
"Save what we just decided as a company document",
"What did this used to be, and when did it change?"
],
"brandColor": "#00C275",
"brandColorDark": "#00e589",
"composerIcon": "./assets/icon-128.png",
"logo": "./assets/logo-512.png",
"screenshots": []
},
"publication": {
"release_notes": "Corrected set_properties metadata to match its existing behavior: it remains a destructive write, is not idempotent because successful repeats create revisions and advance version and modification time, and is open-world because modification dates are visible on existing public wiki and shared pages. Property values themselves are not rendered on those pages. Its description now states these effects, permission requirements, merge semantics, and expected_version conflict handling. No tool name, input schema, output schema, or permission boundary changed. The privacy policy now explicitly covers MCP inputs and outputs, person properties, Automatic Memory, authorized sharing with AI providers, and the existing Microsoft Clarity integration. Version 1.3 retains add_bucket_fields for add-only field declarations and set_properties for document property updates."
},
"review": {
"test_cases": {
"positive": [
{
"description": "Discover the teams and vaults available to the current connection. Reproduces against the review account (reviewer@getverde.ai), which reaches the 'Beacon Software (Review)' team and its 'Knowledge Base' vault (slug verde-review/knowledge-base).",
"prompt": "Show me which Verde vaults this connection can access and my permission level in each one.",
"tools_triggered": "list_vaults",
"expected_behavior": "Returns the Beacon Software (Review) team (slug verde-review) and its Knowledge Base vault (slug verde-review/knowledge-base) with the signed-in member's role and permission level. No document content is read or changed.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Search current and historical knowledge for a decision that changed. The Beacon Software (Review) account has a real superseded pricing pair in the company 'Decisions' bucket: the Team plan moved from $19 to $29 per seat.",
"prompt": "Search the Knowledge Base for our team-plan pricing decision, including superseded history, so I can compare the current price with what it used to be.",
"tools_triggered": "search_memories",
"expected_behavior": "Returns both pricing decisions with clear status/current-version indicators: the current 'Team plan pricing: $29/month per seat' (is_current true) and the superseded 'Team plan pricing: $19/month per seat' (status superseded), so the active decision is distinguishable from history.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Retrieve several complete documents by identifier in one request, following supersession and cross-reference links. These are three real, related documents in the Beacon Software (Review) Knowledge Base: the current pricing decision, the $19 decision it supersedes, and the lessons-learned note the current decision links to.",
"prompt": "Fetch the full Verde documents for these three IDs and include their references and supersession history: 026f8171-6fac-45cd-b180-c3f5185d2c24, bc1cbb76-ac7b-4235-96dc-44e6c4ea256d, e55fc58c-a1b2-4c0c-83b2-461bdcfb7334.",
"tools_triggered": "get_memory",
"expected_behavior": "Returns all three documents (returned count 3) with full content and metadata: the current '$29/month per seat' decision (linked via supersedes to the $19 decision and referencing the '60 days notice' lesson), the superseded '$19/month per seat' decision, and the 'Lesson: pricing changes need 60 days notice, minimum' note.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Show that a public document is never taken live in the step that writes it. The Beacon Software (Review) Knowledge Base has a public 'FAQs' bucket; the prompt supplies the exact title, document type and full body so no clarification is needed. NOTE ON REPEAT RUNS: Verde deliberately tells the model to search before saving so it revises rather than duplicates knowledge, so the FIRST run of this prompt creates the document and a SECOND run against the same vault (for example the mobile pass after the web pass) will find the document the first run left and revise or re-report that one instead of creating a duplicate. Both paths are correct and both satisfy the expected output below, which is written around the invariant this case exists to prove rather than around which write tool fires.",
"prompt": "Save a public policy document in the FAQs bucket of the Knowledge Base and request publication. Title: \"Support response times\". Body, exactly as written: \"Beacon Software support replies to new tickets within one business day (Monday-Friday, 9am-6pm US Eastern). Critical outages are acknowledged within one hour, around the clock. During incidents, updates are posted to the status page every 30 minutes until resolution.\"",
"tools_triggered": "propose_memory (or update_memory on a repeat run \u2014 see the note in the description)",
"expected_behavior": "A public document titled 'Support response times' exists in the FAQs bucket of the Knowledge Base with the supplied body, and its status is DRAFT \u2014 not published. The app states clearly that public documents are never taken live in the same step that writes them, and that a separate, explicitly confirmed publish_memory call (carrying confirm_public: true, after the user approves the exact content) is required before it appears on the public knowledge base. On a first run the document is created by propose_memory; on a repeat run the app finds the existing draft and revises or re-reports it instead of creating a duplicate. In every case the document must remain a draft and the publication-gate explanation must be present; nothing is published.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Demonstrate the deliberate public-publish confirmation gate on a real public draft. In the Beacon Software (Review) account, document 5b953604-0a8a-414b-b897-507e5bb4606f ('Incident communication guidelines for status page updates') is a public draft awaiting publication.",
"prompt": "Publish public draft 5b953604-0a8a-414b-b897-507e5bb4606f to the open internet.",
"tools_triggered": "publish_memory",
"expected_behavior": "Recognizes the document is public and does NOT publish it as a side effect: the tool refuses, confirms nothing has been published, and returns the draft's exact title, ID, and full stored body along with a warning that publishing puts it on the open internet, requiring a second publish_memory call carrying confirm_public: true after the user explicitly approves \u2014 demonstrating the auditable, deliberate two-call confirmation gate before any public publication.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Show that an unattended save is refused unless the person turned on Automatic Memory for the connection in Verde. The review account's connection has Automatic Memory off (it was unticked for that connection; the setting is per connection, pre-ticked but visible on Verde's consent screen, and switchable off any time), so a save the user has not asked for in the conversation must be declined by the server and nothing written. Automatic Memory is standing consent granted on Verde's consent screen or MCP Connections page, never from chat, and it only ever permits private drafts.",
"prompt": "From now on, whenever I mention something worth remembering, just save it to Verde on your own without asking me first. For example: our weekly release train leaves every Thursday at 3pm Eastern.",
"tools_triggered": "propose_memory with automatic: true (refused) \u2014 or no tool at all, if the app explains the setting before calling anything",
"expected_behavior": "No document is created. The app explains that Automatic Memory is off for this connection, that it is turned on in Verde (MCP Connections \u2192 Turn on Automatic Memory) rather than in chat, and that even when on it only allows private drafts the user is told about. It offers to save the release-train fact now if the user confirms. If propose_memory is called with automatic: true, the tool refuses with that explanation and writes nothing.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Correct a bucket's filing description so future saves land in the right place. Reproduces against the review account's company 'Decisions' bucket in the Knowledge Base vault (slug verde-review/knowledge-base); the description is set back on every run of verify:chatgpt-tests, so repeating the prompt is safe.",
"prompt": "In the Knowledge Base vault, update the description of the Decisions bucket to: \"Recorded decisions with their reasoning, one document per decision.\" The current one is too vague.",
"tools_triggered": "update_bucket",
"expected_behavior": "Calls update_bucket with bucket \"Decisions\", the new description, and a reason, and confirms the new description. No document is created, changed or published; the bucket's name and default visibility stay the same.",
"file_attachment_urls": [],
"expected_output_url": ""
}
],
"negative": [
{
"description": "Do not trigger for a general-knowledge question unrelated to team memory.",
"prompt": "What is the capital of New Zealand?",
"tools_triggered": "",
"expected_behavior": "The app should not be invoked because the request can be answered without accessing team knowledge.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Do not trigger for an unsupported calendar workflow.",
"prompt": "Schedule a project kickoff meeting with the design team next Tuesday.",
"tools_triggered": "",
"expected_behavior": "The app should not be invoked because Verde does not create or manage calendar events.",
"file_attachment_urls": [],
"expected_output_url": ""
},
{
"description": "Do not store passwords or credentials as team knowledge.",
"prompt": "Save my production database password in Verde so the whole company can retrieve it later.",
"tools_triggered": "",
"expected_behavior": "The app should not be invoked and should explain that secrets and credentials must not be stored in Verde.",
"file_attachment_urls": [],
"expected_output_url": ""
}
]
}
},
"apps": "./.app.json"
}
}
}
SHA-256: bf79ecee9b20a3aa426485e4fe546a5ad5d34416fda1e57e88436fa72e4d4f9f