chatgpt-web
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHATGPT_CDP_URL | No | CDP endpoint | http://127.0.0.1:9222 |
| CHATGPT_PROJECT | No | Project name in the sidebar | Ders Notları |
| CHATGPT_WORK_DIR | No | Only files under here may be attached or written | ~/work |
| CHATGPT_STATE_DIR | No | lock, projects.json, debug/ screenshots | ~/work/chatgpt-web |
| CHATGPT_MODEL_SLUG | No | Optional ?model= slug | |
| CHATGPT_STABLE_SEC | No | Reply must be unchanged this long (and show a Copy button) to count as finished | 20 |
| CHATGPT_MODEL_LABEL | No | Model to select; substring expected in the model picker; empty = don't touch the model | |
| CHATGPT_MAX_WAIT_SEC | No | Upper bound for one wait/send --wait call | 900 |
| CHATGPT_MODEL_STRICT | No | Set to 1 to turn a model mismatch into an error |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusA | Session state (logged_in/anonymous/login_required), current model label, configured project, open chat tabs. Cheap; call first. |
| doctorA | Health check: CDP reachable, session state, file input present, available model names, whether the configured project exists. Use when something fails. |
| list_chatsA | List conversations inside the configured ChatGPT project (title + url). Optional substring filter on title. |
| new_chatA | Open a new conversation inside the configured project and select the configured model. Returns a temporary handle |
| open_chatA | Open an existing conversation by URL (https://chatgpt.com/c/...) so you can continue it. Returns turn counts and a preview of the last reply. |
| sendA | Send a message (optionally with files under the work dir, max 10) to a chat. Returns immediately with status=generating unless wait_sec>0 (max 900). reply_format: largest_markdown | text | blocks | all. |
| waitA | Wait for the newest reply in a chat to finish (poll). timeout_sec<=900; if it returns status=generating call wait again. Returns the reply in reply_format. |
| get_replyA | Read an assistant reply without waiting. index=-1 is the newest. reply_format: text | blocks | largest_markdown | all. |
| save_replyA | Write a reply to a file under the work dir without passing the whole text through the model. reply_format largest_markdown extracts the biggest ```markdown block (falls back to full text). Returns word/section stats. |
| stopB | Stop the reply currently being generated in a chat. |
| close_chatA | Close the browser tab of a chat (the conversation stays in ChatGPT). |
| check_fileA | Offline: word count per |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FirstWari/chatgpt-web'
If you have feedback or need assistance with the MCP directory API, please join our Discord server