AWS Health MCP Server
OfficialProvides tools to retrieve AWS Health events, affected entities, and service status for your AWS account.
Provides tools to retrieve AWS Health events and affected entities across all accounts in your AWS Organization.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AWS Health MCP ServerWhat's happening with EC2 right now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 configureor 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.jsonKiro:
~/.kiro/settings/mcp.jsonAmazon Q CLI:
~/.aws/amazonq/mcp.json
Using uvx from PyPI (recommended)
{
"mcpServers": {
"aws-health": {
"command": "uvx",
"args": ["aws-health-mcp-server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Using pip
pip install aws-health-mcp-serverFrom 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 |
| All active health events |
| Resources impacted by open events |
| Events for a specific service (e.g., EC2, RDS) |
| Recently resolved events |
| Upcoming maintenance |
Organization-Level
Tool | Description |
| Events across all accounts |
| Active events org-wide |
| Impacted resources across accounts |
| Service-specific events org-wide |
| Events for a specific account |
| 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 |
| none | AWS credentials profile |
|
| Region (Health API is us-east-1 only) |
|
| Logging level ( |
|
| 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-organizationServer not starting — Check the MCP client logs. Common issues:
Wrong Python path in config (use the full
.venv/bin/pythonpath)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/ -vLicense
MIT-0
Available Tools
11 toolsget_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?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| service | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| event_arn | No | ||
| account_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | active | |
| service | No | ||
| account_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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?"
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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?"
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v2.0.0- First observed
get_affected_entities - First observed
get_completed_events - First observed
get_org_account_events - First observed
get_org_affected_entities - First observed
get_org_health_events - First observed
get_org_scheduled_changes - First observed
get_org_service_events - First observed
get_org_service_health - First observed
get_scheduled_changes - First observed
get_service_events - First observed
get_service_health
TDQS
Scored across 11 tools
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.
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.
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.
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
Related MCP Connectors
Hosted MCP server for AWS cloud spend: service breakdowns, anomalies, savings and forecasts.
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
- IrisOAuthbio.irishealth
Read-only health context MCP server for Iris users.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP 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.6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that provides tools for automating AWS Pricing Calculator estimate generation.MIT
- AlicenseNot gradedqualityCmaintenanceThis 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 npmMIT
- FlicenseAqualityBmaintenanceA 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-