Skip to main content
Glama
F6 ASM MCP Server

F6 ASM MCP Server

Official
by F6-Security

asm_request

Read-onlyIdempotent

Retrieve read-only Attack Surface Management API data from permitted endpoints by specifying path, method, and params; mutating requests are refused before execution.

Instructions

Read-only endpoints without a tool of their own: reports (reports/{company_id}, reports/{company_id}/last, reports/{report_id}/report), company card and perimeter settings (companies/{company_id}, assets/{company_id}), logs (companies/logs, users/logs), clients, partners, POST dashboard/scores and POST issues/leaks. Anything else — every endpoint that creates, updates, removes or changes status — is refused before a request is made. asm_describe section=requests lists each route with its params.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "path": "<path>"
    },
    "name": "asm_request"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathYesPath under /api/v2 without a leading slash, e.g. "reports/<company_id>/last".
methodNoGET for most routes; POST for dashboard/scores and issues/leaks.
paramsNoQuery parameters (GET) or JSON body (POST), only the keys the route accepts.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint true and destructiveHint false, but the description adds the enforcement model: a server-side allowlist and pre-flight refusal of mutating routes. It also proactively explains that POST is permitted for dashboard/scores and issues/leaks, which preempts confusion over a read-only tool accepting POST. It does not cover auth requirements, rate limiting, or error payload shape, which keeps it short of a 5.

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?

One dense paragraph, front-loaded with the allowed route families before the refusal rule and the discovery pointer. The route enumeration is necessary content, though the run-on list of paths makes it slightly harder to scan than a short bulleted allowlist would be.

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 an open-ended proxy to many routes, the definition supplies the three things an agent needs: the allowlist boundary, the refusal behavior for everything outside it, and where to find per-route params. Remaining gaps — response shape, pagination, and error semantics — are unsupported by any output schema and are less critical for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so path/method/params are already documented with examples and the GET/POST enum, making baseline 3 appropriate. The description adds real value by pointing to asm_describe section=requests as the authoritative source for which params each route accepts, which the schema's open additionalProperties object cannot convey.

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 names the operation concretely: a pass-through for read-only endpoints that have no dedicated tool, and it enumerates the exact route families (reports/*, companies/*, assets/*, logs, clients, partners, plus the two POSTs). It also separates itself from siblings by scoping to endpoints 'without a tool of their own', so an agent knows when to reach for asm_get_issues versus this tool.

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 gives both sides of the routing decision: use this for the listed read-only routes, and 'anything else — every endpoint that creates, updates, removes or changes status — is refused before a request is made.' It also routes the agent to asm_describe section=requests when it needs per-route parameter details, so the fallback path is explicit rather than inferred.

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