Skip to main content
Glama

fileforge_qa_testing

Run repeatable pass/fail QA checks for smoke tests, page boot, routes, console, network, forms, and element changes to catch frontend issues before release.

Instructions

Run repeatable pass/fail checks: smoke tests, page boot, routes, console, network, forms and element watches. Use fileforge_page_interaction for individual steps and fileforge_coding_action while fixing code. URL checks load pages in your session. check_console_clean and check_network_clean read a running DevTools session and return SESSION_NOT_STARTED without one. Needs the extension.

Input Schema

NameRequiredDescriptionDefault
urlNoPage URL to load.
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. run_frontend_check (url): Load a page, plus any routes, and list issues on each. Fails on high or critical issues. Stores the result by default. run_smoke_test (url): Load one page without a screenshot and list issues. Fails on high or critical issues. Stores the result by default. check_page_boot (url): Load one page and list issues, without storing anything. Fails on high or critical issues. check_routes (baseUrl, routes): Load each route against baseUrl and list issues per route. Fails on high or critical issues. check_console_clean: Pass only if the running DevTools session on a tab has no console issues. check_network_clean: Pass only if the running DevTools session on a tab has no failed requests. check_forms: Report issues in the forms on an open tab. watch_element (selector): Start watching an element for changes and return a watchId. capture_element_change: Read the changes recorded by watch_element, by watchId or selector. Stores the result by default.
routesNoRoute paths to visit, such as "/pricing".
baseUrlNoOrigin that routes are resolved against.
projectNoProject name that groups stored results.default
watchIdNoID returned when the watch started.
selectorNoCSS selector of the target element.
timeoutMsNoTime limit in milliseconds.

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. Changed13 schema fields changedv0.3.0
    • changedInput schema / properties / action / description
      Previous value: -"The QA action to perform."New value: +"What to do. Required parameters are in brackets. run_frontend_check (url): Load a page, plus any routes, and list issues on each. Fails on high or critical issues. Stores the result by default. run_smoke_test (url): Load one page without a screenshot and list issues. Fails on high or critical issues. Stores the result by default. check_page_boot (url): Load one page and list issues, without storing anything. Fails on high or critical issues. check_routes (baseUrl, routes): Load each route against baseUrl and list issues per route. Fails on high or critical issues. check_console_clean: Pass only if the running DevTools session on a tab has no console issues. check_network_clean: Pass only if the running DevTools session on a tab has no failed requests. check_forms: Report issues in the forms on an open tab. watch_element (selector): Start watching an element for changes and return a watchId. capture_element_change: Read the changes recorded by watch_element, by watchId or selector. Stores the result by default."
    • addedInput schema / properties / baseUrl / description
      Added value: +"Origin that routes are resolved against."
    • removedInput schema / properties / checks
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / project / description
      Added value: +"Project name that groups stored results."
    • addedInput schema / properties / routes / description
      Added value: +"Route paths to visit, such as \"/pricing\"."
    • addedInput schema / properties / selector / description
      Added value: +"CSS selector of the target element."
    • 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."
    • addedInput schema / properties / timeoutMs / description
      Added value: +"Time limit in milliseconds."
    • addedInput schema / properties / url / description
      Added value: +"Page URL to load."
    • removedInput schema / properties / viewports
      Removed value: -{
      -  "items": {
      -    "enum": [
      -      "mobile",
      -      "tablet",
      -      "desktop"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / watchId / description
      Added value: +"ID returned when the watch started."
    • 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

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description justifies that by noting that URL checks load pages in the caller's session. It further discloses a hard prerequisite ('Needs the extension') and a specific failure mode (SESSION_NOT_STARTED), which is real behavioral context beyond the annotations. It stops short of describing result storage side effects in detail, but the store parameter in the schema carries that.

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 definition is short and front-loaded: capability first, then alternatives, then session/extension prerequisites. Every sentence carries information, though the check list in sentence one partially duplicates the action enum and could be trimmed.

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 ten-parameter, multi-action tool with an output schema, the description covers routing, prerequisites, and a key error code, so an agent can select and call it correctly. The remaining detail (per-action parameter requirements, storage behavior) is fully specified in the schema, so little is missing.

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%, including a long per-action enumeration with bracketed required parameters, so the schema already does the heavy lifting for all ten parameters. The description adds only the high-level grouping of checks and the session requirement, not per-parameter meaning. Baseline 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 opening sentence gives a specific verb and resource ('Run repeatable pass/fail checks') and enumerates the concrete check families (smoke tests, page boot, routes, console, network, forms, element watches), which maps directly onto the action enum. An agent can distinguish this from fileforge_page_interaction or fileforge_devtools_action without opening any schema.

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 names two alternatives explicitly with the condition that selects each: fileforge_page_interaction 'for individual steps' and fileforge_coding_action 'while fixing code'. It also states the precondition that check_console_clean and check_network_clean require a running DevTools session and return SESSION_NOT_STARTED otherwise, which is exactly the routing information an agent needs.

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