Skip to main content
Glama
chmodami

arc-cdp-mcp

by chmodami

arc-cdp-mcp

An MCP server that gives Claude Code control of Arc — navigate, click, fill forms, screenshot, read console and network traffic. It exists because the official "Claude in Chrome" extension does not work in Arc.

It talks to Arc over the Chrome DevTools Protocol, skipping the extension layer entirely.

Why the official extension fails in Arc

If you installed the Claude extension in Arc and nothing happens, here is what is actually going on. The extension is installed and its native-messaging channel to Claude Code does work — commands reach Arc. Two things break after that:

1. The side panel. The service worker checks for chrome.sidePanel and falls back to a notification whose text is right there in the bundle:

Claude requires the Chrome Side Panel API, which isn't available in this browser. Use Google Chrome, Microsoft Edge, or Brave.

Arc has the API schema compiled in, but its side panel is a custom implementation (ArcBrowserSidePanel) that is not exposed to extensions.

2. New tabs. Arc's new tab is chrome://start-page/<uuid>, which isn't navigable from an extension context — it fails with ERR_INVALID_URL. The tab-group handshake then hangs waiting for a page that will never be ready.

Since Claude Code runs in the terminal, the side panel isn't the part you need — the automation is. So this server drops the extension and speaks CDP to Arc directly.

Related MCP server: Browser Tools for Claude Code

Requirements

macOS, Arc, Node 18+, and Claude Code.

Install

git clone https://github.com/chmodami/arc-cdp-mcp
cd arc-cdp-mcp
npm install
claude mcp add arc-cdp --scope user -- node "$PWD/src/server.js"

Restart Claude Code — MCP servers load at session start.

Running

Arc has to be launched with a debugging port. It must be fully quit first; the flag only applies to a new process.

./arc-start.sh

The script quits Arc, relaunches it with --remote-debugging-port=9222, and waits for CDP to answer. Opening Arc from the Dock afterwards won't carry the flag.

For a different port: ./arc-start.sh 9333, and set ARC_CDP_URL=http://127.0.0.1:9333.

Tools

Tool

What it does

arc_tabs

List tabs with id, title, URL and owned

arc_navigate

Open a URL (reuse the active tab or open a new one)

arc_close_tab

Close a tab this server opened

arc_screenshot

PNG of the viewport or the full page

arc_read_page

Visible text plus every interactive element, each with a ref

arc_click

Click by ref, CSS selector, or visible text

arc_type

Fill a field, optionally pressing Enter

arc_press

Send a key

arc_eval

Run JS in the page

arc_console

Console output and page errors, regex-filterable

arc_network

HTTP responses, regex-filterable, onlyErrors for status >= 400

The intended loop is arc_read_page → take a ref → arc_click/arc_type, rather than guessing CSS selectors. Refs are reassigned on every read, so read again after anything that changes the DOM.

Your tabs vs. the server's tabs

CDP can see every Arc tab, including your bank and your email. To keep an implicit call from ever landing on one:

  • Tabs this server opened are owned: true; tabs that already existed are owned: false.

  • The active tab — used when tabId is omitted — is always an owned one.

  • Targeting one of your tabs requires passing its tabId explicitly.

  • arc_close_tab refuses to close a tab it doesn't own.

Be clear about what this is: a convention inside the server, not a sandbox. An explicit tabId still reaches any tab. CDP has no per-site permission model — the official extension's site-by-site approval is a real protection you give up here. Decide whether that trade is right for you before installing.

Teaching your agent to use it

The tools show up on their own, but Claude Code still sees the mcp__claude-in-chrome__* tools and may reach for those first — they connect, accept commands, and then time out. skill/arc-browser.md is a skill that tells the agent to use arc_* instead, along with the read-then-act loop and the tab rules. Install it with:

mkdir -p ~/.claude/skills/arc-browser
sed "s|<REPO_PATH>|$PWD|g" skill/arc-browser.md > ~/.claude/skills/arc-browser/SKILL.md

Limitations

  • Arc must be launched with the flag. Without it, every tool returns an error telling you how to relaunch.

  • Tabs Arc has suspended have no renderer and stay invisible until they load.

  • No side panel: this is automation only, not Claude chat inside the browser.

  • macOS only, because arc-start.sh uses open and osascript.

Prior art

arc-browser-mcp also drives Arc, with an AppleScript engine alongside CDP. Worth a look — it may fit you better.

License

MIT

Available Tools

11 tools
arc_clickClicarB

Clica num elemento, identificado por ref (de arc_read_page), seletor CSS ou texto visível.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoRef vindo de arc_read_page (preferível).
textNoTexto visível do elemento.
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
selectorNoSeletor CSS.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It only states the action and identification methods, but does not describe side effects (e.g., navigation, state changes), waiting behavior, failure handling, or whether the element must be visible/interactable. This is a significant gap for a click operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that front-loads the core action and lists identification options efficiently. No wasted words or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple click tool, the description is adequate but not complete. It does not mention that only one identifier is needed, how tabId interacts, or any preconditions like page load. While the schema covers parameter descriptions, the description lacks operational context that would help an agent use it correctly in a workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented. The description adds minimal value beyond the schema: it groups ref, selector, and text as identification methods, which the schema already implies. It does not clarify precedence or combination rules (e.g., which takes priority if multiple are provided). Baseline 3 is appropriate given the schema covers the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('clicks on an element') and the identification methods (ref, selector, text). It is specific enough to distinguish from siblings like arc_type (typing) or arc_press (key press), though it doesn't explicitly name them. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention that arc_type is for typing, arc_press for key presses, etc., nor does it state any preconditions or typical scenarios. The only implicit hint is the identification methods, which is not enough for an agent to decide confidently.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_close_tabFechar abaA

Fecha uma aba aberta por este servidor. Abas do usuário não podem ser fechadas.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the key constraint (only server-opened tabs) but does not explain error behavior, idempotency, or what happens if the tabId does not exist or belongs to a user. This is a moderate gap for a mutation-like tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the primary action and immediately states the restriction. Every word is useful, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description covers the core purpose and a critical restriction. However, it omits parameter provenance, error handling, and any side effects, leaving the agent without full guidance for correct invocation. This is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage for the single parameter tabId, and the description adds no meaning beyond the name and integer type. There is no guidance on how to obtain the tabId (e.g., from arc_tabs) or any format details, so the description fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (closes a tab), the specific resource (a tab opened by this server), and a distinct limitation (user tabs cannot be closed). It differentiates from siblings like arc_tabs or arc_navigate by focusing on the close operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (for tabs opened by this server) and when not to use (user tabs cannot be closed). This provides both a clear context and an exclusion, satisfying the when/when-not criterion without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_consoleConsoleB

Mensagens de console e erros de página capturados desde que a aba abriu.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
patternNoFiltro regex sobre o texto.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that messages are 'captured since the tab opened,' implying a historical snapshot, but it doesn't state whether the operation is read-only, whether the log is cleared, or any side effects. For a simple getter this is acceptable but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, focused sentence with no filler. It is front-loaded with the core purpose and efficiently communicates the resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters, both fully described in the schema. The description gives the purpose and scope, which is sufficient for an agent to invoke it correctly. The absence of an output schema is not a gap given the nature of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (tabId and pattern) are already documented. The description adds no additional meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource: 'console messages and page errors captured since the tab opened.' It specifies the scope (since tab opened) and implies a retrieval operation, though it lacks an explicit verb like 'get' or 'list.' It is distinct from siblings like arc_network (network requests) and arc_read_page (page content), so the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention exclusions or when not to use it. The agent must infer usage from the name and sibling context, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_evalExecutar JSB

Roda JavaScript na página e devolve o resultado serializado.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
expressionYesExpressão JS avaliada no contexto da página.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, and the description does not disclose potential side effects, execution context, error handling, or serialization format details, leaving important behavior unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no redundant content, making it concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description conveys the core action and result, but lacks details such as how the result is serialized, return type, or behavior on errors, which are relevant for a full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The JSON schema describes both parameters and covers 100% of them; the description adds no additional parameter semantics, so baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool runs JavaScript on the page and returns the serialized result, which distinguishes it from sibling tools like reading the page or clicking elements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as arc_console, arc_read_page, or other browser automation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_navigateNavegarA

Abre uma URL no Arc. Por padrão reusa a aba ativa; passe newTab para abrir outra.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
newTabNoAbrir em aba nova em vez de reusar a ativa.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the default tab-reuse behavior and the newTab override. It does not mention tabId targeting or the 'never a user's tab' constraint, though that is present in the schema. Overall, it covers the primary behavior but leaves some behavioral nuances undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that front-loads the core action and then provides the key behavioral option. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple navigation tool with no output schema and minimal parameters, the description is adequate. However, it does not mention potential return values, error conditions, or the significance of tabId (which the schema covers). Given the simplicity, the description could be more complete, but it's not critically deficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (url lacks a description, tabId and newTab have descriptions). The description adds meaning for newTab ('passe newTab para abrir outra') and clarifies the default behavior, which relates to tabId. The url parameter is self-evident, so the description adds modest value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Abre uma URL no Arc') and the resource (URL, Arc browser). It's distinct from sibling tools like arc_click or arc_type, which are interaction tools, making it unambiguous as the navigation tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides usage context: default reuse of active tab and the newTab option to override. However, it doesn't explicitly mention when to prefer this over other tools or any exclusions (e.g., when not to use it).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_networkRedeC

Respostas HTTP capturadas na aba desde que ela abriu.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
patternNoFiltro regex sobre a URL.
onlyErrorsNoSó respostas com status >= 400.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the data returned (HTTP responses) but does not disclose details like response format, whether bodies or headers are included, or if it is a read-only operation. The description is minimal and lacks behavioral nuance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core purpose. It is appropriately sized with no filler, though it could be more informative without sacrificing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, so the description should explain the return structure. It only says 'HTTP responses' without specifying fields, ordering, or pagination. It also does not clarify the tab scope behavior mentioned in the schema, relying on the schema for that detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter having its own description. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate. The description does not elaborate on how parameters interact or provide examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states that the tool returns HTTP responses captured in the tab since it opened. This clearly differentiates it from sibling tools like arc_click or arc_navigate, which are action-oriented. However, it lacks an explicit verb like 'list' or 'retrieve', making it slightly less direct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention any conditions such as inspecting network traffic or debugging, nor does it reference sibling tools. The description is purely descriptive without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_pressTeclaC

Aperta uma tecla na página (Enter, Escape, ArrowDown, Control+A…).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. Pressing keys can be a destructive act (Enter submits forms, Control+A selects, arrow keys navigate) and may trigger page navigation or state changes, but the description says nothing about side effects, error conditions, or the return value. For an un-annotated interaction tool, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with useful examples and zero filler. The examples are compact and immediately informative. Slightly more structure (e.g., separating the key-format hint) would help, but the current form is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must cover the mutation/safety profile and return behavior, but it covers neither. Pressing a key is potentially destructive and may produce side effects, and an agent has no idea what the tool returns. For a two-parameter tool with one required parameter, the description under-specifies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% — the key parameter has no schema description, while tabId does. The description's key examples (Enter, Escape, ArrowDown, Control+A) partially compensate by hinting at acceptable key formats and modifier syntax. However, tabId is never mentioned in the description, so the compensation is only partial against the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource action: 'Aperta uma tecla na página' (presses a key on the page). The concrete examples (Enter, Escape, ArrowDown, Control+A) make the intent unmistakable. It doesn't explicitly contrast with arc_type, but the distinction between pressing a key and typing text is reasonably inferable from the examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like arc_type (typing text) or arc_click (clicking elements). The description implies keyboard interaction but never states a selection rule, prerequisites, or exclusions. An agent must guess whether arc_press or arc_type is appropriate for a given input task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_read_pageLer páginaA

Devolve o texto visível da página e a lista de elementos interativos, cada um com um ref estável. Use os refs em arc_click e arc_type em vez de inventar seletores CSS.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
maxCharsNoCorte do texto (padrão 8000).

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read-only operation through the verb 'Devolve' (returns) and the tool name, but does not explicitly state that no modifications occur. Given the absence of annotations, a slight clarity gain could be made, but it is still largely transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, conveying the core functionality and usage guidance in two sentences without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It clearly describes the primary output (text and interactive elements with refs) and how to use it, but does not detail the exact structure of the returned data (e.g., JSON format). Still, it is sufficient for the agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters have descriptive comments: tabId explains it targets a specific tab and defaults to the active tab (never the user's), and maxChars explains it truncates text with a default of 8000. This fully clarifies the parameter meanings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns visible page text and interactive elements with stable refs, and explicitly links to sibling tools arc_click and arc_type, distinguishing its purpose from those tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance to use the returned refs in arc_click and arc_type instead of inventing CSS selectors, which tells the agent exactly when and how to use this tool compared to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_screenshotScreenshotA

Captura a aba como PNG. Use para ver o estado visual da página.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
fullPageNoPágina inteira em vez da viewport.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining behavior. It accurately describes the capture action and PNG output, but does not mention whether the tool has side effects, permissions, or limitations beyond the visible state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two short sentences that state the action and the intended use. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple capture tool, the description and schema together are mostly complete. It specifies the output format (PNG) and the purpose, though it could mention more about the returned image details or whether any page interaction occurs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (tabId and fullPage), so the tool description adds no additional parameter-level meaning. Since schema coverage is 100%, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool captures the active tab as a PNG and is used to see the page's visual state. This distinguishes it from sibling tools like arc_read_page, which are more text/DOM-focused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use the tool: 'Use para ver o estado visual da página.' It does not explicitly contrast with alternatives, but the purpose is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_tabsListar abasA

Lista as abas do Arc visíveis, com id, título e URL. owned: true são as abas que este servidor abriu; owned: false são abas do próprio usuário — só atue nelas se ele pedir, passando o tabId explicitamente.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the ownership distinction (server-opened vs. user tabs) and implies a read-only behavior. With no annotations, this transparency is valuable for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using a single sentence and a short clarifying note. There is no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter listing tool, the description fully covers functionality and the important ownership nuance. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is tautologically high. The description adds no parameter-specific details because none exist, matching the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists visible Arc tabs with id, title, and URL, and further distinguishes owned vs. user tabs. This is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a practical usage guideline: acting on user-owned tabs only when explicitly asked and passing tabId. Although it does not name alternative tools, the condition for appropriate use is explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arc_typeDigitarB

Preenche um campo de texto. Com submit, aperta Enter no fim.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoRef vindo de arc_read_page (preferível).
textNoTexto visível do elemento.
tabIdNoAba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário).
valueYes
submitNo
selectorNoSeletor CSS.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the notable behavior of pressing Enter when submit is true, but does not mention other side effects like whether existing field content is replaced or appended, or whether the field is focused first. With no annotations available, the description carries the full burden and only partially addresses 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short, clear sentences that front-load the primary action and follow with the conditional submit behavior. There is no redundancy, filler, or unnecessary detail, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too minimal to be complete. It does not explain the distinction between 'value' and 'text', how 'ref' or 'selector' are used to identify the element, or the behavior when multiple matching elements exist. An agent would likely need additional information to use the tool correctly in diverse scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description gives some context that 'value' is the text to fill and 'submit' triggers Enter, but it does not explicitly map these to the schema parameters. The schema already provides descriptions for ref, text, tabId, and selector, so the added value is limited to hinting at the meaning of the two undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Preenche' = fills) and resource ('campo de texto' = text field), and additionally describes the submit behavior of pressing Enter. This is a distinct and unambiguous action that sets it apart from other input-related tools like arc_press.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as arc_click or arc_press. The description does not mention conditions, scenarios, or comparisons that would help an agent decide between this and similar tools.

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.

  1. 11 tool updatesv0.1.0
    • First observedarc_click
    • First observedarc_close_tab
    • First observedarc_console
    • First observedarc_eval
    • First observedarc_navigate
    • First observedarc_network
    • First observedarc_press
    • First observedarc_read_page
    • First observedarc_screenshot
    • First observedarc_tabs
    • First observedarc_type

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clear, distinct purpose with no overlap: click, type, press, eval, console, network, read_page, tabs, navigate, close_tab, and screenshot cover separate actions. The names unambiguously indicate their functions.

Naming Consistency5/5

All tools follow a uniform prefix 'arc_' with lowercase and underscores. While some are verbs (click, type, navigate) and some are nouns (console, network, tabs), the consistent format and clear action-oriented names make the set highly coherent.

Tool Count5/5

With 11 tools, the set is well-scoped for browser automation. Each tool serves a necessary function, and the count falls comfortably within the ideal 3-15 range without feeling bloated or sparse.

Completeness5/5

The toolkit covers the core browser automation lifecycle: navigation, interaction (click, type, press), reading content (read_page, screenshot), debugging (console, network, eval), and tab management (tabs, close_tab). Missing features like refresh/back are minor and do not detract from overall completeness.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Chrome extension + MCP bridge that gives Claude control over your real browser via CDP, enabling navigation, clicking, typing, scrolling, screenshots, and JS execution with a visible cursor and tab-bring-to-front.
    1
    MIT