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 |
Capabilities
Features and capabilities supported by this server
| 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