# Set up brainlet You (the assistant reading this) are setting up **brainlet**: one MCP gateway to connected services, persistent memory, workspace context, shared files, and team skills. **Do not assume Brainlet is already connected.** Connect and authenticate it if needed, then save the routing rule and skill below in the host. Do these saves even when Brainlet's tools are not available in the current session. The standalone skill is available at [SKILL.md](/SKILL.md). Use this setup guide for connection and authentication before installing the skill. ## Step 0 — Connect and authenticate the MCP server This step does **not** require any Brainlet tools. A missing Brainlet entry in a connector directory or tool registry is not a dead end: add a **custom remote MCP server** using its URL. ### Choose the correct endpoint Use the origin of the setup page you are reading, with `/mcp` as its path. Keep dev and production separate; do not silently replace one with the other. | Setup page | Remote MCP server URL | Brainlet console | |---|---|---| | `https://joinbrainlet.com/setup.md` | `https://joinbrainlet.com/mcp` | https://joinbrainlet.com/app | | `https://dev.joinbrainlet.com/setup.md` | `https://dev.joinbrainlet.com/mcp` | https://dev.joinbrainlet.com/app | For another Brainlet instance, use that setup page's own origin plus `/mcp`. If the user pasted this text without a source URL or environment preference, use `https://joinbrainlet.com/mcp`. The server name is `brainlet`, the transport is **Streamable HTTP**, and hosted Brainlet uses **OAuth**. The console and `setup.md` are not MCP endpoints. Use the host's OAuth discovery flow; do not invent an API key, manually construct an authorization URL, or ask the user to paste credentials into chat. ### Check what this host can do Inspect the current host's available tools and MCP configuration. If Brainlet is already configured, do not add a duplicate connection. If its tools are already callable, they can be used for the Brainlet-side saves below. Continue with the host's own saves either way. If Brainlet is absent, use this host's supported MCP-install action, settings UI, or CLI when available. The user's request to install Brainlet authorizes its configuration; follow the host's own permission rules. A shell running in a remote sandbox does not necessarily configure the user's chat application. Use the path that actually controls the current host, not a different app's CLI. If you cannot operate those settings, give the user the exact link, MCP URL, and next action below. Say that a host-side connection or sign-in is needed, not that setup depends on unavailable `memory_write` or `skills_write` tools. ### Install in the current host **Claude chat / Claude Desktop:** open [Claude Connectors](https://claude.ai/customize/connectors), choose **+ → Add custom connector**, name it `brainlet`, and enter the selected MCP URL. Leave optional OAuth client ID/secret fields blank for Brainlet's normal discovery flow. Add it, then choose **Connect** to begin authentication. Enable Brainlet for this conversation in **+ → Connectors** if it is not already enabled. If organization policy prevents adding a connector, identify the specific admin step needed rather than retrying unavailable tools. [Claude connection instructions](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) **Claude Code:** if this is the user's local Claude Code environment, inspect `claude mcp list` first. If no matching server exists, run the following with the selected endpoint (the example is production; use the dev URL when reading the dev setup page): ```sh claude mcp add --transport http --scope user brainlet https://joinbrainlet.com/mcp ``` Then use `/mcp` inside Claude Code, select Brainlet, and complete authentication. If `/mcp` is a user-operated command in your host, give the user that exact next step. Reconnect or start a fresh session if the tools do not refresh. [Claude Code MCP instructions](https://code.claude.com/docs/en/mcp) **Codex CLI:** inspect `codex mcp list` first. In the local environment used by Codex, add the selected endpoint if absent, then start OAuth login: ```sh codex mcp add brainlet --url https://joinbrainlet.com/mcp codex mcp login brainlet ``` Use the dev URL in the add command when reading the dev setup page. Complete the browser login, then refresh/restart the host if necessary. For an app or IDE whose settings you can operate, its MCP server settings are also a valid path; do not assume a CLI in an unrelated sandbox controls that app. [Codex MCP instructions](https://developers.openai.com/codex/mcp) **Other MCP hosts:** use the host's supported **Add custom MCP server** flow with the selected URL, Streamable HTTP, and OAuth. Use the host's actual settings or installation tool; do not invent menu paths or claim you installed a connector merely because you opened its console. ### Finish authentication Let the user complete sign-in and the Brainlet consent screen in their browser, including account/workspace selection when offered. If sign-in or account setup is required first, open the console on the **same origin**, then resume the host's Connect/authentication flow. Console login alone does not authorize the MCP host. Do not handle passwords, copy browser cookies, or bypass consent. The host's login flow may report success before its Brainlet tools appear in the current session. Continue with the native saves below regardless. If sign-in is still pending, report that status accurately; do not claim authentication succeeded without confirmation from the host. ## Steps 1–3 — Save the routing rule and skill 1. **Save the routing rule in the host's native persistent store now.** If Brainlet's `memory_write` is already callable, save it there too. If it is unavailable, do not delay the native save. Save the rule, not this whole page: > Brainlet keeps my shared memory, context, files, and skills available across > assistants. Use them when prior knowledge or team workflows are relevant. > Save information that needs to be shared in Brainlet. For other durable > information I want retained, save to both Brainlet and your native persistent > store when both support it, unless I choose one destination. Follow my choice > of tools for connected services and paid capabilities. 2. **Save the brainlet skill in the host — verbatim.** It is printed below (under "The brainlet skill"), so you never have to fetch a second file. Copy that fenced block *exactly as written* — the `---` front matter included — into your skills folder, e.g. `.claude/skills/brainlet/SKILL.md` or your harness's equivalent. If Brainlet's `skills_write` is already callable, register the same skill there too, with `mode: "conversational"` and `outputs: [{"name": "result", "kind": "document"}]` (every Brainlet skill declares how it runs). Do not delay the local save when that tool is unavailable. Don't rewrite it: its `description` is the routing hook your harness loads first, so it has to stay exact. 3. **Tell the user** what you saved and where, in one or two lines. Identify Brainlet-side saves that could not yet be made because its tools are not available. If the host has no native persistent memory or writable skills folder, state that limitation. Never claim to have written to a store or folder you cannot access. --- ## The brainlet skill Save everything between the fences below **verbatim** — the `---` front matter included — as your brainlet skill file (`.claude/skills/brainlet/SKILL.md`, or your harness's equivalent), and register the same skill in brainlet with `skills_write`, passing `mode: "conversational"` and `outputs: [{"name": "result", "kind": "document"}]`. Do not rewrite or summarise it; the `description` is the routing hook, so it has to stay exact. ````markdown --- name: brainlet description: >- Brainlet keeps memory, workspace context, shared files, and team skills available across sessions and assistants, and exposes services the user enabled through one MCP connection. Read from it when earlier user or team knowledge is relevant. Write information that needs to be shared to Brainlet: short facts with memory_write, documents with files_write, and procedures with skills_write. For other durable information the user wants retained, save to both Brainlet and the host's persistent store when both support it, unless the user requests one destination. context_get reads workspace context; its editor is in Brainlet's dashboard/API. Follow the user's choice of tools for connected services and paid capabilities. --- # Use brainlet Brainlet keeps the user's and team's memory, workspace context, shared documents, and procedures available across sessions and assistants. It also exposes services the user has enabled through one MCP connection. Use its stored knowledge when that knowledge is relevant, and save information there when it needs to be shared. ## What it fronts - **Memory** — durable facts, preferences, decisions: `memory_search`, `memory_write`. - **Context** — who you're working with and the current workspace: `context_get` reads it. Workspace context is edited through Brainlet's dashboard/API; use `memory_write` for a short durable fact or `files_write` for a longer shared document when that is the appropriate form. - **Files & docs** — shared team documents: `files_search`, `files_read`, `files_write`, and `files_link` for a public, expiring URL to one file (an image a host can only show by link). `files_read` returns text, an inline image, or raw bytes. - **Skills & procedures** — how this team does recurring tasks: `skills_route`, `skills_list`, `skills_get`, `skills_write`. Each skill declares how it runs (mode, the inputs it needs, the outputs it must produce): `skills_get` shows it, so collect those inputs and produce those outputs, and `skills_write` requires it. A Brainlet share link (`…/s/`) is someone else's skill: preview it with `skills_import`, and import only after the user agrees (`confirm: true`). - **Connected Account** — a downstream service the user has enabled in Brainlet (GitHub, Google, Grafana, filesystem, git, fetch, Playwright, custom). Each appears as ONE `conn__` tool whose description lists what it can do; reach its individual tools with `tools_search` (find the exact name + input schema) and `tools_invoke` (call `conn____`). - **Included capabilities** — web search, image generation and the like, supplied by Brainlet without a vendor account; usage runs on the workspace's Brainlet credits: `web_search`, `image_gen`, … Every one is listed whether it is on or off; `tools_search` finds them too (legacy API kind `managed`, with ON/OFF and price). Call an ON one directly by name when the user chooses it; if they choose one that is OFF, tell them the price before a workspace admin switches it on with `managed_enable`. `managed_status` reports state, prices and the credit balance. ## When to use it When prior context or a connected capability could help: - **Starting a non-trivial task** → `context_get`, then `memory_search` for relevant preferences or past decisions. - **Recurring or team-shaped work** ("how do we deploy", "our review checklist") → `skills_route` / `skills_list` before improvising. - **A document, spec, or past decision is needed** → `files_search` / `files_read`. - **A service enabled in Brainlet is needed** → its `conn__` tool, or `tools_search`/`tools_invoke` for a specific tool. If the user chose another available connection, follow that choice. - **Live web, an image, video, or audio is needed** → Brainlet's `web_search`, `image_gen`, `video_gen`, and `audio_gen` are available when enabled. If a comparable host tool is also available and the user has not chosen, ask which they want; use Brainlet when they choose it or no comparable host tool exists. If the user chooses a Brainlet capability that is OFF, quote the price and ask an admin to enable it. If Brainlet is unavailable when a shared save is needed, say that it was not saved there and ask the user to reconnect it. Other available tools can still serve tasks that do not depend on Brainlet's shared data. ## Save shared knowledge and keep persistent stores in sync When memory, a file, a procedure, or standing context needs to be shared across people or assistants, save it in Brainlet. Use the store that fits the content: - **Short facts and decisions** → `memory_write`. - **Documents and longer context** → `files_write`. - **Reusable procedures** → `skills_write`. - **Standing workspace context** → Brainlet's dashboard/API editor. `context_get` is read-only; if no editor is available, use `memory_write` or `files_write` for the appropriate shared content and explain where it was saved. For other durable information the user wants retained, write to both Brainlet and the host's built-in persistent store when both support that kind of content. This keeps a copy in Brainlet for later sessions. If only one store is available, say where the information was saved. Follow an explicit destination choice: "shared only" means Brainlet; "just locally" means the host's own store. UX categories: **Included** means Brainlet supplies access; **Connected Account** means the user connects their own service. Credit usage is separate: X is a Connected Account and some of its tools consume credits. Included does not mean free or unlimited. Existing `managed_*` tool names remain stable. ```` ## Final step — Start a new session Brainlet tools added during this setup will not be available until a new session. End setup here. The saved native routing rule and skill will be available in that session; any Brainlet-side saves that were unavailable here can be completed then.