Skip to main content
Glama
konsulto

@konsulto/mcp

Official
by konsulto

konsulto_list_scope

List the scope elements for an audit to confirm which targets are authorized for testing. Defaults to the active audit.

Instructions

List the scope elements for an audit — what's authorized to be tested. Use to confirm targets are in-scope before recording findings against them. Defaults to the active audit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
auditNoAudit ID. Defaults to active audit.

Implementation Reference

  • The 'konsulto_list_scope' tool is defined as an MCP tool using server.tool(). It accepts an optional 'audit' string parameter (zod-validated). The handler resolves the audit ID, calls the API to fetch scopes from /audits/{auditId}/scopes, maps the response to id/name/description/type, and returns the result. Errors are caught and returned via errResult().
    server.tool(
      'konsulto_list_scope',
      'List the scope elements for an audit — what\'s authorized to be tested. ' +
        'Use to confirm targets are in-scope before recording findings against ' +
        'them. Defaults to the active audit.',
      {
        audit: z.string().optional().describe('Audit ID. Defaults to active audit.'),
      },
      async ({ audit }) => {
        try {
          const auditId = state.resolveAuditId(audit);
          const scopes = (await client.get<any>(`/audits/${auditId}/scopes`)) as any;
          const items = Array.isArray(scopes) ? scopes : (scopes?.items ?? scopes?.data ?? []);
          return ok({
            auditId,
            scopes: items.map((s: any) => ({
              id: String(s._id ?? s.id),
              name: s.name,
              description: s.description,
              type: s.type ?? s.scopeType,
            })),
          });
        } catch (err) {
          return errResult(err);
        }
      },
    );
  • Zod schema for the input parameter: 'audit' is an optional string describing the audit ID, defaulting to the active audit.
    {
      audit: z.string().optional().describe('Audit ID. Defaults to active audit.'),
    },
  • src/server.ts:805-831 (registration)
    The tool is registered via server.tool() with the name 'konsulto_list_scope', a description string, the input schema, and the handler function.
    server.tool(
      'konsulto_list_scope',
      'List the scope elements for an audit — what\'s authorized to be tested. ' +
        'Use to confirm targets are in-scope before recording findings against ' +
        'them. Defaults to the active audit.',
      {
        audit: z.string().optional().describe('Audit ID. Defaults to active audit.'),
      },
      async ({ audit }) => {
        try {
          const auditId = state.resolveAuditId(audit);
          const scopes = (await client.get<any>(`/audits/${auditId}/scopes`)) as any;
          const items = Array.isArray(scopes) ? scopes : (scopes?.items ?? scopes?.data ?? []);
          return ok({
            auditId,
            scopes: items.map((s: any) => ({
              id: String(s._id ?? s.id),
              name: s.name,
              description: s.description,
              type: s.type ?? s.scopeType,
            })),
          });
        } catch (err) {
          return errResult(err);
        }
      },
    );
Behavior3/5

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

The description discloses the default behavior ('defaults to the active audit'), which is the key behavioral trait beyond a simple list operation. However, with no annotations provided, it lacks details on idempotency, side effects (none expected), or any rate limits, though the tool is simple enough that this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and immediately followed by use-case and default behavior. Every word serves a purpose with no redundancy or fluff.

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?

Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description covers the essential purpose, usage context, and default behavior. It could mention that scope elements are typically predefined, but the current level is sufficient for confident invocation.

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?

The description adds no additional meaning for the single parameter beyond what is already in the input schema, which fully describes the audit ID and default. Since schema coverage is 100%, the baseline of 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 description clearly states the verb ('List') and resource ('scope elements for an audit') with specific context ('what's authorized to be tested'). It distinguishes this from sibling list tools like konsulto_list_assets or konsulto_list_my_audits, making the tool's purpose unambiguous.

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?

It provides explicit guidance on when to use the tool ('confirm targets are in-scope before recording findings'), but does not mention when not to use it or name alternative tools for similar tasks, such as checking findings via search_findings.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/konsulto/konsulto-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server