arc-cdp-mcp
Provides control of the Arc browser, enabling navigation, clicking, form filling, screenshots, page reading, console and network inspection, and tab management via the Chrome DevTools Protocol.
Click on "Deploy 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., "@arc-cdp-mcpNavigate to example.com and take a full-page screenshot"
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.
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.shThe 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 |
| List tabs with id, title, URL and |
| Open a URL (reuse the active tab or open a new one) |
| Close a tab this server opened |
| PNG of the viewport or the full page |
| Visible text plus every interactive element, each with a |
| Click by |
| Fill a field, optionally pressing Enter |
| Send a key |
| Run JS in the page |
| Console output and page errors, regex-filterable |
| HTTP responses, regex-filterable, |
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 areowned: false.The active tab — used when
tabIdis omitted — is always an owned one.Targeting one of your tabs requires passing its
tabIdexplicitly.arc_close_tabrefuses 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.mdLimitations
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.shusesopenandosascript.
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 toolsarc_clickClicarB
Clica num elemento, identificado por ref (de arc_read_page), seletor CSS ou texto visível.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Ref vindo de arc_read_page (preferível). | |
| text | No | Texto visível do elemento. | |
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| selector | No | Seletor CSS. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| pattern | No | Filtro regex sobre o texto. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| expression | Yes | Expressão JS avaliada no contexto da página. |
TDQS
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.
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.
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.
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.
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.
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_networkRedeC
Respostas HTTP capturadas na aba desde que ela abriu.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| pattern | No | Filtro regex sobre a URL. | |
| onlyErrors | No | Só respostas com status >= 400. |
TDQS
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.
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.
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.
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.
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.
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…).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| maxChars | No | Corte do texto (padrão 8000). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| fullPage | No | Página inteira em vez da viewport. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Ref vindo de arc_read_page (preferível). | |
| text | No | Texto visível do elemento. | |
| tabId | No | Aba alvo. Omita para usar a aba própria ativa (nunca uma aba do usuário). | |
| value | Yes | ||
| submit | No | ||
| selector | No | Seletor CSS. |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v0.1.0- First observed
arc_click - First observed
arc_close_tab - First observed
arc_console - First observed
arc_eval - First observed
arc_navigate - First observed
arc_network - First observed
arc_press - First observed
arc_read_page - First observed
arc_screenshot - First observed
arc_tabs - First observed
arc_type
TDQS
Scored across 11 tools
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.
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.
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.
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
Related MCP Connectors
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Use your own Mac from ChatGPT, Claude or Codex: files, commands, documents, and a browser.
- TabfleetOAuthcom.tabfleet
Launch, inspect, control, and share isolated cloud browsers for your agents.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.-
- FlicenseNot gradedqualityDmaintenanceEnables browser automation (navigate, screenshot, click, type, etc.) for Claude Code via MCP protocol, with a Chrome extension for configuration.2-
- AlicenseNot gradedqualityDmaintenanceEnables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.1MIT
- AlicenseNot gradedqualityBmaintenanceChrome 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.1MIT