Glen
officialAgent memory MCP server for teams. Search the shared memory of your team’s coding agents (Claude Code, Codex, Cursor) for past decisions and fixes, with sources, and use or save team skills and docs.
What can you do with Glen MCP?
- Search team memory — Ask the organization's memory a question and get answers drawn from what you can already see in Glen.
- Find why code exists — Look up the reasoning behind a specific piece of code through code search.
- Run a saved skill — Fetch a team skill's markdown instructions by slug so the agent can follow them.
- Save and share skills or documents — Store a skill or Markdown/HTML artifact privately, or share it with the whole organization.
- Correct recall — Forget a wrong or outdated memory and restore it later if needed.
- Import past conversations — Add earlier agent sessions to team memory when you ask for it.
Hosted MCP Server
npx add-mcp 'https://mcp.tryglen.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
One endpoint for your team's agent memory, from any MCP client.
Glen's remote MCP server gives a client the organization's memory, skills and saved documents as 22 tools. This page covers the endpoint, both ways to sign in, every tool's inputs and outputs, the hints clients use to decide what to ask about, and the limits.
| Server URL | https://mcp.tryglen.com/mcp |
|---|---|
| Transport | Streamable HTTP (POST, GET and DELETE on /mcp) |
| Sign-in | OAuth 2.1 with dynamic client registration, or a personal API key |
| Tools | 22, each with a title and behaviour hints |
| Request time limit | 60 seconds |
| Request size limit | 4.5 MB per request |
The endpoint
https://mcp.tryglen.com/mcp
Connect to https://mcp.tryglen.com/mcp exactly. OAuth tokens are issued for that URL as their audience, and MCP clients reject a server whose metadata names a different one. https://app.tryglen.com/mcp redirects there permanently, and any other path on mcp.tryglen.com except the OAuth discovery documents redirects to the Glen app.
The server speaks Streamable HTTP: the client POSTs JSON-RPC messages to /mcp, may open a GET stream for server messages, and sends DELETE to end its session.
Signing in
Every request is signed in one of two ways, and both end up as the same thing: one person in one organization.
OAuth, for chat clients and most MCP clients
- 01
The client calls
https://mcp.tryglen.com/mcpwithout a token and gets401 UnauthorizedwithWWW-Authenticate: Bearer resource_metadata="https://mcp.tryglen.com/.well-known/oauth-protected-resource/mcp"and the scopesopenid profile email read:organization offline_access. - 02
The protected resource metadata names the authorization server,
https://app.tryglen.com/api/auth, whose metadata is at/.well-known/oauth-authorization-server. - 03
The client registers itself through dynamic client registration. No pre-registration and no client secret are needed; loopback redirect URIs (
http://127.0.0.1) are accepted for desktop and CLI clients. - 04 The user is sent through the authorization code flow with PKCE: Glen's sign-in page, then an organization picker when they belong to more than one, then the consent page.
- 05
The client receives a signed access token (issuer
https://app.tryglen.com/api/auth, audiencehttps://mcp.tryglen.com/mcp) and, becauseoffline_accessis granted, a refresh token. The token carries the chosen organization in thehttps://app.tryglen.com/org_idclaim.
A token stays tied to the organization picked at sign-in. To use another organization, disconnect and connect again; glen_list_orgs shows which one the connection uses.
API key, for scripts and the glen CLI
Create a key under Settings → API keys in the Glen dashboard. Keys are personal: they belong to you, not to an organization, and work in every organization you belong to. Each request names the organization in a header:
POST /mcp HTTP/1.1
Host: mcp.tryglen.com
x-api-key: <your key>
x-glen-org-id: <organization id>
Without x-glen-org-id the server answers 401 with no active organization: run `glen org switch`. Add x-glen-incognito: true to make a request off the record. When a request carries both an API key and a bearer token, the key is the one checked.
Checked on every request
Before any tool runs, the server confirms the user still exists and is still a member of the organization. Removing someone from the organization, or deleting their account, cuts off their tokens and keys on their next request, without waiting for anything to expire. Failures return 401 with the same WWW-Authenticate header, so a client can start the sign-in again.
Tools
Each tool takes a JSON object and returns its result as JSON text. Tools that read act as you: they return only what you could already see in the Glen dashboard, from the connected organization. Tools that write change only your own account, content you wrote, or the organization's memory on your behalf.
Search and recall
Ask the organization's memory a question, or ask it why a specific piece of code exists.
Skills
Skills are markdown instructions, with optional files, that the team saves once and any agent can run. Private to the author until shared.
Use skill
Read-only
glen_skill_use
Fetches a skill's instructions by slug so the agent can follow them.
slug
(string)
The exact slug from glen_skill_search.
conversationId
(string, optional)
The calling session's id, for usage counts.
cached
(object, optional)
Skills the client already holds (slug to last update time), so referenced skills aren't sent again.
Returns: The skill's markdown instructions as content, its files, and any skills it references that the client doesn't already hold.
rate limit: 600 calls a minute per user
Save skill
WritesNeeds a plan with search
glen_skill_create
Saves a markdown skill to your library, private unless you share it.
name
(string, up to 120)
The skill's name; the slug is made from it.
description
(string, up to 500)
One line saying when to use it.
content
(string, up to 1 MB)
The SKILL.md body.
files
(array, up to 100, optional)
Scripts, references or assets, each with a path and content type.
dependencies
(array, optional)
Existing dependency ids, or new ones (name, description, sourceUrl, kind).
org
(boolean, optional)
true shares it with the whole organization.
update
(boolean, optional)
true replaces your own skill with the same name.
Returns: slug, whether an existing skill was updated, and whether it is shared with the organization.
rate limit: 600 calls a minute per user
Delete skill
Deletes
glen_skill_delete
Permanently deletes a skill you wrote. Only when you ask for it.
slug
(string)
A skill you wrote. Deleted for everyone it was shared with.
Returns: Confirmation that the skill was deleted.
rate limit: 600 calls a minute per user
Artifacts
Artifacts are saved documents (Markdown, or HTML and CSS with no JavaScript). Private to the author until shared.
Get artifact
Read-only
glen_artifact_get
Fetches a saved document by slug.
slug
(string)
The exact slug.
Returns: slug, title, format, the full content, a summary and the author.
rate limit: 600 calls a minute per user
Save artifact
Writes
glen_artifact_create
Saves a Markdown or HTML document to your library, private unless you share it.
title
(string, up to 200)
The document's title; the slug is made from it.
format
(markdown or html)
HTML may include CSS but no JavaScript.
content
(string, up to 200,000 characters)
The document.
shareWithOrg
(boolean, optional)
true shares it with the whole organization.
update
(boolean, optional)
true replaces your own document with the same title.
Returns: slug, whether an existing document was updated, and whether it is shared with the organization.
rate limit: 30 calls a minute per user
Delete artifact
Deletes
glen_artifact_delete
Permanently deletes a document you wrote. Only when you ask for it.
slug
(string)
A document you wrote.
Returns: Confirmation that the document was deleted.
rate limit: 600 calls a minute per user
Memory corrections and imports
Keep recall accurate by forgetting wrong memories, bring them back, or add past agent conversations.
Import past conversation
Writes
glen_import
Adds a past agent conversation to team memory when you ask it to.
conversationId
(string)
import:<session id>, the same for every turn of one session.
idempotencyKey
(string)
<conversationId>:<turn index>, so a re-run skips turns already imported.
messages
(array (1 to 100))
The turn's user message and reply, each with role, content and its original occurredAt.
additionalContext
(object, optional)
The agent's name and the workspace (cwd, branch, repoName, remoteUrl).
Returns: Whether the turn was stored or had already been imported, and how many messages it added.
rate limit: 600 calls a minute per user
Forget evidence
Writes
glen_forget
Stops a wrong or outdated memory from being recalled again. Reversible with glen_restore.
references
(string[] (1 to 50))
observation:<id> or message:<id> references from search sources.
Returns: Which references were forgotten, which were already forgotten, and how many memories were hidden because every message behind them was forgotten.
rate limit: 600 calls a minute per user
Restore forgotten evidence
Writes
glen_restore
Brings back a memory that was forgotten.
references
(string[] (1 to 50))
References that were forgotten earlier.
Returns: Which references were restored, which needed no change, and how many hidden memories came back with them.
rate limit: 600 calls a minute per user
Settings and organization
Read and change your own Glen settings, see your organizations, invite people and send feedback.
List organizations
Read-only
glen_list_orgs
Lists the organizations you belong to and marks the one this connection uses.
No inputs.
Returns: Your organizations, with active: true on the one this connection uses.
rate limit: 600 calls a minute per user
Show glen settings
Read-only
glen_status
Shows your recording mode and whether skill suggestions are on.
No inputs.
Returns: Your Glen mode (on, off, incognito or silent) and whether skill suggestions are on.
rate limit: 600 calls a minute per user
Invite teammates
WritesOwners and admins
glen_invite
Invites people by email to your organization. Owners and admins only.
emails
(string[] (1 to 50))
People to invite.
role
(member or admin)
Defaults to member. The tool can't create owners.
Returns: invited, alreadyMember and failed (with a reason each), plus a note when new seats are billed.
rate limit: 600 calls a minute per user
Set glen mode
Writes
glen_set_recording
Switches your account between on, off, incognito and silent.
mode
(on, off, incognito or silent)
Applies to your account on every machine and agent.
Returns: The saved mode and when it changed.
rate limit: 600 calls a minute per user
Set skill suggestions
Writes
glen_set_suggestions
Turns Glen's offers to save or reuse skills on or off.
skillCreation
(boolean, optional)
Offers to save finished work as a new skill.
skillUse
(boolean, optional)
Offers existing skills that fit the task.
Returns: The saved settings.
rate limit: 600 calls a minute per user
Behaviour hints
Every tool declares the four MCP behaviour hints and a title. Clients read them to decide what to show and what to ask about: a client can run read-only tools without asking and ask before anything that writes, and Anthropic's connector directory groups tools as read-only or write by them.
readOnlyHint
true when the tool never changes anything. Nine tools: search, code search, skill search and use, dependency search, artifact search and get, list organizations and status.
destructiveHint
true when a call can overwrite, remove or hide something, or change who can see it: saving a skill or artifact (update: true replaces your own), sharing, deleting and forgetting.
idempotentHint
true when repeating a call with the same arguments has no further effect. False for saving a skill or artifact, inviting people and sending feedback.
openWorldHint
true on every tool that writes, because the effect reaches past the conversation: teammates see shared skills and recalled memories, invites send email, and settings apply on every machine. False on every read-only tool.
| Tool | readOnly | destructive | idempotent | openWorld |
|---|---|---|---|---|
| glen_search | true | false | true | false |
| glen_code_search | true | false | true | false |
| glen_skill_search | true | false | true | false |
| glen_skill_use | true | false | true | false |
| glen_artifact_search | true | false | true | false |
| glen_artifact_get | true | false | true | false |
| glen_dependency_search | true | false | true | false |
| glen_list_orgs | true | false | true | false |
| glen_status | true | false | true | false |
| glen_skill_create | false | true | false | true |
| glen_skill_share | false | true | true | true |
| glen_artifact_create | false | true | false | true |
| glen_artifact_share | false | true | true | true |
| glen_import | false | false | true | true |
| glen_forget | false | true | true | true |
| glen_restore | false | false | true | true |
| glen_invite | false | false | false | true |
| glen_set_recording | false | false | true | true |
| glen_set_suggestions | false | false | true | true |
| glen_feedback | false | false | false | true |
| glen_skill_delete | false | true | true | true |
| glen_artifact_delete | false | true | true | true |
Limits and errors
Rate limits
Limits count per user and per tool. Over the limit, the tool returns an error such as Too many requests. Try again in 20s.
- 60 calls a minute: glen_search, glen_code_search, glen_skill_search, glen_artifact_search.
- 30 calls a minute: glen_artifact_create, which writes a summary of each document.
- 10 calls an hour: glen_feedback.
- 600 calls a minute: every other tool.
Size limits
- A request body can be up to 4.5 MB, and a request can run for up to 60 seconds.
- A skill's content can be up to 1 MB, with up to 100 files.
- An artifact can be up to 200,000 characters.
- glen_import takes up to 100 messages per call, each up to 100,000 characters.
Plans
Every tool works on the Free plan, which holds up to 15,000 memories. A workspace with no plan, or whose last payment failed, can still sign in and use the tools that don't search, but these return an error:
glen_search, glen_code_search, glen_skill_search, glen_dependency_search, glen_skill_create, glen_artifact_search
The error says what is off and who can fix it, for example This workspace has no plan. An owner can choose one in Billing. glen_import is refused the same way when recording is paused. Tool errors never contain links or an offer to buy anything.
Other errors
401on the HTTP request: no credentials, an expired or invalid token or key, or the user is no longer a member. The client signs in again.- A tool error with a validation message: an input didn't match the tool's schema. The message names the field.
- A tool error saying the action isn't allowed: glen_invite from someone who isn't an owner or admin, or deleting a skill or document you didn't write.
- A tool error saying something wasn't found: a slug that doesn't exist, or one you can't see.
Connecting a client
Claude and ChatGPT have their own step-by-step pages: Glen for Claude and Glen for ChatGPT. Any other client that supports remote MCP servers with OAuth needs only the URL.
Claude Code
claude mcp add --transport http glen https://mcp.tryglen.com/mcp
Cursor and clients that read mcp.json
{
"mcpServers": {
"glen": {
"url": "https://mcp.tryglen.com/mcp"
}
}
}
The client opens Glen's sign-in page the first time it connects. For a coding agent, the glen plugin is usually the better fit: it records sessions into team memory and, where the agent allows it, recalls on every turn. Plugins reach Glen through the glen CLI and hooks rather than these tools; see Glen for Cursor and Glen for pi.