Skip to main content
Glama
aws-samples

AWS Health MCP Server

Official
by aws-samples

AWS Health MCP Server

Disclaimer: This AWS content is provided subject to the terms of the AWS Customer Agreement available at https://aws.amazon.com/agreement or other written agreement between the Customer and Amazon Web Services. This is sample code for demonstration purposes only. It is not intended for production use. You should work with your security and legal teams to meet your organizational security, regulatory, and compliance requirements before any deployment.

MCP server that exposes AWS Health API as tools. Works with Claude Desktop, Kiro or any MCP-compatible client.

📖 Blog: Building an AWS Health MCP Server for Agentic Operations

Prerequisites

  • Python 3.10+

  • AWS credentials configured (aws configure or environment variables)

  • AWS Business or Enterprise Support plan (required for Health API)

  • For org-level tools: AWS Organizations with Health service access enabled

Related MCP server: AWS Pricing Calculator MCP Server

Setup

Add this to your MCP config file:

  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Kiro: ~/.kiro/settings/mcp.json

  • Amazon Q CLI: ~/.aws/amazonq/mcp.json

{
  "mcpServers": {
    "aws-health": {
      "command": "uvx",
      "args": ["aws-health-mcp-server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

Using pip

pip install aws-health-mcp-server

From a local clone

{
  "mcpServers": {
    "aws-health": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/aws-health-mcp-server", "aws-health-mcp-server"],
      "env": {
        "AWS_PROFILE": "default"
      }
    }
  }
}

That's it. uv handles the venv and dependencies automatically.

Tools

Account-Level

Tool

Description

get_service_health

All active health events

get_affected_entities

Resources impacted by open events

get_service_events(service)

Events for a specific service (e.g., EC2, RDS)

get_completed_events(service?)

Recently resolved events

get_scheduled_changes

Upcoming maintenance

Organization-Level

Tool

Description

get_org_health_events(service?, account_id?, status?)

Events across all accounts

get_org_service_health

Active events org-wide

get_org_affected_entities(account_id?, event_arn?)

Impacted resources across accounts

get_org_service_events(service)

Service-specific events org-wide

get_org_account_events(account_id)

Events for a specific account

get_org_scheduled_changes

Org-wide scheduled maintenance

Example Prompts

  • "Are there any active AWS health events?"

  • "What's happening with EC2 right now?"

  • "Show me scheduled maintenance across my organization"

  • "What resources are affected by current issues in account 123456789012?"

Environment Variables

Variable

Default

Description

AWS_PROFILE

none

AWS credentials profile

AWS_REGION

us-east-1

Region (Health API is us-east-1 only)

LOG_LEVEL

INFO

Logging level (DEBUG, INFO, WARNING)

HEALTH_API_TIMEOUT

30

API timeout in seconds

Troubleshooting

"SubscriptionRequiredException" — You need AWS Business or Enterprise Support.

"AccessDeniedException" — Your IAM user/role needs health:Describe* permissions.

Org tools return access error — Enable Health service access from your management account:

aws health enable-health-service-access-for-organization

Server not starting — Check the MCP client logs. Common issues:

  • Wrong Python path in config (use the full .venv/bin/python path)

  • Missing dependencies (run pip install -e . in the venv)

Development

git clone https://github.com/aws-samples/sample-health-mcp-server.git
cd aws-health-mcp-server
uv sync --extra dev
uv run pytest tests/ -v

License

MIT-0

Available Tools

11 tools
get_affected_entitiesA

Get affected entities for all open AWS health events.

Shows resources impacted by active health events, grouped by event and status.

Example prompts:

  • "What resources are affected by current AWS issues?"

  • "Show me all impacted AWS entities"

  • "Which AWS resources are experiencing problems?"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses useful scope filters ('open', 'active') and the output grouping, but does not state read-only status explicitly, permissions, pagination, or other operational traits. The presence of an output schema offloads return-format details.

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 front-loaded and concise: two summary sentences followed by example prompts. The three example prompts are somewhat redundant, but they help with routing and are not excessive.

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 zero-parameter tool with an output schema, the description provides adequate scope and output context. The main missing piece is an explicit statement that this operates at the caller's account level rather than the organization level, which would help differentiate it from the sibling org tool.

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?

The tool takes zero parameters, so there are no parameter semantics to document. Baseline score of 4 is appropriate because the description does not need to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get affected entities') plus scoping ('for all open AWS health events') and output grouping ('grouped by event and status'). It does not explicitly distinguish this tool from the sibling 'get_org_affected_entities', leaving the account-vs-organization distinction to be inferred from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Three example prompts imply intended usage contexts, such as checking current AWS issues or impacted resources. However, there is no explicit guidance on when to use this tool versus its siblings (e.g., the org-level variant) and no exclusions or prerequisites.

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

get_completed_eventsA

Get completed/closed health events.

Args: service: Optional. The AWS service name to filter by. Case insensitive.

Example prompts:

  • "Show me recently resolved AWS issues"

  • "What EC2 problems were fixed?"

  • "Get history of resolved incidents"

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. The word 'Get' implies a read-only lookup, and the tool returns historical rather than active events, but nothing is said about permissions, pagination, result limits, or time-range defaults. It adds some domain context but leaves meaningful behavioral gaps.

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?

Purpose is front-loaded in one line, followed by a compact Args block and examples. The three example prompts are somewhat repetitive for a single-parameter tool, but each maps to a distinct query phrasing and aids routing.

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?

An output schema exists, so return values need no explanation. For a one-optional-param read tool, the description covers purpose, parameter semantics, and usage examples; the main omissions are sibling differentiation and pagination/scope behavior.

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 description coverage is 0%, so the description must compensate, and it does: it marks 'service' as optional, explains it filters by AWS service name, and adds that matching is case insensitive. This is genuinely more than the schema provides, though it omits format examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (completed/closed health events), and the 'completed/closed' qualifier clarifies the state filter. It does not, however, explicitly differentiate itself from siblings like get_service_events or get_org_health_events, leaving the agent to infer that those cover other states or scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternative is named. The three example prompts do imply the intended scenario (resolved/historical incidents), which lifts it above a bare 'no guidance' score.

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

get_org_account_eventsA

Get health events for a specific AWS account in your organization.

Args: account_id: The 12-digit AWS account ID.

Example prompts:

  • "What health events are affecting account 123456789012?"

  • "Show me all issues in my account"

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. The verb 'Get' conveys a read-only, non-destructive operation, which is minimal but real transparency; however, nothing is said about permissions, scoping limits, or rate behavior.

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

Conciseness3/5

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

The lead sentence is front-loaded and useful, but the Args block largely restates the schema and the two example prompts add bulk without adding decision-relevant information.

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?

An output schema exists, so return values need not be described, and the single required parameter is explained. For a one-parameter read tool the description is nearly sufficient, missing only explicit scoping/limits context.

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 description coverage is 0% and the schema only labels account_id as a bare string, so the description's 'The 12-digit AWS account ID' adds genuine format meaning the schema lacks. Only one parameter exists and it is documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (health events) scoped to a single AWS account, which separates it from the org-wide siblings like get_org_health_events and get_org_service_health. Sibling differentiation is implied by scope but never made explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two example prompts illustrate plausible invocations, so the intended usage is implied, but there is no explicit when-to-use guidance or comparison against the many sibling event tools (get_service_events, get_completed_events, get_org_health_events).

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

get_org_affected_entitiesA

Get affected entities for AWS health events across your organization.

Args: account_id: Optional. The AWS account ID to filter events for. event_arn: Optional. The ARN of a specific event to get details for.

Example prompts:

  • "What resources are affected by current AWS issues across my organization?"

  • "Show me impacted entities in account 123456789012"

ParametersJSON Schema
NameRequiredDescriptionDefault
event_arnNo
account_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does disclose that both filters are optional and that event_arn narrows to a single event. It says nothing about pagination, result size, permissions, or rate limits, which is a meaningful gap for an org-wide aggregation tool.

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 core purpose is front-loaded in one sentence, followed by a compact Args block and two short examples. No sentence is wasted, though the example prompts add modest value beyond the purpose line.

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?

An output schema exists, so return values need not be explained, and both optional parameters are semantically described. The main remaining gap is the absence of any note on pagination or behavior when neither filter is supplied, but the definition is otherwise adequate for a two-optional-param read tool.

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 0%, so the description must compensate, and it does document both parameters: account_id as an optional event filter and event_arn as an optional single-event selector. There is a slight mismatch in that event_arn says 'get details for a specific event' while the tool returns affected entities, but the semantics are otherwise clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('affected entities') scoped to 'AWS health events across your organization'. The org-wide scope implicitly differentiates it from the sibling get_affected_entities, though that sibling is never named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Example prompts illustrate plausible usage ('What resources are affected...', 'impacted entities in account 123456789012'), which implies context. However, there is no explicit guidance on when to prefer this over get_org_health_events or the non-org get_affected_entities, and no exclusions or prerequisites are stated.

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

get_org_health_eventsA

Get health events across your AWS Organization.

If no arguments are provided, returns all active org health events.

Args: service: Optional. The AWS service name to filter by. Case insensitive. account_id: Optional. The AWS account ID to filter events for. status: Optional. 'active' (default) or 'closed'.

Example prompts:

  • "Show me org-wide AWS health events"

  • "What issues affect account 123456789012?"

  • "Get closed org health events for RDS"

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoactive
serviceNo
account_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the default status=active and case-insensitive service matching, but says nothing about permissions, result size/pagination, or whether 'closed' events in org scope behave differently.

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?

Front-loads the core purpose and default behavior, then lists args compactly. The Args block and examples are slightly redundant but each earns its place for a zero-schema-documentation tool.

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?

An output schema exists so return values need not be explained, and the description fully covers the three undocumented params plus default behavior. Minor absence of pagination/permission notes keeps it short of full completeness.

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 description coverage is 0%, so the description must compensate, and it does: it labels all three params optional, defines the filter meaning of service and account_id, marks service as case insensitive, and enumerates status values ('active'/'closed') that the schema itself leaves as a bare string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (health events) with an explicit scope ('across your AWS Organization'), which separates it from non-org siblings. It does not, however, distinguish itself from near-neighbors like get_org_service_health or get_org_service_events.

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?

Explains default behavior ('if no arguments are provided, returns all active org health events') and supplies three concrete example prompts that map to real usage scenarios. No explicit when-not or sibling-routing guidance is given.

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

get_org_scheduled_changesA

Get scheduled changes/maintenance events across your AWS Organization.

Returns upcoming maintenance affecting accounts in your organization.

Example prompts:

  • "What maintenance is planned across my organization?"

  • "Show me upcoming AWS changes affecting my accounts"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a meaningful behavioral fact, that results are limited to upcoming/future maintenance rather than historical events, which is useful scope information. However, it says nothing about required org-level permissions, aggregation behavior across member accounts, or volume/limits for a multi-account fan-out call.

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?

Front-loaded with the purpose, then a short reinforcement sentence, then two example prompts. It is appropriately sized for a no-argument query tool. The second sentence ('Returns upcoming maintenance affecting accounts in your organization') largely restates the first, costing a point.

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 zero-parameter listing tool with an output schema present, the description covers scope (organization-wide) and temporal scope (upcoming) without needing to explain return values. The remaining gap is relational: it does not distinguish itself from the nine other org-scoped siblings, which matters in a crowded namespace.

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?

The tool takes zero parameters, so the baseline is 4 and there is no parameter surface the description could be expected to explain. Nothing is missing here; the description does not need to compensate for any undocumented inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (get scheduled changes/maintenance events) and adds an explicit scope qualifier, 'across your AWS Organization,' which is the key axis separating it from the sibling get_scheduled_changes. It never names that sibling outright, so it stops short of full differentiation, but the scope phrase is enough for an agent to place it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through example prompts ('What maintenance is planned across my organization?'), which hint at org-wide maintenance queries. There is no explicit when-to-use statement and no exclusion or named alternative (e.g., get_scheduled_changes for single-account scope, get_org_service_events for service-level events), leaving the agent to infer routing.

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

get_org_service_eventsA

Get health events for a specific AWS service across your organization.

Args: service: The AWS service name (e.g., 'EC2', 'RDS', 'LAMBDA'). Case insensitive.

Example prompts:

  • "What's happening with EC2 across my organization?"

  • "Show me all RDS issues affecting my AWS accounts"

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does establish the core behavior: a read of health events scoped to one service and one organization. It is silent on practical traits such as time-range defaults, pagination, result limits, and permission requirements, which for a query tool with zero annotation coverage leaves real gaps.

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 one-line purpose statement is front-loaded and followed by tightly scoped parameter documentation and two short example prompts, each of which adds usable context. There is no filler, though the example prompts are a slight expansion beyond the minimum needed.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the single required parameter is documented. What is missing is disambiguation from the dense cluster of sibling health/event tools and any indication of result scope (time window, pagination), which an agent would want before invoking.

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 description coverage is 0% — the single `service` property has no description at all — so the description must compensate, and it does: it names the AWS service, gives concrete examples ('EC2', 'RDS', 'LAMBDA'), and notes the value is case insensitive. That covers format, vocabulary, and a matching caveat the schema omits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('health events'), and scope ('for a specific AWS service across your organization'), which clearly separates it from the non-organizational get_service_events. The distinction is conveyed through the scope phrase rather than by naming the sibling tool, so an agent must infer the boundary rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two example prompts imply intended usage ('What's happening with EC2 across my organization?'), giving a concrete sense of when to reach for this tool. However, there is no explicit guidance on when NOT to use it or how to choose among the many near-identical siblings like get_org_health_events, get_org_service_health, or get_service_events.

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

get_org_service_healthB

Get current AWS service health events across your organization.

Provides a comprehensive overview of active health events across all accounts in your AWS Organization.

Example prompts:

  • "Show me all current AWS service health issues across my organization"

  • "Are there any active AWS service disruptions affecting multiple accounts?"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does add useful behavioral context — the results are 'current' and limited to 'active' events spanning all accounts — but it says nothing about the elevated permissions org-wide access typically requires, nor about pagination or result limits for large organizations.

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 purpose is front-loaded in the first sentence and the example prompts are a compact, scannable aid. Mild redundancy between 'current AWS service health events across your organization' and 'active health events across all accounts in your AWS Organization' costs it a point.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the parameterless signature keeps the surface small. What is missing is the piece an agent actually needs: how this differs from the closely named org-level siblings and what access level is required.

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?

The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a parameterless tool is 4. No parameter meaning is lost.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (get AWS service health events) with an explicit organizational scope (all accounts in the AWS Organization). However, it fails to differentiate itself from near-identical siblings such as get_org_service_events, get_org_health_events, and get_org_account_events, leaving an agent unable to tell which org-level health tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two example prompts imply the usage context (org-wide service disruptions affecting multiple accounts), which is better than nothing. But there is no when-not guidance and no explicit mention of alternatives like get_service_health (single account) or get_org_scheduled_changes, so the routing decision 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.

get_scheduled_changesA

Get all scheduled changes/maintenance events across AWS services.

Returns upcoming maintenance windows, planned updates, and infrastructure improvements.

Example prompts:

  • "What maintenance is planned for AWS services?"

  • "Show me upcoming AWS changes"

  • "When is the next AWS maintenance?"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the nature of the returned data (upcoming/planned items, not historical). It stops short of stating whether results are global or account-scoped, whether they are paginated, or any auth/rate-limit traits, though an output schema exists to cover return shape.

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 core sentence is front-loaded and the return summary immediately follows, so an agent gets the essentials in the first two lines. The three example prompts are slightly redundant padding but are short and reinforce the scope rather than obscure it.

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 zero-parameter read tool with an output schema that already documents the return structure, the description supplies enough: what it returns, its upcoming-only nature, and example triggers. The one real gap is the unstated relationship to get_org_scheduled_changes, leaving scope ambiguity among near-identical siblings.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to clarify or obscure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get all scheduled changes/maintenance events across AWS services,' and narrows the payload to 'upcoming maintenance windows, planned updates, and infrastructure improvements.' That scope statement implicitly separates it from get_completed_events, but it never addresses the org-scoped sibling get_org_scheduled_changes, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example prompts ('What maintenance is planned?', 'When is the next AWS maintenance?') imply when an agent would reach for this tool, which is genuine implied-usage guidance. However, there is no explicit when-not, no prerequisite, and no named alternative such as get_org_scheduled_changes or get_completed_events.

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

get_service_eventsB

Get health events for a specific AWS service.

Args: service: The AWS service name (e.g., 'EC2', 'RDS', 'LAMBDA'). Case insensitive.

Example prompts:

  • "What's happening with EC2 right now?"

  • "Show me all RDS issues"

  • "Are there any problems with S3?"

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether results are current or historical, how far back events go, whether authentication is required, or any rate limits.

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?

Front-loaded one-sentence purpose followed by a parameter note and helpful example prompts. The args section and examples add value and there is little waste.

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

Completeness3/5

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

An output schema exists, so return-value explanation is unnecessary. However, for a 1-param tool with no annotations, the description could do more to clarify scope (current vs historical) and how it relates to sibling tools.

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 kind of covers the single parameter but has 0% description coverage; the description compensates well by giving example service names and noting case insensitivity, adding meaning beyond the bare string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'Get health events for a specific AWS service.' However, it does not differentiate from close siblings like get_service_health or get_org_service_events, so it is not fully disambiguated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Example prompts imply the tool answers questions about current service issues, but there is no explicit when-to-use or when-not-to-use guidance relative to alternatives such as get_service_health or get_completed_events.

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

get_service_healthA

Get current AWS service health events.

Returns active and upcoming AWS health events with descriptions and timelines.

Example prompts:

  • "Show me all current AWS service health issues"

  • "What's the current status of AWS services?"

  • "Are there any active AWS service disruptions?"

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the result scope ('active and upcoming' events with descriptions and timelines'), which is meaningful behavioral context, and 'Get' implies a read-only operation. It does not state auth/permission needs, whether results are cached or real-time, or any rate limits, so coverage is partial rather than complete.

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 core purpose is front-loaded in the first sentence, followed by a one-line return summary and three example prompts. The examples are somewhat redundant with each other but serve semantic-matching purposes, so the overall structure is efficient with minimal waste.

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

Completeness3/5

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

An output schema exists and there are no parameters, so the description needn't document returns or arguments, and it covers those adequately. What is missing is disambiguation among the ten sibling tools, which is the main context an agent needs and which the description does not supply.

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?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no filtering arguments are available (it returns all active/upcoming events unconditionally), which is a useful clarification for an agent that might otherwise expect a service-name filter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get current AWS service health events') and clarifies scope as 'active and upcoming' events, which implicitly distinguishes it from completed-event tools. However, with ten siblings including near-namesakes like get_service_events, get_org_service_health, and get_completed_events, the description never names or contrasts against any alternative, leaving the agent to guess which endpoint to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example prompts ('Show me all current AWS service health issues', 'What's the current status of AWS services?') give concrete usage contexts, so the intended invocation scenario is reasonably implied. But there is no explicit when-to-use guidance, no exclusions, and no mention of when a sibling tool would be the better choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv2.0.0
    • First observedget_affected_entities
    • First observedget_completed_events
    • First observedget_org_account_events
    • First observedget_org_affected_entities
    • First observedget_org_health_events
    • First observedget_org_scheduled_changes
    • First observedget_org_service_events
    • First observedget_org_service_health
    • First observedget_scheduled_changes
    • First observedget_service_events
    • First observedget_service_health

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation3/5

The org-prefixed mirror set is a coherent pattern, but several pairs overlap heavily: get_service_health vs get_service_events (both return current event data for a service), and get_org_account_events vs get_org_health_events (the latter already filters by account_id). Descriptions help somewhat but the 'health' vs 'events' distinction is subtle enough to cause misselection.

Naming Consistency5/5

Every tool follows a strict get_<scope>_<resource> snake_case pattern with a consistent 'org' prefix to mark organization-wide variants. Naming is fully predictable and readable.

Tool Count4/5

11 tools is within a reasonable range, but roughly half are org-scope duplicates of single-account tools, so the effective unique surface is smaller than the count suggests.

Completeness4/5

Covers active/upcoming events, per-service and per-account queries, scheduled changes, affected entities, and completed history across both single-account and org scopes. A dedicated get-event-by-ARN details tool is missing but not a hard blocker.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for running infrastructure health checks with TIBET provenance. It enables users to define, execute, and audit process health checks with dependency chaining and drift tracking.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    This MCP server provides tools for inspecting AWS cloud infrastructure, including listing S3 buckets, EC2 instances, and fetching CloudWatch logs using your local AWS credentials.
    2 npm
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    A local MCP server for read-only querying of AWS resources (Lambda, S3) via Boto3, currently exposing a health check tool with planned tools for listing resources and checking free tier.
    7
    -