Skip to main content
Glama

Batch-Inspect AWS Infrastructure

awsinspect_batch
Read-only

BATCH INSPECTION: run up to 32 AWS inspect probes in one call. ⚠️ PREREQUISITE: Same as awsinspect — deploy attempt required. Check convostatus for hasDeployAttempt=true before calling.

Use this when you need to check more than ~3 resources. The backend fetches Oracle credentials ONCE per batch and fans out probes against a single AWS config — for a 12-resource health check this is ~5–8× faster and 12× fewer Oracle round-trips than calling awsinspect 12 times.

BUDGETS:

  • Up to 32 sub-probes per call (subs array length).

  • 30s per-sub timeout; 60s total batch wall-clock.

  • Concurrency cap 8 — sub-probes run in parallel but never saturate AWS.

  • 512 KB response cap: subs past the cap keep their envelope (index/service/action/ok) but have result replaced with truncated=true.

PARTIAL FAILURE IS EXPECTED. The response is an ordered results array; each entry has {index, service, action, ok, result, error}. Inspect each result — do NOT abort on the first error. A credential fetch failure leaves cred-less probes (list-actions, list-metrics) succeeding anyway.

REQUIRES: session_id from convoopen response (format: sess_v2_...). Supported services: account, acm, alb, apigateway, apprunner, backup, bedrock, cloudfront, cloudwatchlogs, cognito, cost-explorer, dynamodb, ebs, ec2, ecs, eks, elasticache, kms, lambda, msk, opensearch, rds, route53, s3, sagemaker, secretsmanager, sqs, vpc, waf For a specific service's actions, use awsinspect (singular) with action="list-actions" — batch is not the place for discovery. Batch responses are always summarized (no detail/raw per-sub); use singular awsinspect when you need full metadata or raw API output for one resource.

EXAMPLES:

  • awsinspect_batch(session_id=..., subs=[ {"service":"ec2","action":"describe-instances"}, {"service":"rds","action":"describe-db-instances"}, {"service":"vpc","action":"describe-vpcs"}, {"service":"s3","action":"list-buckets"}])

  • awsinspect_batch(session_id=..., subs=[ {"service":"ec2","action":"get-metrics","filters":"{"hours":6}"}, {"service":"rds","action":"get-metrics","filters":"{"hours":6}"}])

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": {
      "session_id": "<session_id>",
      "subs": "<subs>"
    },
    "name": "awsinspect_batch"
  }
}

Input Schema

NameRequiredDescriptionDefault
subsYesUp to 32 sub-probes, each with {service, action, filters?, detail?, raw?}. The backend fetches credentials once per batch and fans out probes in parallel (concurrency 8, 30s per-sub timeout, 60s total wall clock). Partial failure is expected — inspect each result.ok independently.
session_idYesSession ID from convoopen — pass back EXACTLY as returned, including the ?token=... suffix (format: sess_v2_*?token=*). The suffix is part of the session credential; never strip it when summarizing. The session must have an AWS deploy attempt before inspect probes will succeed.

Output Schema

NameRequiredDescriptionDefault
hintsNoGuidance for the calling agent: what to do next and which tools relate to this result.
resultsNoOne entry per sub-request, in request order.
truncated_atNoIndex of the first sub-request whose result was dropped for size.
truncated_cap_bytesNoResponse size cap, in bytes, that caused the truncation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "hints": {
      +      "description": "Guidance for the calling agent: what to do next and which tools relate to this result.",
      +      "properties": {
      +        "next_actions": {
      +          "description": "Suggested next steps, in order, often as ready-to-run tool calls.",
      +          "items": {
      +            "description": "One suggested next step.",
      +            "type": "string"
      +          },
      +          "type": [
      +            "null",
      +            "array"
      +          ]
      +        },
      +        "related_tools": {
      +          "description": "Names of tools that are useful after this result.",
      +          "items": {
      +            "description": "A tool name.",
      +            "type": "string"
      +          },
      +          "type": [
      +            "null",
      +            "array"
      +          ]
      +        }
      +      },
      +      "type": [
      +        "null",
      +        "object"
      +      ]
      +    },
      +    "results": {
      +      "description": "One entry per sub-request, in request order.",
      +      "items": {
      +        "description": "Result of one AWS sub-request.",
      +        "properties": {
      +          "action": {
      +            "description": "Action the sub-request ran.",
      +            "type": "string"
      +          },
      +          "duration_ms": {
      +            "description": "Time the sub-request took, in milliseconds.",
      +            "type": "integer"
      +          },
      +          "error": {
      +            "description": "Error message when ok is false.",
      +            "type": "string"
      +          },
      +          "index": {
      +            "description": "Position of the sub-request in the request.",
      +            "type": "integer"
      +          },
      +          "ok": {
      +            "description": "True when the sub-request succeeded.",
      +            "type": "boolean"
      +          },
      +          "result": {
      +            "description": "The sub-request result, with the same rules as the single inspect tool."
      +          },
      +          "service": {
      +            "description": "Service the sub-request inspected.",
      +            "type": "string"
      +          },
      +          "summarized": {
      +            "description": "True when result is a compact summary.",
      +            "type": "boolean"
      +          },
      +          "truncated": {
      +            "description": "True when result was dropped to keep the response under the size cap.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": [
      +          "null",
      +          "object"
      +        ]
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "truncated_at": {
      +      "description": "Index of the first sub-request whose result was dropped for size.",
      +      "type": "integer"
      +    },
      +    "truncated_cap_bytes": {
      +      "description": "Response size cap, in bytes, that caused the truncation.",
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / subs / items / properties / service / enum
      Previous value: -[
      -  "account",
      -  "alb",
      -  "apigateway",
      -  "backup",
      -  "bedrock",
      -  "cloudfront",
      -  "cloudwatchlogs",
      -  "cognito",
      -  "cost-explorer",
      -  "dynamodb",
      -  "ebs",
      -  "ec2",
      -  "ecs",
      -  "eks",
      -  "elasticache",
      -  "kms",
      -  "lambda",
      -  "msk",
      -  "opensearch",
      -  "rds",
      -  "s3",
      -  "secretsmanager",
      -  "sqs",
      -  "vpc",
      -  "waf"
      -]New value: +[
      +  "account",
      +  "acm",
      +  "alb",
      +  "apigateway",
      +  "apprunner",
      +  "backup",
      +  "bedrock",
      +  "cloudfront",
      +  "cloudwatchlogs",
      +  "cognito",
      +  "cost-explorer",
      +  "dynamodb",
      +  "ebs",
      +  "ec2",
      +  "ecs",
      +  "eks",
      +  "elasticache",
      +  "kms",
      +  "lambda",
      +  "msk",
      +  "opensearch",
      +  "rds",
      +  "route53",
      +  "s3",
      +  "sagemaker",
      +  "secretsmanager",
      +  "sqs",
      +  "vpc",
      +  "waf"
      +]
  3. Changed9 schema fields changed
    • addedInput schema / properties / session_id / description
      Added value: +"Session ID from convoopen — pass back EXACTLY as returned, including the ?token=... suffix (format: sess_v2_*?token=*). The suffix is part of the session credential; never strip it when summarizing. The session must have an AWS deploy attempt before inspect probes will succeed."
    • addedInput schema / properties / session_id / pattern
      Added value: +"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"
    • addedInput schema / properties / subs / description
      Added value: +"Up to 32 sub-probes, each with {service, action, filters?, detail?, raw?}. The backend fetches credentials once per batch and fans out probes in parallel (concurrency 8, 30s per-sub timeout, 60s total wall clock). Partial failure is expected — inspect each result.ok independently."
    • addedInput schema / properties / subs / items / properties / action / description
      Added value: +"Operation on the service (e.g. 'describe-instances', 'list-buckets', 'list-actions' for discovery, 'list-metrics' / 'get-metrics' for time-series)."
    • addedInput schema / properties / subs / items / properties / filters / description
      Added value: +"Optional JSON-encoded filter object passed through to the underlying API. Examples: '{\"hours\":6}' for metric windows, '{\"days\":7}' for cost queries."
    • addedInput schema / properties / subs / items / properties / service / description
      Added value: +"Cloud service to query (e.g. 'ec2', 'rds', 's3' for AWS; 'compute', 'storage', 'cloudsql' for GCP). Use the singular awsinspect/gcpinspect tool with action='list-actions' to discover supported services."
    • addedInput schema / properties / subs / items / properties / service / enum
      Added value: +[
      +  "account",
      +  "alb",
      +  "apigateway",
      +  "backup",
      +  "bedrock",
      +  "cloudfront",
      +  "cloudwatchlogs",
      +  "cognito",
      +  "cost-explorer",
      +  "dynamodb",
      +  "ebs",
      +  "ec2",
      +  "ecs",
      +  "eks",
      +  "elasticache",
      +  "kms",
      +  "lambda",
      +  "msk",
      +  "opensearch",
      +  "rds",
      +  "s3",
      +  "secretsmanager",
      +  "sqs",
      +  "vpc",
      +  "waf"
      +]
    • addedInput schema / properties / subs / maxItems
      Added value: +32
    • addedInput schema / properties / subs / minItems
      Added value: +1
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations cover only the safety profile (readOnly/openWorld/not idempotent), while the description adds substantial behavior: per-sub and total budgets, concurrency cap 8, 512 KB cap with truncated=true envelopes, that partial failure is expected, and that a credential fetch failure still leaves cred-less probes succeeding. This is exactly the extra context the structured fields cannot carry.

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?

Front-loaded purpose, then prerequisite, then budgets, partial-failure guidance, requirements, and examples. Given the genuine complexity (32 sub-probes, budgets, concurrency, truncation), the length is justified and every section earns its place; labeled blocks make it scannable rather than rambling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations carry safety, yet the description still supplies prerequisites, budget/truncation semantics, partial-failure handling, response entry shape, credential-fetch caveat, and examples. Nothing an agent needs to call a batch tool correctly is missing.

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% and documents subs/service/action/filters, so the baseline is 3; the description adds value with worked example calls showing the subs array shape and the JSON-encoded filters pattern. It stops short of explaining per-sub timeout interaction but goes beyond the schema with concrete examples.

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?

States a specific verb and resource ('BATCH INSPECTION: run up to 32 AWS inspect probes in one call') and immediately distinguishes itself from the singular sibling: batch for >3 resources, awsinspect for discovery (list-actions) or full metadata/raw output on one resource. An agent can route correctly without opening either 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?

Explicit when-to-use ('when you need to check more than ~3 resources'), stated prerequisite (deploy attempt / hasDeployAttempt=true), and clear exclusions with the alternative named ('batch is not the place for discovery'; use singular awsinspect for full metadata/raw). Nothing is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources