Skip to main content
Glama

scout_request

Call the app's API as the current session to confirm that hidden or disabled controls are truly refused by the server, returning status, timing, and key headers.

Instructions

Call the app's own API as this session, with the UI bypassed — the check that turns a hidden or disabled control into a proven refusal. A button that is not shown proves nothing; the same action refused by the server does. The fetch runs IN the page, so it carries the session's cookies and replays the Authorization header the app itself last sent, and it passes through the same interception the write policy is enforced on: in safe-write a mutation on a record this session did not create is refused here exactly as it would be for a click, and that refusal is the engine's safety net, not a finding. Returns the status line, the timing, the headers that decide whether two responses are truly identical (content-type, location, www-authenticate, retry-after, cache-control), and the body. Unlike a shell call, every request is recorded in the run's trail and its signature is what a finding should quote. Paths are fenced to the attached origin: use another session to reach another host.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNoRequest body, sent as application/json unless a content-type header is given
pathYesPath on the attached origin, e.g. /api/things/12, or a full URL on that same origin
taskNoWhat you are DOING right now, in a few words: the action, not the acceptance criteria. "Filtering the documents register by status", "Filling the deviation form with invalid dates", "Signing in as QA_Team" — NOT "§2.4 filtering narrows the set and the filter is reflected in the URL", which is what you are CHECKING, not what you are doing. Naming the item you are on is fine ("§2.4: filtering the documents register"); keep the rest to what a colleague would see over your shoulder. It stays set until you pass a different one, so a batch costs a few words, not one per call. Required on the tools that act unless a journey or an earlier call already set one.
methodNoDefault GET
headersNoExtra headers. One given here wins over the app's own, which is how a session tests a different or absent credential.
sessionNoTarget this session directly instead of the active one — pass it explicitly when dispatching to MULTIPLE sessions in one turn (e.g. two scout_click calls with different `session`), which then run CONCURRENTLY rather than queueing. Omit for single-session sequential use.
objectiveNoOld name for `task` (2.0). Prefer `task`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv3.4.0

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers richly: it discloses in-page execution carrying session cookies and replaying the app's last Authorization header, passage through the write-policy interception layer, the interpretation of safe-write refusals as a safety net rather than a finding, the exact response composition (status line, timing, identity-determining headers, body), run-trail recording, and origin fencing. This goes well beyond what annotations would normally convey.

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 long (~180 words) but densely packed: every sentence earns its place, from the front-loaded purpose through the safety-net clarification, the return-value specification, and the trail-signature guidance. It is structured with the core purpose first and operational caveats following. Slightly verbose, but the tool's complexity — arbitrary methods including DELETE, write-policy interaction, and findings-grade evidence — justifies nearly every clause.

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 high-complexity tool with no annotations and no output schema, the description covers the critical bases: purpose, authentication context, write-policy interception, response shape, run-trail recording, and scope restriction. Minor gaps remain — no mention of rate limits, network-error behavior, or side effects of mutation methods beyond the safe-write note — but an agent has what it needs to invoke this tool correctly and interpret results.

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 the structured fields already document all seven parameters and the baseline is 3. The description adds some contextual enrichment — e.g., "Paths are fenced to the attached origin" clarifies the `path` parameter's bounds, and the Authorization-header replay explains what `headers` overrides — but most of its content concerns tool behavior, not parameter-level semantics. The schema does the heavy lifting.

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 opens with a specific verb and resource — "Call the app's own API as this session, with the UI bypassed" — and immediately establishes its distinct role among the scout_* siblings. It explicitly contrasts its proof value with UI actions: "A button that is not shown proves nothing; the same action refused by the server does," which differentiates it from scout_click and scout_navigate without ambiguity.

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 gives a clear when-to-use rationale (verify server-side refusal when a control is hidden or disabled), contrasts with shell calls ("Unlike a shell call, every request is recorded in the run's trail"), and provides when-not guidance: safe-write refusals are "the engine's safety net, not a finding," and paths are fenced to the attached origin ("use another session to reach another host"). It stops short of explicitly naming sibling alternatives such as scout_click as the preferred path when a control is visible.

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