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 | |
TDQS
Scored across 12 tools
Most tools are clearly distinct: new_chat/open_chat/send/wait/get_reply/save_reply each target a different step in the chat workflow. The only minor overlap is status and doctor, but their descriptions make status a cheap session snapshot and doctor a deeper diagnostics tool.
Many tools follow a verb_noun pattern (list_chats, open_chat, get_reply, save_reply, close_chat, check_file), but status and doctor are bare nouns and new_chat breaks the verb-led convention. Send, wait, and stop are also simple verbs, so the naming style is somewhat mixed but still readable.
Twelve tools is a reasonable size for automating ChatGPT web interactions, covering session management, chat navigation, messaging, reply retrieval, and cleanup. The count does not feel excessive, though a few tools like check_file seem only tangentially related to the core workflow.
The set covers the main lifecycle well: create, open, send, wait, read, save, stop, and close chats. Minor gaps exist—there is no way to list messages within a chat or rename/delete conversations—but agents can complete the primary task of conversing with ChatGPT and saving responses.