Skip to main content
Glama

fileforge_devtools_action

Destructive

Capture and read console, JS errors, network, API, WebSocket, and performance data for a Chrome tab; run guarded JavaScript and replay requests when debugging.

Instructions

Read DevTools data for a tab, from the moment a session starts: console, JS errors, network requests, API responses, WebSockets and performance. Prefer query_devtools with a preset; the get_* actions are older. Attaches the debugger, so Chrome shows its debugging bar. evaluate runs JavaScript in the page and replay_request re-sends a request; both can change data and have guards. Needs the extension.

Input Schema

NameRequiredDescriptionDefault
queryNoModules to return and their options. Takes priority over preset. Modules: session, page, console, jsErrors, network, apiResponses, graphql, performance, webSockets, coverage, storageSummary, sourceMaps, requestChains, apiInsights, harSummary, security, thirdParties, issues, recommendations, summary, privacy.
storeNoSave the result in ~/.fileforge and return a ref.
tabIdNoTab ID, or "active" for the active tab.active
actionYesWhat to do. Required parameters are in brackets. query_devtools: Unified GraphQL-feel DevTools query. Select modules (console, jsErrors, network, apiResponses, graphql, performance, webSockets, coverage, storageSummary, sourceMaps, requestChains, apiInsights, harSummary, security, thirdParties, issues, recommendations, summary) and presets in one call. start_session: Start an instrumented DevTools capture session for a tab. stop_session: Stop the DevTools capture session. clear_session: Clear captured DevTools session data without detaching. session (operation): Unified session lifecycle action: operation = start | stop | clear | status. get_console: Read recent console messages. Legacy action — prefer query_devtools with console module. get_js_errors: Get JavaScript errors. Legacy action — prefer query_devtools with jsErrors module. get_network: Inspect network requests. Legacy action — prefer query_devtools with network module. get_api_responses: Extract API response bodies. Legacy action — prefer query_devtools with apiResponses module. get_performance: Get performance timing metrics. Legacy action — prefer query_devtools with performance module. get_websockets: Inspect WebSocket frames. Legacy action — prefer query_devtools with webSockets module. evaluate (expression): Run JS in page context via DevTools. Guarded: dryRun supported, dangerous patterns blocked unless allowDangerous=true. replay_request (requestId): Replay a captured network request. Guarded: dryRun supported, non-idempotent methods and risky endpoints blocked unless allowUnsafeMethods=true. export_har: Export the captured session as a HAR archive on disk.
dryRunNoReport what would happen without doing it.
filterNoFilter by status, type or URL.
levelsNoConsole levels to include.
presetNoNamed set of query modules.
filenameNoOutput filename.
operationNoSession operation to perform.
overridesNoRequest fields to change when replaying, such as method.
requestIdNoID of a captured network request.
expressionNoJavaScript to run in the page.
captureForMsNoHow long to capture, in milliseconds.
includeBodiesNoInclude response bodies.
allowDangerousNoAllow expressions the safety check blocks. Use with care.
autoStartSessionNoStart a capture session if none is running.
stopAfterCaptureNoStop the session after capturing.
allowUnsafeMethodsNoAllow replaying non-idempotent requests. Use with care.

Output Schema

NameRequiredDescriptionDefault
okYesFalse if the action failed or a check did not pass.
refNoStored result ID, for fileforge_result_action.
dataNoThe result. Its shape depends on the action.
metaNoTool, action and context.
errorNoFailure code and message.
warningsNoNotes about a call that still ran.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changedv0.3.0
    • changedInput schema / properties / action / description
      Previous value: -"The action to perform. Available actions: query_devtools: Unified GraphQL-feel DevTools query. Select modules (console, jsErrors, network, apiResponses, graphql, performance, webSockets, coverage, storageSummary, sourceMaps, requestChains, apiInsights, harSummary, security, thirdParties, issues, recommendations, summary) and presets in one call. start_session: Start an instrumented DevTools capture session for a tab. stop_session: Stop the DevTools capture session. clear_session: Clear captured DevTools session data without detaching. session: Unified session lifecycle action: operation = start | stop | clear | status. get_console: Read recent console messages. Legacy action — prefer query_devtools with console module. get_js_errors: Get JavaScript errors. Legacy action — prefer query_devtools with jsErrors module. get_network: Inspect network requests. Legacy action — prefer query_devtools with network module. get_api_responses: Extract API response bodies. Legacy action — prefer query_devtools with apiResponses module. get_performance: Get performance timing metrics. Legacy action — prefer query_devtools with performance module. get_websockets: Inspect WebSocket frames. Legacy action — prefer query_devtools with webSockets module. evaluate: Run JS in page context via DevTools. Guarded: dryRun supported, dangerous patterns blocked unless allowDangerous=true. replay_request: Replay a captured network request. Guarded: dryRun supported, non-idempotent methods and risky endpoints blocked unless allowUnsafeMethods=true. export_har: Export the captured session as a HAR archive on disk."New value: +"What to do. Required parameters are in brackets. query_devtools: Unified GraphQL-feel DevTools query. Select modules (console, jsErrors, network, apiResponses, graphql, performance, webSockets, coverage, storageSummary, sourceMaps, requestChains, apiInsights, harSummary, security, thirdParties, issues, recommendations, summary) and presets in one call. start_session: Start an instrumented DevTools capture session for a tab. stop_session: Stop the DevTools capture session. clear_session: Clear captured DevTools session data without detaching. session (operation): Unified session lifecycle action: operation = start | stop | clear | status. get_console: Read recent console messages. Legacy action — prefer query_devtools with console module. get_js_errors: Get JavaScript errors. Legacy action — prefer query_devtools with jsErrors module. get_network: Inspect network requests. Legacy action — prefer query_devtools with network module. get_api_responses: Extract API response bodies. Legacy action — prefer query_devtools with apiResponses module. get_performance: Get performance timing metrics. Legacy action — prefer query_devtools with performance module. get_websockets: Inspect WebSocket frames. Legacy action — prefer query_devtools with webSockets module. evaluate (expression): Run JS in page context via DevTools. Guarded: dryRun supported, dangerous patterns blocked unless allowDangerous=true. replay_request (requestId): Replay a captured network request. Guarded: dryRun supported, non-idempotent methods and risky endpoints blocked unless allowUnsafeMethods=true. export_har: Export the captured session as a HAR archive on disk."
    • addedInput schema / properties / allowDangerous / description
      Added value: +"Allow expressions the safety check blocks. Use with care."
    • addedInput schema / properties / allowUnsafeMethods / description
      Added value: +"Allow replaying non-idempotent requests. Use with care."
    • addedInput schema / properties / autoStartSession / description
      Added value: +"Start a capture session if none is running."
    • addedInput schema / properties / captureForMs / description
      Added value: +"How long to capture, in milliseconds."
    • addedInput schema / properties / dryRun / description
      Added value: +"Report what would happen without doing it."
    • addedInput schema / properties / expression / description
      Added value: +"JavaScript to run in the page."
    • addedInput schema / properties / filename / description
      Added value: +"Output filename."
    • addedInput schema / properties / filter / description
      Added value: +"Filter by status, type or URL."
    • addedInput schema / properties / includeBodies / description
      Added value: +"Include response bodies."
    • addedInput schema / properties / levels / description
      Added value: +"Console levels to include."
    • addedInput schema / properties / operation / description
      Added value: +"Session operation to perform."
    • addedInput schema / properties / overrides / description
      Added value: +"Request fields to change when replaying, such as method."
    • addedInput schema / properties / preset / description
      Added value: +"Named set of query modules."
    • addedInput schema / properties / query / description
      Added value: +"Modules to return and their options. Takes priority over preset. Modules: session, page, console, jsErrors, network, apiResponses, graphql, performance, webSockets, coverage, storageSummary, sourceMaps, requestChains, apiInsights, harSummary, security, thirdParties, issues, recommendations, summary, privacy."
    • addedInput schema / properties / requestId / description
      Added value: +"ID of a captured network request."
    • addedInput schema / properties / stopAfterCapture / description
      Added value: +"Stop the session after capturing."
    • addedInput schema / properties / store / description
      Added value: +"Save the result in ~/.fileforge and return a ref."
    • addedInput schema / properties / tabId / description
      Added value: +"Tab ID, or \"active\" for the active tab."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "query_* actions return their modules as extra top-level fields.",
      +  "properties": {
      +    "data": {
      +      "description": "The result. Its shape depends on the action."
      +    },
      +    "error": {
      +      "description": "Failure code and message."
      +    },
      +    "meta": {
      +      "description": "Tool, action and context."
      +    },
      +    "ok": {
      +      "description": "False if the action failed or a check did not pass.",
      +      "type": "boolean"
      +    },
      +    "ref": {
      +      "description": "Stored result ID, for fileforge_result_action."
      +    },
      +    "warnings": {
      +      "description": "Notes about a call that still ran."
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  2. First observedv0.2.1

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is largely given. The description still earns credit for side-effect context the annotations cannot express: the debugger is attached so Chrome shows its debugging bar, capture only covers data from session start, and evaluate/replay mutate state with guards. It does not say what clear_session destroys or how stored refs in ~/.fileforge behave.

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?

Three short sentences, front-loaded with purpose before the preference hint and the side-effect warning. The most consequential fact for an agent deciding whether to call it (attaching the debugger and mutating actions) is placed after the reading scope, but nothing is padded or redundant.

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 19-parameter multi-action dispatcher with an output schema and full schema coverage, the description covers purpose, the preferred action, mutation risk and the extension prerequisite. Gaps are minor: the 'session (operation)' status path and the interplay of autoStartSession/stopAfterCapture are left entirely to the schema, which is acceptable since the output schema handles returns.

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% and the action enum already documents every action plus its bracketed required parameter, so the baseline is 3. The description adds only modest meaning beyond that, notably the query-vs-preset preference and that the guarded actions can change data, with no explanation of session lifecycle operations or the store/ref return mechanism.

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 first sentence names a specific verb and resource ('Read DevTools data for a tab') and enumerates the captured domains (console, JS errors, network, API responses, WebSockets, performance), so the tool's scope is immediately legible. It also distinguishes the preferred entry point ('query_devtools with a preset') from the legacy 'get_*' actions, though it says nothing about how this differs from sibling families like fileforge_api_action or fileforge_perf_action.

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?

Explicit routing guidance is given: prefer query_devtools with a preset, the get_* actions are older, and evaluate/replay_request are flagged as the mutating paths. It also states a prerequisite ('Needs the extension') that an agent must satisfy before calling. It stops short of saying when to choose this over the closely-named sibling tools such as fileforge_api_action.

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