{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"hn-46483550","slug":"comet-mcp-give-claude-code-a-browser-that-can-clic","name":"Comet MCP – Give Claude Code a browser that can click","type":"mcp","url":"https://github.com/hanzili/comet-mcp","page_url":"https://unfragile.ai/comet-mcp-give-claude-code-a-browser-that-can-clic","categories":["mcp-servers"],"tags":["hackernews","show-hn"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"hn-46483550__cap_0","uri":"capability://tool.use.integration.mcp.based.browser.automation.protocol.for.claude","name":"mcp-based browser automation protocol for claude","description":"Implements the Model Context Protocol (MCP) as a bridge between Claude Code and a headless browser instance, enabling Claude to issue structured browser commands (navigate, click, type, scroll) through standardized JSON-RPC messages. The architecture uses MCP's server-client pattern where Comet acts as an MCP server exposing browser capabilities as callable tools that Claude's tool-use system can invoke with full context awareness.","intents":["Enable Claude to autonomously interact with web applications without manual browser control","Allow Claude to perform multi-step web automation tasks like form filling, data extraction, and navigation","Give Claude the ability to verify its own code changes by interacting with live web interfaces"],"best_for":["AI engineers building autonomous agents that need web interaction capabilities","Teams using Claude Code who want to extend it with browser automation without custom integrations","Developers prototyping web scraping or RPA workflows with LLM-driven logic"],"limitations":["Limited to MCP-compatible clients (Claude Code, other MCP-aware tools) — cannot be used with standard OpenAI or Anthropic APIs directly","Browser automation latency adds 500ms-2s per interaction, making real-time interactions slower than direct user control","No built-in session persistence — each MCP invocation operates in isolated browser context unless explicitly managed"],"requires":["Claude Code or compatible MCP client","Node.js 16+ or Python 3.8+ (depending on implementation)","Anthropic API key for Claude integration","Headless browser (Chromium/Firefox) installed or accessible via Docker"],"input_types":["MCP tool call with JSON parameters (URL, selector, text input, coordinates)","Natural language instructions from Claude (translated to tool calls)"],"output_types":["Browser state snapshots (HTML, screenshots)","Structured extraction results (JSON)","Interaction confirmation (success/failure with error details)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_1","uri":"capability://automation.workflow.headless.browser.control.with.click.based.interaction","name":"headless browser control with click-based interaction","description":"Provides Claude with the ability to interact with web pages through click, type, scroll, and navigation commands executed against a headless browser instance. The implementation likely uses Puppeteer, Playwright, or Selenium under the hood to translate high-level MCP commands into low-level browser automation APIs, with DOM element selection via CSS selectors or XPath expressions.","intents":["Click buttons, links, and interactive elements on web pages","Fill out forms and input fields with text or structured data","Navigate between pages and handle multi-step workflows","Scroll and interact with dynamic content loaded via JavaScript"],"best_for":["Automating repetitive web tasks that require visual/interactive understanding","Testing web applications by simulating user interactions","Scraping JavaScript-heavy websites that require interaction to load content"],"limitations":["Cannot handle complex visual reasoning (e.g., 'click the red button in the top-right') — requires explicit selectors or coordinate-based clicking","No built-in visual feedback loop — Claude cannot see the page state in real-time without explicit screenshot commands","Headless browser startup adds 2-5 second overhead per session, making rapid interactions inefficient","Limited to single-tab/single-window workflows — no multi-window coordination"],"requires":["Headless browser binary (Chromium, Firefox, or WebKit)","Browser automation library (Puppeteer, Playwright, or Selenium)","Sufficient system resources (RAM, CPU) for browser process"],"input_types":["CSS selectors or XPath expressions for element targeting","Text strings for input fields","Coordinate pairs (x, y) for click operations","Scroll direction and distance parameters"],"output_types":["Boolean success/failure confirmation","HTML content of page after interaction","Screenshot data (PNG/JPEG) for visual verification","Error messages (element not found, timeout, etc.)"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_2","uri":"capability://image.visual.screenshot.capture.and.visual.state.inspection","name":"screenshot capture and visual state inspection","description":"Enables Claude to capture full-page or viewport screenshots of the current browser state and receive them as image data, allowing Claude to understand the visual layout and content of web pages. The implementation captures the rendered DOM as PNG/JPEG images, which Claude can then analyze using its vision capabilities to inform subsequent interactions or verify task completion.","intents":["Verify that a web interaction succeeded by visually inspecting the result","Understand the current layout and available interactive elements on a page","Detect error messages or unexpected states that require corrective action","Provide visual feedback to users about the automation progress"],"best_for":["Workflows requiring visual verification of automation steps","Debugging browser automation failures by inspecting rendered state","Building Claude agents that need to understand page layout before deciding next actions"],"limitations":["Screenshot capture adds 200-500ms latency per invocation, slowing down rapid interaction loops","Claude's vision analysis of screenshots is slower than direct DOM queries, making it inefficient for large-scale data extraction","Screenshots do not capture dynamic content loaded after initial render (e.g., lazy-loaded images, infinite scroll)","Image size can be large (1-5MB for full-page screenshots), increasing token usage and API costs"],"requires":["Headless browser with rendering capability (not text-only browsers)","Sufficient memory for screenshot buffer (typically 10-50MB per screenshot)","Claude's vision capabilities enabled (available in Claude 3.5+)"],"input_types":["Screenshot region specification (full page, viewport, or element-specific)","Optional screenshot format preference (PNG, JPEG, WebP)"],"output_types":["Image data (PNG/JPEG) encoded as base64 or file reference","Image dimensions and viewport information","Metadata about rendered elements (optional)"],"categories":["image-visual","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_3","uri":"capability://tool.use.integration.dom.based.element.selection.and.targeting","name":"dom-based element selection and targeting","description":"Provides Claude with mechanisms to identify and target specific DOM elements using CSS selectors, XPath expressions, or text-based matching. The implementation parses the DOM tree and exposes element metadata (tag, attributes, text content, position) to Claude, enabling precise targeting of interactive elements without requiring visual analysis or coordinate guessing.","intents":["Identify the correct button or link to click among multiple similar elements","Target form fields by label text or placeholder content","Select elements within nested or dynamically-generated structures","Verify that expected elements exist before attempting interaction"],"best_for":["Automating well-structured web applications with semantic HTML","Workflows where element selectors are stable and predictable","Reducing reliance on visual analysis for element identification"],"limitations":["Requires stable CSS selectors or XPath expressions — breaks if page structure changes","Cannot identify elements by visual appearance alone (e.g., 'the red button') without additional vision analysis","XPath and CSS selector complexity can grow exponentially for deeply nested or dynamically-generated content","No built-in fuzzy matching — exact selector matches required, making it brittle for minor DOM variations"],"requires":["Access to DOM tree (requires headless browser with DOM API support)","Knowledge of CSS selectors or XPath syntax (or Claude must learn it)"],"input_types":["CSS selector string (e.g., 'button.submit-btn')","XPath expression (e.g., '//button[contains(text(), \"Submit\")]')","Text content for fuzzy matching (optional)"],"output_types":["Element reference or identifier","Element metadata (tag, attributes, text, position, visibility)","List of matching elements with disambiguation info","Error if element not found or selector is ambiguous"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_4","uri":"capability://automation.workflow.multi.step.workflow.orchestration.with.state.management","name":"multi-step workflow orchestration with state management","description":"Enables Claude to execute complex, multi-step browser automation workflows by maintaining browser state across multiple MCP tool invocations and allowing Claude to chain interactions based on intermediate results. The implementation preserves browser session state (cookies, local storage, authentication) across tool calls, enabling workflows that span multiple pages or require maintaining user context.","intents":["Execute login workflows that require multiple form submissions and redirects","Perform data entry across multiple pages with state carried forward","Implement conditional logic based on page state (e.g., 'if error appears, retry with different input')","Build complex automation sequences that require human-like reasoning between steps"],"best_for":["Multi-page workflows requiring authentication or session state","Conditional automation where next steps depend on previous results","Long-running tasks that require Claude to make decisions between interactions"],"limitations":["No built-in transaction rollback — failed steps cannot be easily undone without manual state reset","Session state is ephemeral — no persistence across separate MCP client sessions unless explicitly saved","Complex workflows can exceed Claude's context window, requiring manual state serialization or checkpointing","Timing issues with asynchronous page loads can cause race conditions (e.g., clicking before page fully loads)"],"requires":["Persistent browser session (same browser instance across multiple MCP calls)","Sufficient context window in Claude to maintain workflow state and logic","Mechanism to handle timeouts and retries (may require custom Claude prompting)"],"input_types":["Sequence of browser interaction commands","Conditional logic expressed in Claude's reasoning","State snapshots or verification checks between steps"],"output_types":["Workflow completion status (success/failure)","Final page state or extracted data","Intermediate results and decision points","Error logs and recovery information"],"categories":["automation-workflow","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_5","uri":"capability://data.processing.analysis.web.content.extraction.and.data.structuring","name":"web content extraction and data structuring","description":"Allows Claude to extract structured data from web pages by querying the DOM and receiving results in JSON or other structured formats. The implementation parses HTML content and returns extracted data (tables, lists, key-value pairs) in a format Claude can directly use for downstream processing, analysis, or storage without additional parsing.","intents":["Extract product information (price, description, availability) from e-commerce pages","Scrape table data from web applications and convert to CSV or JSON","Collect contact information or metadata from multiple pages","Verify that expected data is present on a page before proceeding with automation"],"best_for":["Data extraction from structured web content (tables, lists, forms)","Workflows that combine automation with data collection","Building datasets from web sources without manual copying"],"limitations":["Extraction quality depends on HTML structure — poorly-formatted or dynamically-generated content may not extract cleanly","No built-in handling for pagination — requires Claude to manually loop through pages","Large-scale extraction (thousands of records) can exceed Claude's context window or token limits","Cannot extract data from images or non-HTML content (PDFs, videos) without additional processing"],"requires":["Well-formed HTML or DOM structure","Clear CSS selectors or XPath for target data elements","Sufficient context window for extracted data (typically 10-100KB per page)"],"input_types":["CSS selector or XPath for data elements","Extraction schema (optional) specifying desired fields and structure","Pagination parameters (if applicable)"],"output_types":["JSON object or array with extracted data","CSV or TSV format (optional)","Structured metadata about extraction (confidence, completeness)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"hn-46483550__cap_6","uri":"capability://automation.workflow.error.handling.and.recovery.with.retry.logic","name":"error handling and recovery with retry logic","description":"Provides Claude with mechanisms to detect, handle, and recover from browser automation failures (timeouts, element not found, network errors) through structured error responses and retry capabilities. The implementation returns detailed error information that Claude can use to decide whether to retry, adjust selectors, or take alternative actions.","intents":["Automatically retry failed interactions (e.g., click timeout) without manual intervention","Detect and handle transient errors (network timeouts, temporary unavailability)","Adjust automation strategy based on error type (e.g., use alternative selector if element not found)","Log and report errors for debugging and monitoring"],"best_for":["Long-running automations that need resilience to transient failures","Workflows targeting unstable or slow-loading websites","Production automation where manual intervention is not feasible"],"limitations":["Retry logic is not built-in — Claude must implement retry logic in its reasoning, consuming additional tokens","No exponential backoff or sophisticated retry strategies — requires custom Claude prompting","Cannot distinguish between transient and permanent errors automatically — may waste time retrying unrecoverable failures","Error messages may be cryptic or unhelpful for debugging (e.g., generic 'timeout' without context)"],"requires":["Detailed error reporting from browser automation library","Claude's ability to reason about error types and recovery strategies","Timeout configuration appropriate for target website speed"],"input_types":["Interaction command with optional timeout and retry parameters","Error handling strategy (retry, fallback, abort)"],"output_types":["Structured error object with type, message, and context","Retry attempt count and backoff information","Suggestion for recovery action (optional)"],"categories":["automation-workflow","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":37,"verified":false,"data_access_risk":"moderate","permissions":["Claude Code or compatible MCP client","Node.js 16+ or Python 3.8+ (depending on implementation)","Anthropic API key for Claude integration","Headless browser (Chromium/Firefox) installed or accessible via Docker","Headless browser binary (Chromium, Firefox, or WebKit)","Browser automation library (Puppeteer, Playwright, or Selenium)","Sufficient system resources (RAM, CPU) for browser process","Headless browser with rendering capability (not text-only browsers)","Sufficient memory for screenshot buffer (typically 10-50MB per screenshot)","Claude's vision capabilities enabled (available in Claude 3.5+)"],"failure_modes":["Limited to MCP-compatible clients (Claude Code, other MCP-aware tools) — cannot be used with standard OpenAI or Anthropic APIs directly","Browser automation latency adds 500ms-2s per interaction, making real-time interactions slower than direct user control","No built-in session persistence — each MCP invocation operates in isolated browser context unless explicitly managed","Cannot handle complex visual reasoning (e.g., 'click the red button in the top-right') — requires explicit selectors or coordinate-based clicking","No built-in visual feedback loop — Claude cannot see the page state in real-time without explicit screenshot commands","Headless browser startup adds 2-5 second overhead per session, making rapid interactions inefficient","Limited to single-tab/single-window workflows — no multi-window coordination","Screenshot capture adds 200-500ms latency per invocation, slowing down rapid interaction loops","Claude's vision analysis of screenshots is slower than direct DOM queries, making it inefficient for large-scale data extraction","Screenshots do not capture dynamic content loaded after initial render (e.g., lazy-loaded images, infinite scroll)","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.46,"quality":0.24,"ecosystem":0.46,"match_graph":0.25,"freshness":0.6,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.691Z","last_scraped_at":"2026-05-04T08:10:01.171Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=comet-mcp-give-claude-code-a-browser-that-can-clic","compare_url":"https://unfragile.ai/compare?artifact=comet-mcp-give-claude-code-a-browser-that-can-clic"}},"signature":"uQTmXY9w3zUoUqiuzUyWE/nPTK8y8eu/7x8Mcy3UukEt7K99MnlVdTO8OuZcrmXMOYBslKs8hHTNUciZXFLEBA==","signedAt":"2026-06-21T11:35:13.479Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/comet-mcp-give-claude-code-a-browser-that-can-clic","artifact":"https://unfragile.ai/comet-mcp-give-claude-code-a-browser-that-can-clic","verify":"https://unfragile.ai/api/v1/verify?slug=comet-mcp-give-claude-code-a-browser-that-can-clic","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}