ChatGPT integration
Memory that carries into your next chat
Connect a MemoryStack project to ChatGPT. Recall useful context, save durable preferences and decisions, and correct memories as things change.
Before you connect
Use an approved MemoryStack account with account setup complete and a project you own. ChatGPT must allow custom MCP plugins in your account or workspace. The integration uses OAuth; you do not need to paste an API key into ChatGPT.
Create or manage your project in the dashboard. API integrations built with the OpenAI SDK have a separate guide.
Connect through ChatGPT Plugins
- Open ChatGPT Plugins. Choose Add → Add custom MCP server.
- Name the connection MemoryStack. Use Choose icon to upload the MemoryStack logo before creating the plugin. Enter the server URL below and select OAuth.
https://memorystack.app/api/mcp- Use discovered OAuth settings. If the form asks how to register the client, choose Client ID Metadata Document (CIMD). MemoryStack supports a public ChatGPT client with S256 PKCE; it does not require a client secret or dynamic registration.
- Open Advanced OAuth settings. Add
memories:readto Base scopes, so project identification remains available when an individual tool requests authorization. In Default scopes, keepmemories:readandmemories:writeselected. Clearmemories:deleteunless you want ChatGPT to move memories to trash. Review ChatGPT’s connection notice, then choose Create as a plugin. - Complete the OAuth sign-in when ChatGPT opens it. In MemoryStack, choose an Organization or Personal workspace, then explicitly select a Memory project within it. Review the requested permissions and select Allow and connect. Delete access stays unchecked until you enable it.
- Start a new ChatGPT Work conversation. Type @, select your installed MemoryStack plugin, and ask it to check the connected memory project. Available surfaces and workspace policies can vary.
The organization and project remain fixed for that connection. Only projects you own in organizations you belong to are available. Memories persist when you start another chat. The connection can access your existing project memories across your API keys, but cannot access another project or another organization member’s memories. Reconnect to choose a different scope.
Install the portable workflow skills
The remote server supplies memory tools and compact usage instructions. For the packaged setup and memory workflows, install the MemoryStack plugin archive through Plugins → Add → Upload plugin archive on a supported surface. The package contains a remote MCP connection and two skills, with no API keys or local coding hooks.
Download the MemoryStack plugin
Developers can also build the same archive from the repository:
python integrations/chatgpt/package.pyThe file is written to dist/memorystack-chatgpt.zip. Authenticate its MCP connection through OAuth, then run the packaged setup workflow. This package is separate from the Codex coding plugin. A local archive is not a listing in the public plugin directory.
Verify saving and recall
- In the first chat, invoke MemoryStack and ask: “Save this disposable test memory: my MemoryStack test workspace uses the label amber-orbit-42.” Use a new harmless label for your own test.
- Confirm that
create_memorysucceeded. Keep the returned memory ID. A conversational claim without a successful tool result is not verification. - Open a separate conversation, invoke the same MemoryStack connection, and ask: “What label did I save for my MemoryStack test workspace?” Do not paste the saved fact into the new chat.
- Confirm that
search_memoriesreturned the stored fact. Indexing can follow storage asynchronously; useget_memorywith the saved ID to check persistence before retrying a search. Do not repeatedly create the same memory. - Ask MemoryStack to forget only that test record if you enabled deletion permission. Otherwise remove it from your MemoryStack dashboard.
What gets remembered
Save independently useful facts, preferences, decisions, constraints, and verified outcomes. Search for relevant context when needed and reuse it within the conversation. Update a known memory when a correction changes it. Whole chat transcripts, credentials, temporary guesses, and private reasoning do not belong in durable memory.
MemoryStack does not automatically read every ChatGPT chat, replace ChatGPT’s built-in memory, or run Codex file hashing and lifecycle hooks in web chats. A historical memory is supporting context; current files and evidence still need verification. Token savings depend on the task and actual reuse.
Permissions and disconnecting
When reconnecting, choose the existing grant under Connection to replace. Check its project, permissions, creation time and short ID against the matching entry in API Keys. Replace and connect immediately revokes that grant’s previous access and refresh tokens, then connects with your newly selected project and permissions. Its other sessions must reconnect too. If ChatGPT does not finish connecting, the previous grant still stays revoked.
Choose Create a separate connection only when you intend to keep both. Existing grants keep their permissions in that case. MemoryStack never guesses which grant belongs to a custom ChatGPT app; select the one you intend to replace. Cancelling leaves it unchanged.
memories:read enables account/project context, search, list, and individual reads. memories:write enables saving and corrections. memories:delete enables moving records to trash. Unapproved tools are omitted from discovery and rejected by the server.
Access tokens expire after one hour. Refresh tokens rotate and the project connection expires after 30 days, when sign-in is required again. Revoke the matching ChatGPT · project name entry in API Keys to disable its credentials. Revoking access does not delete the project’s memories.
Delete a memory from ChatGPT
Deletion is optional and recoverable. In ChatGPT’s custom MCP setup, include memories:delete in the requested OAuth scopes. During MemoryStack consent, enable Delete memories for the organization and project you selected. Changing the selection clears delete consent so you can review it again.
After connecting, refresh the available tools or start a new chat. Ask ChatGPT to find the specific memory and forget it. The delete_memory tool uses its memory ID and moves only that record to trash. It cannot permanently erase records or delete memories from another project or organization.
If delete was not requested or approved, the tool is unavailable. Reconnect with the additional scope and approve it; existing connections never gain permissions automatically. MemoryStack advertises the optional scope through OAuth discovery and leaves delete consent off by default.
Troubleshooting
- No custom MCP option: check your ChatGPT account and workspace plugin policy.
- Logo appears in settings but not the listing: the custom MCP app has its own icon. Set it with Choose icon during creation; a plugin ZIP logo may update settings without replacing the registered app icon. If ChatGPT exposes an icon edit control under Manage, use it. Otherwise, verify a new connection with the icon selected before replacing the existing connection. OAuth callbacks and tokens do not need a logo parameter.
- OAuth discovery or client registration fails: use CIMD with the public client method. Do not choose dynamic registration or enter an API key as a client secret.
- No project appears: complete account setup, create a project, and verify current ownership and organization membership.
- Expired request: start the connection again from ChatGPT. Consent requests expire after ten minutes and are bound to the browser that opened them.
- Tool missing: check granted permissions, refresh the plugin’s metadata, and start a new chat. Reconnect to grant additional permissions.
- Old installer OAuth command fails: legacy direct API-key-as-code authentication has been retired. Coding clients can continue using project API keys in headers or their local MCP server configuration.
See OpenAI’s plugin quickstart and OAuth requirements for the host’s current behavior.