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 URLhttps://mcp.tryglen.com/mcp
TransportStreamable HTTP (POST, GET and DELETE on /mcp)
Sign-inOAuth 2.1 with dynamic client registration, or a personal API key
Tools22, each with a title and behaviour hints
Request time limit60 seconds
Request size limit4.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

  1. 01
    The client calls https://mcp.tryglen.com/mcp without a token and gets 401 Unauthorized with WWW-Authenticate: Bearer resource_metadata="https://mcp.tryglen.com/.well-known/oauth-protected-resource/mcp" and the scopes openid profile email read:organization offline_access.
  2. 02
    The protected resource metadata names the authorization server, https://app.tryglen.com/api/auth, whose metadata is at /.well-known/oauth-authorization-server.
  3. 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.
  4. 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.
  5. 05
    The client receives a signed access token (issuer https://app.tryglen.com/api/auth, audience https://mcp.tryglen.com/mcp) and, because offline_access is granted, a refresh token. The token carries the chosen organization in the https://app.tryglen.com/org_id claim.

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:

http
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

Share skill

Writes
glen_skill_share

Shares a skill you wrote with teammates or the whole org.

slug
(string)
A skill you wrote.
emails
(string[] (up to 50))
Teammates to add. Existing recipients are kept.
org
(boolean, optional)
true shares with the whole organization, false turns that off.

Returns: slug, how many people it is shared with, and whether the whole organization can see it.

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

Share artifact

Writes
glen_artifact_share

Shares a document you wrote with teammates or the whole org.

slug
(string)
A document you wrote.
emails
(string[] (up to 50))
Teammates to add. Existing recipients are kept.
org
(boolean, optional)
true shares with the whole organization, false turns that off.

Returns: slug, how many people it is shared with, and whether the whole organization can see it.

rate limit: 600 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

Send feedback to Glen

Writes
glen_feedback

Sends a bug report or feedback to the Glen team.

ticket
(object)
kind bug or feedback, with its fields.
onBehalfOf
(user or agent)
Whether you asked for it or the agent is reporting on its own.
proactive
(boolean, optional)
true when you never asked. Refused while you are off the record.
conversationId
(string, optional)
Lets the Glen team open the session the report came from.

Returns: Whether the report was posted, or skipped because you are off the record.

rate limit: 10 calls an hour 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.

ToolreadOnlydestructiveidempotentopenWorld
glen_searchtruefalsetruefalse
glen_code_searchtruefalsetruefalse
glen_skill_searchtruefalsetruefalse
glen_skill_usetruefalsetruefalse
glen_artifact_searchtruefalsetruefalse
glen_artifact_gettruefalsetruefalse
glen_dependency_searchtruefalsetruefalse
glen_list_orgstruefalsetruefalse
glen_statustruefalsetruefalse
glen_skill_createfalsetruefalsetrue
glen_skill_sharefalsetruetruetrue
glen_artifact_createfalsetruefalsetrue
glen_artifact_sharefalsetruetruetrue
glen_importfalsefalsetruetrue
glen_forgetfalsetruetruetrue
glen_restorefalsefalsetruetrue
glen_invitefalsefalsefalsetrue
glen_set_recordingfalsefalsetruetrue
glen_set_suggestionsfalsefalsetruetrue
glen_feedbackfalsefalsefalsetrue
glen_skill_deletefalsetruetruetrue
glen_artifact_deletefalsetruetruetrue

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

  • 401 on 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

bash
claude mcp add --transport http glen https://mcp.tryglen.com/mcp

Cursor and clients that read mcp.json

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.

Privacy and support

What Glen stores, how long it keeps it and how to have it deleted are covered in the Glen privacy policy. For anything the policy doesn't answer, write to support@tryglen.com. Stuck on setup? The support page says what to include.