← Files brainattic.aiARCHIVED FILE
.codex-plugin/plugin.json
8.48 KB · Nov 4, 2026 · 06:13 UTC
{
"author": {
"name": "Finite Software Systems Ltd"
},
"description": "The knowledge base your AI reads and writes \u2014 under your rules. Hybrid keyword and semantic search down to the passage, edits that land a revision you can roll back, and human-curated rules surfaced to every agent before it writes. Native MCP, EU-hosted.",
"interface": {
"capabilities": [],
"category": "Productivity",
"defaultPrompt": [
"What's already in this knowledge base, and what does it say I should do first?",
"Read the welcome doc, then draft our writing rules here \u2014 language, naming, a never-write-down list. Show me before saving.",
"I'm about to move our product docs in here. Propose a project and group structure, then create the ones I approve."
],
"developerName": "Finite Software Systems Ltd",
"displayName": "brainattic.ai",
"longDescription": "The knowledge base your AI reads and writes \u2014 under your rules. Hybrid keyword and semantic search down to the passage, edits that land a revision you can roll back, and human-curated rules surfaced to every agent before it writes. Native MCP, EU-hosted.",
"privacyPolicyURL": "https://brainattic.ai/privacy",
"shortDescription": "Agent memory you control",
"supportURL": "https://brainattic.ai/support",
"termsOfServiceURL": "https://brainattic.ai/terms",
"websiteURL": "https://brainattic.ai",
"composerIcon": "./assets-brainattic-icon-rounded-512.png",
"logo": "./assets-brainattic-icon-rounded-512.png"
},
"name": "app-6a7326040084819185b37a71697e3954",
"version": "4.4.0",
"mcpServers": "./.mcp.json",
"extensions": {
"com.openai": {
"review": {
"test_cases": {
"positive": [
{
"description": "Grounded retrieval from the workspace's onboarding content. Run first; changes nothing.",
"prompt": "What does the Welcome to brainattic guide in my workspace say I should do first?",
"tools_triggered": "kb_chunks_retrieve, kb_documents_get",
"expected_behavior": "Answers from the 'Welcome to brainattic' document in workspace chatgpt-test-rf2l, citing the supporting passage and the document. Makes no changes."
},
{
"description": "Create workspace structure. Run after test 1.",
"prompt": "Create a project named Review Demo and a group named Onboarding, then list my projects.",
"tools_triggered": "kb_projects_create, kb_groups_create, kb_projects_list",
"expected_behavior": "Creates the project Review Demo and the group Onboarding, then lists projects; the list includes Review Demo."
},
{
"description": "Read the workspace rules before writing, then file a document. Run after test 2.",
"prompt": "Check this workspace's rules, then create a note titled Review demo note in Review Demo that says hello.",
"tools_triggered": "kb_rules_list_for_context, kb_documents_create",
"expected_behavior": "Reads the applicable workspace rules first, then creates the document 'Review demo note' in project Review Demo and returns its title and link."
},
{
"description": "Surgical edit with retained revisions. Run after test 3.",
"prompt": "In Review demo note, replace \"hello\" with \"hello, edited\", then show its revision history.",
"tools_triggered": "kb_documents_edit_begin, kb_documents_edit_apply, kb_documents_edit_commit, kb_revisions_list",
"expected_behavior": "Opens an edit session, stages the replacement, commits exactly one new revision, and lists two retained revisions (original and edited)."
},
{
"description": "Reversible archive and restore. Run after test 4.",
"prompt": "Archive Review demo note, confirm it is gone from my document list, then restore it.",
"tools_triggered": "kb_documents_archive, kb_documents_list, kb_documents_restore",
"expected_behavior": "Archives the document, shows it absent from the active document list, then restores it. Nothing is deleted."
}
],
"negative": [
{
"description": "Calendar request. brainattic holds no calendar data and should not be called.",
"prompt": "What meetings do I have on my calendar tomorrow?"
},
{
"description": "Public web research. brainattic searches only the user's private workspace, not the web.",
"prompt": "Find today's top news about the EU AI Act on the web."
},
{
"description": "General language task that needs no stored knowledge.",
"prompt": "Translate \"Good morning, team\" into Spanish."
}
]
},
"commerce": false
},
"publication": {
"release_notes": "Version 4.4.0\n\nbrainattic is a shared knowledge base for teams and their AI agents, hosted at app.brainattic.ai by Finite Software Systems Ltd. This plugin connects ChatGPT to the same workspace-scoped content over MCP, now through 79 tools (53 in 3.1.0).\n\nWhat changed since 3.1.0\n- 4.0.0: files can be attached to documents directly: kb_attachments_begin_upload (one-use, five-minute upload capability) and kb_attachments_import (a file shared in chat, through ChatGPT file parameters).\n- 4.1.0: kb_attachments_view_image shows an existing image attachment.\n- 4.2.0: that image is rendered in the ui://brainattic/image-viewer-v1 component, which loads resources only from https://app.brainattic.ai.\n- 4.3.0: Skills, 22 kb_skills_* tools to list, read, search and author reusable team instructions with revision history. brainattic stores Skill files and never executes them.\n- 4.4.0: kb_attachments_import_url attaches a file from a public HTTPS URL. It requires an independent SHA-256 and refuses private and internal addresses.\n\nAnnotations\nEvery tool sets readOnlyHint, destructiveHint and openWorldHint explicitly as booleans: 28 read-only, 17 destructive, 4 open-world (kb_attachments_import, kb_attachments_import_url, kb_reminders_create, kb_reminders_create_schedule). kb_documents_edit_apply, kb_skills_edit_apply, kb_skills_edit_put_file and kb_skills_edit_remove_file are non-destructive because they change only the caller's open edit-session draft: nothing is published until the matching *_edit_commit, earlier revisions stay retained, and *_edit_discard drops the draft.\n\nResponse data and the Privacy Policy\nReviewers will read Privacy Policy version 2026-10-11 at https://brainattic.ai/privacy (published 2026-10-12, effective 2026-10-26). Every response path the connector can emit (291, including nested and error payloads) is assigned a category, and an automated test fails the build if any path is uncategorised. Each category is named in \u00a74:\n- record identifiers of the objects you work with (document, revision, attachment, edit-session, reminder, schedule and Skill identifiers);\n- names, slugs, links, file paths, revision numbers and shortened snippets that locate content;\n- last-modified, archival, due, expiry, schedule, revision, purge and delivery timestamps;\n- file metadata (name or path, type, byte size) for attachments and Skill files, and SHA-256 digests in Skill file descriptors;\n- relevance signals for search results (relative score, matching channel, confidence);\n- counts and sizes; the state of an object after a call; rule-linked Skill recommendations; fixed warnings about untrusted procedural content;\n- project and group display preferences; short-lived download or upload links only when the client asks;\n- error reference codes and the field, tool or permission a refusal names, and for a policy refusal the acceptance link and policy versions.\nThe content the user asks for (document bodies, passages, revisions, rule documents, attachment files, Skill instructions and files) is Customer Content under \u00a74. \u00a74 also discloses the MCP access event recorded for each call that touches the knowledge base, and the document-search log. \u00a710 states their retention (90 days by default).\n\nNo response field carries an email address, a personal name or a user account identifier. Names in responses are the names of workspaces, projects, groups, Skills and files. Temporary file download URLs, provider file IDs and source URLs are used only to fetch the bytes and are not retained or returned."
}
}
},
"apps": "./.app.json"
}
SHA-256: d95a16df059b98d44cc431bc0dff4a5a123662ba8d9b9f0341ef5f515d0aa28f