annotate-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANNOTATE_DIR | No | Where marks are stored. | <cwd>/.annotations |
| ANNOTATE_CHANNEL | No | Playwright channel; unset-able to force bundled Chromium. | chrome |
| ANNOTATE_PROFILE | No | Persistent browser profile. | <ANNOTATE_DIR>/chrome-profile |
| MCP_TOOL_TIMEOUT | No | Timeout limit as an env var; defaults to ~28h when unset. | |
| ANNOTATE_HEADLESS | No | Set to '1' only for the smoke test — headed is the point. | 0 |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| annotate_openA | Open the annotation browser (headed Chrome, persistent profile) and optionally navigate to a URL. The comment/pencil toolbar is injected into every page automatically. Call this first; the human then browses and marks up pages themselves. ALWAYS follow this with annotate_wait in the same turn — the human expects pressing Send to reach you, and it only does while something is parked. |
| annotate_waitA | Park until the human presses Send in the review panel, then return that batch. This is the main hand-off and the ONLY way a send reaches you on its own — an MCP server cannot start a turn, so with nobody parked a send just sits in the store until someone asks for it. Call this immediately after annotate_open and again after handling each batch. It is cheap to park: some clients (Claude Code) move a call still running after two minutes to a background task, so you keep working and the batch arrives as a task notification. The overlay shows the human a live indicator of whether anyone is parked. |
| annotate_listA | List annotation marks as a readable briefing, grouped by page. Use this to check what is pending without waiting for a send. |
| annotate_inboxA | Re-read the most recent Send batch without waiting. Useful if the conversation moved on and you need the original request again. |
| annotate_screenshotA | Screenshot the current page with the drawings visible but the toolbar hidden. Pass a markId to crop tightly around that mark — the fastest way to see what a squiggle actually meant. |
| annotate_resolveA | Mark items as done once you have acted on them. They stay visible on the page but dim, so the human can see what you handled. |
| annotate_clearA | Delete marks permanently. With no ids, deletes everything. |
| annotate_closeA | Close the annotation browser. Marks are kept on disk. |
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/ElaineMHr/annotate-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server