Perplexity Comet MCP
The Perplexity Comet MCP server bridges Claude Code with the Perplexity Comet browser for autonomous web browsing, research, and multi-tab workflow management.
Core Capabilities:
Autonomous Web Browsing: Send natural language prompts for autonomous navigation, clicking, typing, and data extraction with full JavaScript rendering and dynamic content support
Deep Research: Leverage Perplexity's search, research, labs, and learn modes for comprehensive analysis, bypassing limitations of static search APIs
Authenticated Content Access: Handle websites behind login walls using real browser sessions
Multi-Tab Management: List, switch between, and close browser tabs with domain-based filtering and last-tab protection to prevent accidental crashes
File Upload: Upload local files (images, documents) to web forms and file inputs with auto-detection or CSS selector targeting
Task Control: Monitor ongoing agentic tasks for status and progress, with ability to stop runaway tasks
Screenshot Capture: Take PNG screenshots of current browser views for documentation or analysis
Enhanced Reliability: Smart completion detection, auto-reconnection with exponential backoff, and pre-operation health checks ensure robust execution
Cross-Platform Support: Full compatibility across Windows, macOS, and WSL with automatic platform detection and fallback mechanisms
Enables autonomous web browsing and research through Perplexity's Comet browser, providing tools for navigation, data extraction, tab management, screenshot capture, file uploads, and leveraging Perplexity's research modes for comprehensive analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Perplexity Comet MCPresearch the latest React 19 features and summarize key changes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Perplexity Comet MCP
A production-grade MCP (Model Context Protocol) server that bridges Claude Code with Perplexity's Comet browser for autonomous web browsing, research, and multi-tab workflow management.
Why Perplexity Comet MCP?
Approach | Limitation |
Search APIs | Static text, no interaction, no login support |
Browser Automation | Single-agent model overwhelms context, fragments focus |
Perplexity Comet MCP | Claude codes while Comet handles browsing autonomously |
This is a significantly enhanced fork of hanzili/comet-mcp with Windows support, smart completion detection, robust connection handling, and full tab management.
Related MCP server: Comet MCP
Features
Core Capabilities
Autonomous Web Browsing - Comet navigates, clicks, types, and extracts data while Claude focuses on coding
Deep Research Mode - Leverage Perplexity's research capabilities for comprehensive analysis
Login Wall Handling - Access authenticated content through real browser sessions
Dynamic Content - Full JavaScript rendering and interaction support
Enhanced Features (New in This Fork)
Feature | Description |
Windows/WSL Support | Full compatibility with Windows and WSL environments |
Tab Management | Track, switch, and close browser tabs with protection |
Smart Completion | Detect response completion without fixed timeouts |
Auto-Reconnect | Exponential backoff recovery from connection drops |
One-Shot Reliability | Pre-operation health checks for consistent execution |
Agentic Auto-Trigger | Automatically triggers browser actions from natural prompts |
Comparison with Original
Capability | Original | Enhanced |
Platform Support | macOS | Windows, WSL, macOS |
Available Tools | 6 | 8 (+comet_tabs, +comet_upload) |
Completion Detection | Fixed timeout | Stability-based |
Connection Recovery | None | Auto-reconnect with backoff |
Tab Management | None | Full registry and control |
Health Monitoring | None | Cached health checks |
Last Tab Protection | None | Prevents browser crash |
Installation
Prerequisites
Node.js 18 or higher
Perplexity Comet Browser installed
Claude Code or compatible MCP client
Install via npm
npm install -g perplexity-comet-mcpInstall from Source
git clone https://github.com/RapierCraft/perplexity-comet-mcp.git
cd perplexity-comet-mcp
npm install
npm run buildConfigure Claude Code
Add to your Claude Code MCP settings (~/.claude/settings.json or VS Code settings):
{
"mcpServers": {
"comet-bridge": {
"command": "node",
"args": ["/path/to/perplexity-comet-mcp/dist/index.js"]
}
}
}Windows Users: Use the full Windows path:
{
"mcpServers": {
"comet-bridge": {
"command": "node",
"args": ["C:\\Users\\YourName\\perplexity-comet-mcp\\dist\\index.js"]
}
}
}Tools Reference
comet_connect
Establish connection to Comet browser. Auto-launches if not running.
Parameters: None
Returns: Connection status messageExample:
> comet_connect
Comet started with debug port 9223
Connected to Perplexity (cleaned 2 old tabs)comet_ask
Send a prompt to Comet and wait for the complete response. Automatically triggers agentic browsing for URLs and action-oriented requests.
Parameters:
- prompt (required): Question or task for Comet
- newChat (optional): Start fresh conversation (default: false)
- timeout (optional): Max wait time in ms (default: 120000)
Returns: Complete response textExamples:
# Simple research query
> comet_ask "What are the latest features in Python 3.12?"
# Agentic browsing (auto-triggered)
> comet_ask "Go to github.com/trending and list top Python repos"
# Site-specific data extraction
> comet_ask "Check the price of iPhone 15 on amazon.com"comet_poll
Check status and progress of ongoing tasks. Returns the response if completed.
Parameters: None
Returns: Status (IDLE/WORKING/COMPLETED), steps taken, or final responseExample:
> comet_poll
Status: WORKING
Browsing: https://github.com/trending
Current: Scrolling page
Steps:
- Preparing to assist you
- Navigating to github.com
- Clicking on Trending
- Scrolling pagecomet_stop
Halt the current agentic task if it goes off track.
Parameters: None
Returns: Confirmation messagecomet_screenshot
Capture a screenshot of the current browser view.
Parameters: None
Returns: PNG image datacomet_tabs
View and manage browser tabs. Essential for multi-tab workflows.
Parameters:
- action (optional): "list" (default), "switch", or "close"
- domain (optional): Domain to match (e.g., "github.com")
- tabId (optional): Specific tab ID
Returns: Tab listing or action confirmationExamples:
# List all external tabs
> comet_tabs
2 browsing tab(s) open:
- AGENT-BROWSING: github.com [ACTIVE]
URL: https://github.com/trending
- AGENT-BROWSING: stackoverflow.com
URL: https://stackoverflow.com/questions
# Switch to a tab
> comet_tabs action="switch" domain="stackoverflow.com"
Switched to stackoverflow.com (https://stackoverflow.com/questions)
# Close a tab (protected if last tab)
> comet_tabs action="close" domain="github.com"
Closed github.comTab Protection:
Cannot close the last external browsing tab (prevents Comet crash)
Internal tabs (chrome://, Perplexity UI) are automatically filtered
comet_mode
Switch Perplexity search modes for different use cases.
Parameters:
- mode (optional): "search", "research", "labs", or "learn"
Returns: Current mode or confirmation of switchMode | Use Case |
search | Quick web searches |
research | Deep, comprehensive analysis |
labs | Data analytics and visualization |
learn | Educational explanations |
comet_upload
Upload files to file input elements on web pages. Essential for posting images to social media, attaching files to forms, or uploading documents.
Parameters:
- filePath (required): Absolute path to the file to upload
- selector (optional): CSS selector for specific file input
- checkOnly (optional): If true, only checks what file inputs exist
Returns: Success message or error with available inputsExamples:
# Upload an image to the first file input found
> comet_upload filePath="/home/user/screenshot.png"
File uploaded successfully: /home/user/screenshot.png
# Check what file inputs exist on the page
> comet_upload filePath="dummy" checkOnly=true
Found 2 file input(s) on the page:
1. #image-upload
2. input[name="attachment"]
# Upload to a specific input
> comet_upload filePath="/home/user/doc.pdf" selector="#attachment-input"
File uploaded successfully: /home/user/doc.pdfWorkflow for posting images:
Navigate to the post creation page (e.g., Reddit, Twitter)
Use
comet_upload checkOnly=trueto find file inputsUse
comet_upload filePath="..." selector="..."to attach the fileContinue with form submission
Architecture
┌─────────────────┐ MCP Protocol ┌──────────────────┐
│ Claude Code │ ◄──────────────────► │ Perplexity │
│ (Your IDE) │ │ Comet MCP │
└─────────────────┘ └────────┬─────────┘
│
Chrome DevTools
Protocol
│
┌────────▼─────────┐
│ Comet Browser │
│ (Perplexity) │
└──────────────────┘
│
┌────────▼─────────┐
│ External │
│ Websites │
└──────────────────┘Key Components
Component | Purpose |
| MCP server and tool handlers |
| Chrome DevTools Protocol client with reconnection logic |
| Perplexity interaction, prompt submission, response extraction |
| TypeScript interfaces for tabs, state, and CDP types |
Configuration
Environment Variables
Variable | Description | Default |
| Custom path to Comet executable | Auto-detected |
| CDP debugging port | 9223 |
Custom Comet Path
# Windows
set COMET_PATH=C:\Custom\Path\comet.exe
# macOS/Linux
export COMET_PATH=/custom/path/to/Comet.app/Contents/MacOS/CometTroubleshooting
Connection Issues
Problem: Error: Failed to list targets: ECONNREFUSED
Solutions:
Ensure Comet browser is installed
Close any existing Comet instances
Run
comet_connectto auto-start with correct flags
Problem: WebSocket connection closed during long tasks
Solution: This version handles reconnection automatically. If persistent, increase timeout:
comet_ask prompt="..." timeout=180000Windows-Specific Issues
Problem: ECONNRESET errors on Windows
Solution: This version includes PowerShell-based fetch workarounds. Ensure:
PowerShell is available in PATH
No firewall blocking localhost:9223
Problem: Comet not found on Windows
Solution: Set custom path:
set COMET_PATH=%LOCALAPPDATA%\Perplexity\Comet\Application\comet.exeWSL-Specific Issues
Problem: WSL cannot connect to Windows localhost:9223
Explanation: WSL2 uses a separate network namespace by default. The MCP uses Chrome DevTools Protocol (CDP) which requires WebSocket connections to Windows localhost.
Solution: Enable WSL mirrored networking:
Create or edit
%USERPROFILE%\.wslconfig(e.g.,C:\Users\YourName\.wslconfig):
[wsl2]
networkingMode=mirroredRestart WSL:
wsl --shutdownOpen a new WSL terminal and try again.
Alternative: Run Claude Code from Windows PowerShell instead of WSL.
Problem: UNC paths are not supported warnings
Explanation: This is a benign warning from PowerShell when launched from WSL. The MCP handles this automatically.
Tab Management Issues
Problem: Cannot close - this is the only browsing tab
Explanation: This is intentional protection. Comet requires at least one external tab. Open another tab first, then close the unwanted one.
Development
Build from Source
git clone https://github.com/RapierCraft/perplexity-comet-mcp.git
cd perplexity-comet-mcp
npm install
npm run buildRun in Development
npm run devRun Tests
npm testProject Structure
perplexity-comet-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── cdp-client.ts # CDP connection management
│ ├── comet-ai.ts # AI interaction logic
│ └── types.ts # TypeScript definitions
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.mdContributing
Contributions are welcome. Please read CONTRIBUTING.md before submitting a pull request.
Development Guidelines
Maintain TypeScript strict mode compliance
Add tests for new features
Update documentation for API changes
Follow existing code style
Attribution
This project is an enhanced fork of comet-mcp by hanzili.
Key Enhancements by RapierCraft
Windows and WSL platform support
Tab management system (comet_tabs tool)
Smart completion detection
Auto-reconnect with exponential backoff
Health check caching
Agentic prompt auto-transformation
Last tab protection
Internal tab filtering
License
MIT License - see LICENSE for details.
Links
Built with precision by RapierCraft
Available Tools
8 toolscomet_askA
Send a prompt to Comet/Perplexity and wait for the complete response (blocking). Ideal for tasks requiring real browser interaction (login walls, dynamic content, filling forms) or deep research with agentic browsing.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Question or task for Comet - focus on goals and context | |
| context | No | Optional context to include (e.g., file contents, codebase info, marketing guidelines). This will be prefixed to the prompt to give Comet full context. | |
| newChat | No | Start a fresh conversation (default: false) | |
| timeout | No | Max wait time in ms (default: 120000 = 2min) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description mentions 'blocking' and 'wait for complete response' which indicates synchronous behavior. However, it does not disclose potential issues like rate limits, authentication requirements, or side effects on sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant information, front-loaded with the core action and use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet description does not hint at the response format. With siblings like comet_poll and comet_screenshot, some mention of integration or alternatives would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage; the description adds little beyond the schema, with only a vague recommendation to 'focus on goals and context.' It does not clarify parameter interactions or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Send a prompt and wait for complete response'), identifies the resource ('Comet/Perplexity'), and specifies blocking behavior, which distinguishes it from non-blocking siblings like comet_poll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly advises when to use this tool: 'tasks requiring real browser interaction (login walls, dynamic content, filling forms) or deep research with agentic browsing.' It provides clear context but could explicitly mention cases where it is not suitable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_connectA
Connect to Comet browser (auto-starts if needed)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool may auto-start the browser, a key behavioral trait. However, it does not mention side effects, permissions, or confirm whether it blocks or returns a status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no extraneous words. Every part adds value, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description is minimally sufficient but lacks details on return behavior or blocking nature. It could be more informative without being verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters, so no parameter description is needed. According to guidelines, 0 parameters yields a baseline of 4, meriting credit for having no missing param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Connect' and the resource 'Comet browser', with added context 'auto-starts if needed'. This distinguishes it from sibling tools like comet_ask, comet_stop, etc., which are clearly different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used to establish a connection or start the browser, but provides no explicit guidance on when to use it versus alternatives, nor any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_modeA
Switch Perplexity search mode. Modes: 'search' (basic), 'research' (deep research), 'labs' (analytics/visualization), 'learn' (educational). Call without mode to see current mode.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Mode to switch to (optional - omit to see current mode) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that calling without mode retrieves the current state (read behavior) and calling with mode switches it (write behavior). However, it does not mention any side effects, prerequisites, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using three short sentences. It front-loads the action and lists modes efficiently, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description lacks details about return values (e.g., confirmation or error messages). It implies a read behavior without mode but does not specify output format. Given the simplicity, it is somewhat adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with an enum and description. The description adds value by explaining each mode's purpose in parentheses, which is more informative than the enum labels alone. This complements the schema effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Switch' and the resource 'Perplexity search mode', listing all modes with brief explanations. It distinguishes from sibling tools (e.g., comet_ask, comet_connect) by focusing solely on mode management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to call without a mode to see the current mode, providing clear usage context. However, it does not offer guidance on when to use specific modes or alternatives among the modes themselves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_pollA
Check agent status and progress. Call repeatedly to monitor agentic tasks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It implies a read-only, safe polling operation by saying 'check' and 'monitor', but does not mention what happens if the agent is idle or fails, nor any rate limits. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with purpose, then usage hint. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is mostly complete for a simple no-param polling tool: what it does and how to use it. It lacks detail on return format, but given no output schema, the agent can infer a status summary. Slight gap in describing the response nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (schema coverage 100% trivially), so the baseline is 4. The description adds meaning about repeated calls, which is helpful for an empty-schema tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it checks agent status and progress, with the verb 'check' and resource 'agent status/progress'. It distinguishes from siblings like comet_ask (single query) and comet_stop (stop) by emphasizing repeated calling for monitoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call repeatedly to monitor agentic tasks', giving clear when-to-use context for polling. It does not explicitly exclude alternatives, but the purpose is well-defined given sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_screenshotB
Capture a screenshot of current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, and the description does not disclose any behavioral traits like required permissions, side effects (e.g., page scrolling), or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that directly states the tool's purpose, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description should explain what the tool returns (e.g., image data or a file path), but it does not, leaving the agent uninformed about the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description meets the baseline of 4, as there is no additional parameter information needed beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Capture a screenshot' and the resource 'current page', distinguishing it from sibling tools like comet_ask, comet_tabs, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as comet_tabs for navigation or comet_upload for file operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_stopA
Stop the current agent task if it's going off track
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the core behavior (stop a task), but lacks detail on side effects, reversibility, or post-stop state. Without annotations, the description carries the full burden and is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words, fully front-loaded with action and condition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop tool with no params or output schema, the description is sufficient to understand purpose and usage condition. Minor improvement could include mention of irreversibility or effect on subsequent tasks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description cannot add meaning beyond the schema. Baseline score of 4 applies per guidelines.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('stop') and resource ('current agent task'), with a specific condition ('if it's going off track'). Distinguishes from sibling tools like comet_ask or comet_connect by its specific verb and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear condition for use ('if it's going off track'), implying when to invoke. However, no explicit mention of when not to use or alternatives, which would fully round out the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_tabsA
View and manage browser tabs. Shows all open tabs with their purpose, domain, and status. Helps coordinate multi-tab workflows without creating duplicate tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to perform: 'list' (default) shows all tabs, 'switch' activates a tab, 'close' closes a tab | |
| domain | No | For switch/close: domain to match (e.g., 'github.com') | |
| tabId | No | For switch/close: specific tab ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states 'Shows all open tabs' and mentions actions, but does not describe side effects of switch/close, error conditions, or whether the tool modifies state. The description is too brief for a tool that performs mutable operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the main purpose ('View and manage browser tabs'). Every sentence adds value, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, no required, no output schema), the description adequately covers purpose and available actions. It implies return format ('shows all open tabs'). A more complete description might explicitly state what 'list' returns, but it is sufficient for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter has a description. The description clarifies the default action ('list' as default) and explains the actions. However, it adds minimal beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'View and manage browser tabs.' It specifies the resource (browser tabs) and actions (view, manage). It distinguishes itself from sibling tools (e.g., comet_screenshot, comet_ask) which are unrelated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for multi-tab workflows ('Helps coordinate...without creating duplicate tabs'), but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
comet_uploadA
Upload a file to a file input on the current page. Use this to attach images, documents, or other files to forms, posts, or upload dialogs. The file must exist on the local filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Absolute path to the file to upload (e.g., '/home/user/image.png' or 'C:\Users\user\image.png') | |
| selector | No | Optional CSS selector for the file input element. If not provided, auto-detects the first file input on the page. | |
| checkOnly | No | If true, only checks if file inputs exist on the page without uploading |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the file must exist locally but doesn't mention behavior on missing file, size limits, or whether upload is synchronous. Minimal insight into side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple upload tool but missing behavioral details like error handling, return value, or whether upload completes before returning. No output schema, so description should cover these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. Description adds one extra constraint ('file must exist on local filesystem') but doesn't significantly enhance understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload a file to a file input on the current page' with specific verb and resource. It distinguishes from siblings like comet_screenshot or comet_ask, as it's the only file upload tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides examples of when to use (attach images, documents, etc.) and implies context (file input on page). No explicit alternatives mentioned, but sibling naming makes it clear this is the only upload tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v2.5.0- Changed
comet_ask2 fields changed- added
Input schema / properties / contextAdded value: +{ + "description": "Optional context to include (e.g., file contents, codebase info, marketing guidelines). This will be prefixed to the prompt to give Comet full context.", + "type": "string" +} - changed
Input schema / properties / timeout / descriptionPrevious value: -"Max wait time in ms (default: 15000 = 15s)"New value: +"Max wait time in ms (default: 120000 = 2min)"
8 tool updates
v1.0.0- First observed
comet_ask - First observed
comet_connect - First observed
comet_mode - First observed
comet_poll - First observed
comet_screenshot - First observed
comet_stop - First observed
comet_tabs - First observed
comet_upload
TDQS
Each tool has a clear and distinct purpose: connect, send request, manage tabs, take screenshot, etc. No two tools overlap in function, so an agent can easily select the appropriate one.
All tools follow the consistent pattern 'comet_<verb>', using lower_snake_case with clear verbs (ask, connect, mode, etc.), making naming predictable and intuitive.
With 8 tools, the set is well-scoped for a browser agent. It covers essential actions without unnecessary bloat, balancing comprehensiveness and simplicity.
The tool set covers core workflows: connecting, browsing (via ask), mode switching, tab management, screenshot capture, file upload, and stopping agents. Minor gaps like explicit URL navigation might exist but are likely handled by comet_ask.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Share context and questions between Claude instances — VS Code, claude.ai web, and mobile.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
- openhelmOAuthai.openhelm
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
Related MCP Servers
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) integration that provides Claude Desktop with autonomous browser automation capabilities. This agent enables Claude to interact with web content, manipulate DOM elements, execute JavaScript, and perform API requests.13441TypeScriptMozilla Public 2.0
- AlicenseAqualityFmaintenanceConnects Claude to Perplexity Comet's agentic browser for autonomous web browsing, deep research, and real-time task monitoring. Enables Claude to delegate web research tasks and receive comprehensive results through multiple browsing modes.690167MIT
- AlicenseAqualityDmaintenanceAn MCP server that connects Claude to Perplexity Comet for agentic web browsing and deep research via an isolated browser instance. It enables Claude to delegate complex navigation, login flows, and real-time task monitoring to Perplexity's specialized research intelligence.890MIT
- AlicenseAqualityCmaintenanceConnects Claude Code to the Perplexity Comet browser to enable autonomous web browsing and agentic research. It features multi-tab management, smart completion detection, and a specialized tool set for organized information retrieval.81772-
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/RapierCraft/Perplexity-Comet-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server