cloudwright-mcp
Cloudwright
Describe a cloud architecture in English. Get Terraform, costs, and a compliance check.
pip install 'cloudwright-ai[cli]'
export ANTHROPIC_API_KEY=sk-ant-...
cloudwright design "HIPAA healthcare API on AWS with Postgres and Redis"Cloudwright takes a one-line description of a cloud system and produces a structured architecture spec, a per-component cost breakdown, a compliance report, and ready-to-apply Terraform, Pulumi (TypeScript or Python), or CloudFormation. It works across AWS, GCP, Azure, and Databricks. Version 1.4 adds live AWS import (cloudwright import-live), the Pulumi exporter, two-stage prompting with first-class network boundaries, and a drop-in GitHub Action that posts arch-diff plus cost-delta on every infra PR.
Try it - What's new in v1.4 - Docs - MCP server
What you get
Architecture spec (typed YAML, version-controlled, the single source of truth)
Cost breakdown across AWS, GCP, Azure, Databricks (multi-region, per-component, four pricing tiers)
Compliance report covering HIPAA, SOC 2, PCI-DSS, FedRAMP Moderate, GDPR, and Well-Architected
Terraform and CloudFormation export with safe defaults (encryption, IMDSv2, locked-down S3, sensible RDS settings)
Diagrams in ASCII, Mermaid, D2, and a fully editable web canvas
MCP server for AI agents (Claude Desktop, Cursor, Cline, and any MCP-compatible client)
Related MCP server: insideout-mcp
Quickstart
cloudwright design "HIPAA healthcare API on AWS with Postgres and Redis"
cloudwright cost spec.yaml --workload-profile medium
cloudwright validate spec.yaml --compliance hipaa,soc2
cloudwright export spec.yaml --format terraform -o ./infra
cloudwright chat --web # browser canvas at http://localhost:8765All commands except design, modify, chat, and adr work fully offline. Set ANTHROPIC_API_KEY (preferred) or OPENAI_API_KEY to enable the LLM-powered ones. Drop --json on any command for machine-readable output.
Smart Canvas + Module Catalog (v1.2)
The web diagram is a fully editable architecture canvas. Edits (add, drag, connect, edit fields, delete) are deterministic frontend mutations, so they are instant, free, and reproducible. They do not call the LLM.
A left-side Catalog drawer has three tabs:
Resources - the full catalog for the active provider, served by
/api/catalog/services(case-insensitive?provider=).Modules - approved multi-resource patterns from
/api/modules. Bundled: AWS Three-Tier Web, AWS Serverless API, AWS Data Lake, GCP Serverless API, Azure Three-Tier Web.Standards - runs
POST /api/canvas/validateand surfaces orphan connections, partial modules, unapproved modules, naming-prefix violations, and missing required tags.
When a module instance is intact, the Terraform exporter emits a single module "<id>" block with the catalog's pinned source and version. Modified modules fall back to per-component resource rendering. Mixed specs work: catalog modules render as modules, ad-hoc resources as resources, side by side.
cloudwright chat --web
# Open http://localhost:8765, use the Catalog drawer, then Export -> TerraformMCP server (Claude / Cursor / Cline)
Expose Cloudwright as Model Context Protocol tools so AI agents can design, cost, validate, and export architectures directly. 18 tools across 6 groups (design, cost, validate, analyze, export, session).
pip install cloudwright-ai-mcp
cloudwright mcp # all tools, stdio
cloudwright mcp --tools design,cost # subset
cloudwright mcp --transport sse # SSE for HTTP clientsclaude_desktop_config.json (same shape works for Cursor and Cline):
{
"mcpServers": {
"cloudwright": {
"command": "cloudwright",
"args": ["mcp"]
}
}
}Analysis
cloudwright lint (10 anti-pattern checks), cloudwright score (5-dimension quality grade), cloudwright analyze (blast radius and SPOF), cloudwright drift <spec> <tfstate> (design vs deployed), cloudwright policy --rules policy.yaml (policy-as-code with 9 built-in checks), and cloudwright security (security anti-patterns; also scans exported Terraform HCL). Every command supports --json. See docs/ and the examples/ directory for end-to-end samples.
Python API
from cloudwright import ArchSpec
from cloudwright.cost import CostEngine
from cloudwright.validator import Validator
from cloudwright.exporter import export_spec
spec = ArchSpec.from_file("spec.yaml")
priced = CostEngine().estimate(spec, workload_profile="medium")
results = Validator().validate(spec, compliance=["hipaa", "pci-dss"])
hcl = export_spec(spec, "terraform", output_dir="./infra")What's new in v1.4.0
Pulumi exporter (TypeScript + Python).
cloudwright export spec.yaml --format pulumi-ts -o ./infrawrites a complete Pulumi TypeScript project (index.ts,Pulumi.yaml,package.json,tsconfig.json).--format pulumi-pythonwrites the Python equivalent. AWS, GCP, and Azure coverage matches the Terraform exporter, with the same safe-by-default posture (S3 public-access block + AES256 + versioning, RDS encryption + 7-day backups + deletion protection, EC2 IMDSv2, DynamoDB SSE + PITR, CloudFront TLSv1.2_2021, CloudTrail log-file validation). Aliasespulumi-typescriptandpulumi-pyalso work.Live AWS import.
cloudwright import-live --provider aws --region us-east-1 [--profile NAME] [--services ec2,rds,s3] [-o spec.yaml]walksboto3 describe-*calls (EC2, VPC + subnets + security groups, RDS, S3, Lambda, ECS, EKS, DynamoDB, ALB / NLB, CloudFront, SQS, API Gateway, CloudTrail) and produces an ArchSpec from running infrastructure. Captures security posture (S3 encryption + versioning + public-access-block, RDS multi-AZ + backup retention, EC2 IMDSv2, SG ingress 0.0.0.0/0). Best-effort connection inference: ALB to EC2 via target groups, CloudFront to S3 via origin domains. Per-service permission denials are non-fatal. Optional dep:pip install 'cloudwright-ai[live-import]'.Two-stage prompting plus boundary-aware spec.
Architect.design()now runs Stage 1 (free-text architectural reasoning via Sonnet) followed by Stage 2 (strict JSON projection via Haiku). Stage 2 is told the canonical service keys, allowed connection kinds (sync_request | async_event | stream | replication | batch), and boundary kinds (VPC / subnet / security_group / availability_zone / region / account), so it projects faithfully without redesigning. VPCs, subnets, and SGs are now first-class in the LLM contract. Per-stage usage (stage1,stage2,total_cost_usd,two_stage: true) is exposed on/api/design,/api/modify, and their streaming variants. Single-shot path retained as fallback (Architect(two_stage=False)).Workload-aware safe defaults. Pre-v1.4,
_post_validateforcedencryption=true,multi_az=true,backup=true,auto_scaling=true, andcount=2onto every spec, masking Stage 1 reasoning. v1.4 makes these conditional onspec.metadata.workload_profile:sandbox,dev,test,demo,pockeep the LLM's chosen values;production,medium,large,enterpriseget safe defaults forced. Compliance frameworks (HIPAA, PCI-DSS, SOC 2, GDPR, FedRAMP, HITRUST, ISO 27001) always force encryption + HA regardless of profile.GitHub Action for PR previews. Drop-in workflow posts an idempotent comment with architecture diff (added / removed / changed components), monthly cost delta (head vs. base, with annual rollup), and per-framework compliance changes whenever a PR touches
*.tf,*.tfstate,cloudwright.yaml, orspec.yaml. Reusable composite action at.github/actions/cloudwright-pr-comment/. Seedocs/github-action.md.Refreshed Smart Canvas demo GIF (
examples/cloudwright-smart-canvas-demo.gif) showing prompt to diagram to catalog drawer to add resource to side-panel edit to cost recomputation against the current UI. Reproducible viapython scripts/record_smart_canvas.py.Cancel-safe streaming via
AsyncAnthropicandAsyncOpenAI.chat/streamanddesign/streamnow use native async clients instead of athreading.Thread+asyncio.Queuebridge. When a client disconnects mid-stream,CancelledErrorpropagates into the SDK'sasync withblock and closes the upstream HTTPX connection, so the LLM call stops billing tokens at disconnect rather than at completion. Eliminates orphan threads and queue-full data loss. Syncsend_stream/generate_streampaths are preserved for the CLI; only the web routers switched.
What's new in v1.3.0
Safe-by-default Terraform. S3 public-access blocks, RDS
storage_encryptedanddeletion_protection, EC2 IMDSv2, security-group ingress restricted to listed CIDRs.HCL injection-safe escaping. All Terraform exporters (AWS, GCP, Azure, Databricks) escape user-supplied config values before interpolation.
Per-model LLM pricing. Haiku (fast classifier) and Sonnet (designer) billed at their respective rates instead of a single hardcoded rate.
Anthropic prompt caching. Roughly 70-80% input-token savings on chat follow-ups, with measurable latency improvement.
Atomic SessionStore writes. No more session corruption on SIGKILL or disk full mid-write.
Constant-time API key comparison. Web API auth is now timing-attack hardened.
FedRAMP region allowlist.
us-east-1is no longer flagged as FedRAMP-authorized; the validator now matches the actual GovCloud / FedRAMP-authorized region set.Health and version endpoints.
/healthreturns version, configured model, and catalog status. New/api/version.Request correlation IDs. Every web request gets an
X-Request-Id, plumbed through router logs.--debugflag works. Used to be a silent no-op; now prints prompts, timing, and token counts.cloudwright chat --webpinned to port 8765 to match docs and MCP/Slack integrations.Cost in design responses.
/api/designand/api/modifynow return cost in the response payload.Swagger UI gated.
/docsis off in production by default; setCLOUDWRIGHT_DOCS_ENABLED=trueto expose it.
Compatibility
Python 3.12+
LLM providers: Anthropic (Claude Sonnet, Haiku) and OpenAI (GPT-5+ family). Auto-detected from env.
Clouds: AWS, GCP, Azure, Databricks. 112 service keys total.
Install variants:
cloudwright-ai[cli],cloudwright-ai[web],cloudwright-ai-mcp.
Contributing, license, changelog
Contributing guide: CONTRIBUTING.md
License: MIT - see LICENSE
Full release history: CHANGELOG.md
Available Tools
19 toolsanalyze_blast_radiusA
Analyze blast radius and dependency structure of an architecture.
For each component (or just one, if component_id is set): returns direct
dependents, transitive dependents, blast-radius size, SPOF status, and
tier position. Use this to reason about failure modes — 'if component X
dies, what else breaks?'
When to use: You have a spec and want to understand coupling and failure
domains before production. Complementary to score_architecture (which
gives a summary grade) and lint_architecture (which flags specific
anti-patterns).
Behavior: Pure graph computation — no LLM, no network. Read-only. Does not touch cloud resources.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to analyze. Builds a directed dependency graph from the spec's connections and computes reachability per component. | |
| component_id | No | Optional: focus analysis on a single component's blast radius (its direct dependents + transitive dependents). When omitted, returns blast-radius metrics for every component. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavior: 'Pure graph computation — no LLM, no network. Read-only. Does not touch cloud resources.' This covers all side effects and constraints, compensating for the lack of annotations.
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 description is approximately 100 words, well-structured with sections, front-loaded with core purpose, and every sentence adds value. No redundancy or wasted text.
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?
Despite having no output schema, the description lists return values (blast-radius metrics, SPOF, tier position). It explains use case and behavior sufficiently for an agent to select and invoke correctly. Minor omission: it could clarify the expected structure of spec_json, but the schema's additionalProperties allows flexibility.
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 100% with clear descriptions for both parameters. The description adds context about how spec_json builds a directed graph and what component_id focuses on, plus lists output fields. This extra context raises the score above the baseline of 3.
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 clearly states the tool's purpose: 'Analyze blast radius and dependency structure of an architecture.' It lists specific outputs (direct/transitive dependents, blast-radius size, SPOF status, tier position) and distinguishes itself from siblings like score_architecture and lint_architecture.
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 description explicitly states when to use: 'when you have a spec and want to understand coupling and failure domains before production.' It also mentions complementary tools (score_architecture, lint_architecture) but does not specify when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_searchA
Search the cloud instance catalog by provider, specs, or text query.
Returns matching instance types with instance family, vCPU / memory / storage, hourly on-demand price, region availability, and architecture (x86 / arm). All filters combine with AND semantics.
When to use: Right-sizing workloads, finding the cheapest instance that meets a hardware bar, or discovering equivalents across families.
Behavior: Pure lookup from the bundled SQLite catalog — no LLM, no
network. Prices reflect catalog snapshot date (see refresh CLI command
to update).
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Cloud provider slug to search within. Default 'aws'. | aws |
| query | No | Optional free-text query matching instance family, generation, or purpose (e.g. 'memory-optimized', 'graviton', 'gpu'). | |
| vcpus | No | Optional exact vCPU count filter. Returns instances matching this vCPU count. | |
| memory_gb | No | Optional exact memory-in-GB filter. Returns instances matching this memory size. | |
| max_price_per_hour | No | Optional maximum hourly on-demand price (USD). Returns only instances at or below this price. Useful for budget-constrained sizing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it is a pure lookup from a bundled SQLite catalog with no LLM or network calls, and that prices are from a catalog snapshot date. This fully describes the tool's behavior, especially since no annotations are provided.
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 description is concise (3 paragraphs) with clear headings for purpose, usage, and behavior. Every sentence provides essential information without redundancy.
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?
The description covers all aspects: search criteria, returned data, usage context, and behavioral notes. Given that an output schema exists (context signal), the description does not need to detail return values. It is complete for an effective tool invocation.
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 100%, so baseline is 3. The description adds value by stating that all filters combine with AND semantics, which is not explicit in the schema. This clarifies how multiple filters interact, earning a 4.
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 clearly states the tool searches the cloud instance catalog by multiple criteria (provider, specs, text query) and lists the returned fields (instance family, vCPU, memory, storage, price, region, architecture). It distinguishes from siblings like compare_providers and estimate_cost by focusing on search and filtering.
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 'When to use' section explicitly outlines three use cases: right-sizing workloads, finding cheapest instance meeting hardware requirements, and discovering equivalent instance families. This provides clear guidance on when to invoke this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_create_sessionA
Create a new stateful architecture-design conversation session.
Returns {'session_id': <12-char hex>}. The session_id is the handle
for subsequent chat_send / chat_delete_session calls.
When to use: Multi-turn architecture design where each turn depends on
the prior one (e.g. 'design it', 'now add a cache', 'now move to GCP').
For single-shot design use design_architecture; for one-shot edits
of an existing spec use modify_architecture.
Behavior: Writes a new session file to the session store (persisted on
disk). Does not call the LLM — the first LLM call happens on the first
chat_send. Constraints are frozen at session creation and apply to
every turn.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Default cloud provider for the session. Every subsequent `chat_send` within this session uses this provider unless overridden in the message. | aws |
| budget_monthly | No | Optional monthly budget cap (USD). Applied across all design turns within the session — the architect will bias toward fitting under it. | |
| compliance | No | Optional compliance frameworks enforced across the session's design turns. Values: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It states 'Writes a new session file to the session store (persisted on disk)' and 'Does not call the LLM — the first LLM call happens on the first chat_send.' Also specifies the return value format. This fully discloses operational traits.
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 description is 7 sentences, well-structured with front-loaded main purpose, then return format, usage guidelines, and behavioral details. Every sentence adds value; no redundancy or fluff.
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?
Given no output schema, the description explains the return value ('session_id'). It covers purpose, when to use, behavioral details, parameter context, and constraints. For a tool with 3 optional params, this is fully complete and leaves no gaps.
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 100%, but the description adds contextual meaning: provider can be overridden per message, budget_monthly is a cap applied across turns, and compliance frameworks are enforced across the session. This goes beyond the schema's property descriptions.
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 clearly states 'Create a new stateful architecture-design conversation session.' The verb 'create' and resource 'session' are specific. It differentiates from sibling tools by mentioning stateful and multi-turn context (vs single-shot design_architecture and modify_architecture).
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?
Explicitly tells when to use this tool: 'Multi-turn architecture design where each turn depends on the prior one.' Provides clear alternatives: 'For single-shot design use design_architecture; for one-shot edits of an existing spec use modify_architecture.' Also explains constraint freezing at creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_delete_sessionA
Delete a conversation session.
Returns {'deleted': True} on success or {'error': ...} if the session
did not exist. Destructive: the session's conversation history and any
uncommitted spec are lost. There is no undo.
When to use: Clean-up after a completed design, or abandoning a dead-end conversation. Does not affect any deployed infrastructure — cloudwright never deploys anything.
Behavior: Removes the session file from the session store. No LLM, no network.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session handle to delete. If the session doesn't exist, the tool returns `{'error': ...}` and does nothing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels: it discloses return values, destructive nature (history and uncommitted spec lost), irreversibility, and that it only removes a file with no network or LLM calls.
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 description is highly concise and well-structured: purpose, return format, destructive warning, usage guidance, and behavior are each in a short paragraph or bullet, with no wasted words.
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?
Given no output schema, the description thoroughly covers return values (success and error), side effects, and when to use. It provides all necessary context for an agent to safely and correctly invoke this delete 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 description coverage is 100%, so the parameter is well-documented in the schema. The tool description adds no new per-parameter details but provides overall context about destructiveness, meeting the baseline for high coverage.
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 starts with a clear verb and resource: 'Delete a conversation session.' It also provides usage context like 'Clean-up after a completed design, or abandoning a dead-end conversation,' which helps distinguish it from sibling tools like chat_create_session.
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 description explicitly states when to use the tool (clean-up, abandoning a conversation) and notes that it does not affect deployed infrastructure. However, it does not explicitly state when not to use it or list alternatives, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_list_sessionsA
List all saved conversation sessions.
Returns a list of session metadata: session_id, creation timestamp, last-activity timestamp, cumulative token usage, and whether the session currently owns a spec.
When to use: Resuming prior work, cleaning up abandoned sessions, or auditing session token spend.
Behavior: Pure disk read — no LLM, no network. Read-only.
| 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?
Discloses that this is a pure disk read with no LLM or network calls, and explicitly states it is read-only. Since no annotations are provided, the description fully covers behavioral traits.
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?
Description is extremely concise: one sentence for purpose, one for return details, one for usage, and one for behavior. No redundant 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?
Fully covers what the tool does, what it returns, when to use it, and its behavior. Output schema exists, but description already details return fields.
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?
Input schema is empty (0 parameters). Description adds meaning about the tool's purpose and return data, which is sufficient given no parameters exist.
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?
Description clearly states it lists saved conversation sessions and specifies exact metadata fields returned (session_id, creation timestamp, etc.). Differentiates from siblings like chat_create_session and chat_delete_session by focusing on listing.
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?
Explicitly enumerates three use cases: resuming prior work, cleaning up sessions, and auditing token spend. Provides clear guidance on when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chat_sendA
Send a message to an existing conversation session and get a response.
Returns {'response': str, 'spec': dict|None, 'usage': dict, 'cumulative_usage': dict}.
spec is populated when the turn produced or modified an ArchSpec.
usage reports LLM token counts for this turn; cumulative_usage totals
across the whole session.
When to use: Every turn after chat_create_session. For zero-state
single-shot calls use design_architecture / modify_architecture
instead.
Behavior: Calls an LLM — incurs API costs proportional to the conversation history length (history grows each turn). Persists updated session state back to the session store.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Session handle returned by `chat_create_session`. Must reference an existing session; otherwise the tool returns `{'error': ...}`. | |
| message | Yes | User message for this conversation turn. Can be a design request, a modification instruction, a question about the current spec, or meta-commands (e.g. 'show me the cost'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it calls an LLM with API costs, history growth, session state persistence, and error handling for invalid session. No annotations present, so description fully carries the burden.
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?
Well-organized with separate sections for purpose, return values, usage, and behavior. Every sentence is informative without redundancy.
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?
Despite no output schema, the description fully explains return format, error cases, cost implications, and side effects, making it complete for a conversational 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 already covers both parameters (100% coverage). Description adds examples for message and clarifies session_id requirement, providing extra value beyond schema.
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 clearly states it sends a message to an existing session and gets a response. It distinguishes from siblings like design_architecture and chat_create_session by specifying when to use each.
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?
Explicitly states 'When to use: Every turn after chat_create_session. For zero-state single-shot calls use design_architecture / modify_architecture instead.' Also implies prerequisite of an existing session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_provider_costsA
Compare the monthly cost totals of an architecture across cloud providers.
Returns one numeric cost summary per provider (monthly total, per-component breakdown, currency). Use this for cost-focused provider selection.
When to use vs compare_providers: This tool returns only cost numbers.
compare_providers returns full alternative architectures (components,
connections, tiers). If you want both the re-drawn architecture and its
bill, call compare_providers first, then estimate_cost on each returned
spec — or call both in parallel.
Behavior: Pure computation — no LLM, no network, no API costs. Uses the
same offline catalog as estimate_cost. Does not deploy.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to cost across providers. Services are mapped to cross-cloud equivalents (ec2 <-> compute_engine <-> virtual_machines, etc.) before pricing. | |
| providers | Yes | List of cloud providers to compare pricing across. Values: 'aws', 'gcp', 'azure', 'databricks'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses it's pure computation, no LLM/no network/no API costs, uses offline catalog, does not deploy. Adds clear behavioral context beyond schema.
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?
Four sentences, front-loaded with purpose, then returns, then usage contrast, then behavioral note. Every sentence adds value, no wasted words.
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?
Given parameter count (2) with full schema coverage, output schema exists, and no missing critical areas: returns are described, behavior clarified, limitations noted (no deploy, no API). Complete for a cost comparison 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 description coverage is 100%. Description adds context that spec_json maps services to cross-cloud equivalents, but this is mostly reinforcing schema examples. Baseline 3 appropriate.
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?
Clearly states it compares monthly cost totals across cloud providers, and that it returns numeric summaries per provider. Distinguishes from sibling compare_providers by specifying this tool only returns costs, not architectures.
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?
Explicitly says to use for cost-focused provider selection. Contrasts with compare_providers (architectures vs. costs) and suggests workflow: call compare_providers first then estimate_cost, or call in parallel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_providersA
Compare an architecture's service mapping across cloud providers.
Returns one translated ArchSpec per target provider, showing which services the original would become on each. Use this to understand architectural portability and equivalent services.
When to use vs compare_provider_costs: This tool returns full
alternative architectures (with components, connections, tiers).
compare_provider_costs returns only numeric cost totals per
provider — use that when you only care about the bill, not the shape.
Behavior: Calls an LLM to resolve ambiguous service mappings where the static equivalence table is insufficient. Does not deploy.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to translate across providers. Original provider's services are mapped to equivalents on each target provider using 22 cross-cloud equivalence pairs (e.g. ec2 <-> compute_engine <-> virtual_machines). | |
| providers | Yes | List of target provider slugs to compare against. Values: 'aws', 'gcp', 'azure', 'databricks'. Returns one result per target. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool calls an LLM for ambiguous mappings and does not deploy anything. This is beyond basic annotations (none provided). However, it does not explicitly state side effects like whether it modifies data or is read-only, but the nature of comparison implies no mutation. Still, good transparency.
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?
Well-structured with clear sections: main purpose, when-to-use, behavior. Each sentence is informative and concise. No unnecessary text.
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?
Covers all necessary aspects: purpose, usage guidelines, behavioral traits, and parameter context. Output schema existence means return values need not be detailed. Complete for a comparison tool with complex input.
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 100% but description adds value: explains 'spec_json' is an ArchSpec, 'providers' are target slugs with examples, and mentions the equivalence pairs. This goes beyond schema fields.
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?
Clearly states the tool compares service mappings across cloud providers, returning translated ArchSpecs. The verb 'compare' and resource 'service mapping' are specific, and it distinguishes itself from the sibling 'compare_provider_costs' by detailing the type of output.
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?
Explicitly explains when to use this tool versus 'compare_provider_costs', stating this one returns full architectures while the other returns only cost totals. No alternative tool is left ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_architectureA
Design a cloud architecture from a natural-language description.
Primary entry point for greenfield architecture design. Returns a complete ArchSpec (YAML-serializable dict) with components, connections, tier assignments, and a cost estimate.
When to use: You have a requirement (prose) and need a concrete architecture
with services, wiring, and cost. Use modify_architecture to iterate on
an existing spec, or chat_create_session + chat_send for multi-turn
refinement.
Behavior: Calls an LLM provider (Anthropic or OpenAI depending on configured keys) — incurs API costs per invocation. Deterministic post-processing layers (cost engine, catalog lookup) apply safe defaults like encryption-at-rest, multi-AZ on databases, and auto-scaling. Does not deploy or modify any cloud resources.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Plain-English description of the system to design. Include workload type (e.g. 'HIPAA-compliant 3-tier healthcare API'), traffic expectations, and any stack preferences. The LLM uses this to select services, tiers, and connections. | |
| provider | No | Target cloud provider for the generated architecture. Values: 'aws', 'gcp', 'azure', 'databricks'. Default 'aws'. | aws |
| region | No | Cloud region for the generated architecture (e.g. 'us-east-1' for AWS, 'us-central1' for GCP, 'eastus' for Azure). Used to set region-aware pricing and compliance constraints (e.g. FedRAMP requires US regions). | us-east-1 |
| budget_monthly | No | Optional monthly budget cap in USD. When set, the architect biases toward instance tiers and managed services that fit under this cap. | |
| compliance | No | Optional list of compliance frameworks the architecture must satisfy. Values from: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'. Influences service selection (e.g. BAA-eligible services for HIPAA, FIPS-compliant services for FedRAMP) and encryption defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes internal behavior: calls an LLM provider incurring costs, deterministic post-processing applies safe defaults, and explicitly states it does not deploy or modify resources. With no annotations provided, this fully covers transparency.
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?
Description is concise and well-structured: front-loaded with purpose, then output, usage, and behavior. Every sentence adds value without redundancy.
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?
Covers purpose, usage, behavior, and return format despite no output schema. Mentions output is an ArchSpec with components, connections, etc. Minor omissions like error handling or rate limits keep it from a 5.
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 100% with detailed parameter descriptions including examples and defaults. The tool description adds overall context but does not significantly extend per-parameter meaning beyond the schema, hence baseline score of 3.
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 clearly states the tool's purpose: 'Design a cloud architecture from a natural-language description.' It identifies itself as the primary entry point for greenfield architecture design, and distinguishes from siblings like modify_architecture and chat tools.
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?
Explicit 'When to use' section provides clear guidance: use when you have a requirement and need a concrete architecture. It also specifies alternatives such as modify_architecture for iteration and chat sessions for multi-turn refinement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_architecturesA
Diff two architecture specs and return a structured change report.
Returns a structured delta: components added / removed / modified, connections added / removed / modified, cost delta (USD/month), compliance-impact flags (e.g. WAF removal, encryption-at-rest turned off), and a human-readable summary.
When to use: You have two versions of a spec (before / after a proposed change) and need a reviewable diff for approval or ADR writing.
Behavior: Pure computation — no LLM, no network. Read-only. Does not modify either spec.
| Name | Required | Description | Default |
|---|---|---|---|
| old_spec_json | Yes | Previous ArchSpec (baseline). Typically the last deployed version. | |
| new_spec_json | Yes | Proposed ArchSpec (target). Typically the version about to be deployed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it states 'Pure computation — no LLM, no network. Read-only. Does not modify either spec.' This clearly informs the agent about safety and side-effect-free operation.
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 description is well-structured and reasonably concise, with a clear purpose statement, output contents list, usage guideline, and behavior note. It is slightly verbose but still efficient, earning a 4.
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?
Despite no output schema, the description thoroughly explains what the tool returns, listing specific components of the change report. Given the complexity of nested object inputs, this provides enough context for an agent to understand the tool's full 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 100%, and the schema already provides clear descriptions for both parameters (old_spec_json as baseline, new_spec_json as target). The description adds no additional parameter-specific meaning beyond the schema, so baseline score of 3 is appropriate.
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 clearly states that the tool diffs two architecture specs and returns a structured change report, listing specific delta items (components, connections, cost, compliance). This distinguishes it from sibling tools like compare_provider_costs or compare_providers, which cover different comparisons.
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 description includes an explicit 'When to use' section indicating the tool is appropriate for reviewing before/after spec changes for approval or ADR writing. However, it does not mention when not to use or suggest alternatives, preventing a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_costA
Estimate the monthly cloud bill for an architecture spec.
Returns a structured estimate with per-component breakdown, total monthly cost, data-transfer costs, and currency. Deterministic: same spec + tier yields same result.
When to use: You need the numeric bill for one architecture on one
provider+tier combination. For multi-provider comparison of just the
costs, use compare_provider_costs. For side-by-side architecture +
cost comparison across providers, use compare_providers + this tool.
Behavior: Pure computation — no LLM, no network, no API costs. Works offline. Does not deploy or touch cloud resources.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to price. Pricing is resolved per-component against a bundled SQLite catalog (no network calls), with formula dispatch for serverless/managed services and a static fallback for rare ones. | |
| pricing_tier | No | Pricing tier multiplier applied to compute and data-store components. Values: 'on_demand' (1.0x), 'reserved_1yr' (0.6x), 'reserved_3yr' (0.4x), 'spot' (0.3x). | on_demand |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are absent, the description fully discloses behavioral traits: deterministic computation, no LLM/network/API calls, works offline, and does not deploy. This transparency goes well beyond minimal requirements.
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 description is structured with clear sections (overview, return info, determinism, usage, behavior). Every sentence adds value; no fluff. Well front-loaded with the core purpose.
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?
Given the tool's complexity (nested spec_json, pricing tiers), the description covers return structure, determinism, offline operation, and usage boundaries. No output schema is present, but the description describes the output comprehensively, making it complete for agent understanding.
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?
Input schema has 100% parameter coverage, so baseline is 3. However, the description adds meaningful context: explains pricing resolution via a bundled SQLite catalog with formula dispatch and fallback, and describes the pricing tier multiplier values, which adds value beyond schema alone.
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 'Estimate the monthly cloud bill for an architecture spec,' specifying the verb (estimate) and resource (monthly cloud bill). It distinguishes from siblings by explicitly naming `compare_provider_costs` and `compare_providers` as alternatives for multi-provider scenarios.
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?
Provides a clear 'When to use' section stating the tool is for a single provider+tier combination, and explicitly names two sibling tools for multi-provider comparisons, offering both inclusion and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_architectureA
Export an architecture spec to Terraform, CloudFormation, Mermaid, D2, or other formats.
Returns {'format': str, 'content': str} where content is the
ready-to-write payload. Terraform/CFN outputs use variables for sensitive
values (no hardcoded credentials), include provider blocks with region
configuration, and generate data sources for VPC/subnet discovery.
When to use: You have a finalized ArchSpec and need IaC code, a diagram,
or an audit artifact. For multi-format export, call once per format.
Behavior: Pure computation — no LLM, no network. Does not write files or deploy; the caller is responsible for persisting or applying the returned content.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to export. Components are translated to provider-native resources; connections become security-group / firewall / IAM rules. | |
| format | No | Target output format. Values: 'terraform' (HCL with provider blocks, 24 AWS / 11 GCP / 10 Azure resource types), 'cloudformation' (YAML template with Parameters/Outputs), 'mermaid' (tier-grouped flowchart), 'd2' (D2 diagram), 'sbom' (CycloneDX 1.5 service bill of materials), 'aibom' (OWASP AI bill of materials), 'compliance' (audit-ready markdown report). | terraform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fully discloses behavior: pure computation, no LLM/network, does not write files or deploy, and details about sensitive value handling. No contradictions.
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?
Well-structured with purpose, return value details, behavioral notes, and usage guideline. Each sentence adds value; no unnecessary 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?
Given two well-documented parameters, no output schema but description covers return structure, usage, and behavior. Complete enough for agent to select and invoke correctly.
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 100% with detailed parameter descriptions. Description adds context about return format ('Returns {'format': str, 'content': str}') and guarantees (no hardcoded credentials), providing value beyond schema.
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?
Clearly states the tool exports an architecture spec to multiple formats (Terraform, CloudFormation, Mermaid, etc.). Distinguishes from sibling tools like design_architecture and modify_architecture.
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?
Explicitly provides when-to-use guidance: 'You have a finalized ArchSpec and need IaC code, a diagram, or an audit artifact.' Also advises calling once per format for multi-format export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lint_architectureA
Lint an architecture for anti-patterns and best-practice violations.
Returns a list of warnings with rule name, severity (error / warning), component IDs involved, and a human-readable message.
Errors (production-blocking): unencrypted data stores, single-AZ databases, missing load balancer on public compute, public databases, single point of failure. Warnings (review-worthy): oversized instances (16xlarge+), missing WAF, missing monitoring, missing backups, missing auth.
When to use vs security_scan: lint is about architectural hygiene
(is this a sane shape?). security_scan is about threat exposure
(can an attacker reach X?). Use both for comprehensive review.
Behavior: Pure computation — no LLM, no network. Does not touch cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to lint. Runs 10 anti-pattern checks covering encryption, redundancy, load balancing, auth presence, and resource sizing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it's pure computation with no LLM, no network, and no cloud interaction. Lists specific checks (errors and warnings) beyond what annotations (none) provide.
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?
Well-structured: uses bullet points for error/warning categories and a separate paragraph for usage guidance. Every sentence is informative and no redundant text.
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?
Given the single parameter and presence of output schema, the description fully explains the tool's behavior, inputs, and outputs. No gaps identified.
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?
Only one parameter 'spec_json' with 100% schema description coverage. The schema already explains its purpose and what checks it runs. The main description adds no further parameter detail, so baseline 3 is appropriate.
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?
Clearly states it lints architecture for anti-patterns and best-practice violations. Distinguishes itself from sibling 'security_scan' by specifying its focus on architectural hygiene.
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?
Explicitly compares with 'security_scan', defining when to use each and recommending both for comprehensive review. Provides clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesA
List all cloud services supported for a given provider.
Returns one entry per service with its slug, human-readable name, category
(compute / database / storage / networking / etc.), and supported tiers.
Use this to discover valid service: keys when hand-authoring ArchSpecs
or mapping requirements to services.
Behavior: Pure lookup from the bundled service registry — no LLM, no network, no cloud access.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Cloud provider slug. Values: 'aws' (47 services), 'gcp' (25), 'azure' (28), 'databricks'. | aws |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses behavior: pure local lookup with no LLM, network, or cloud access. This addresses potential concerns about side effects, latency, or dependencies.
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?
Four succinct sentences: purpose, output details, usage guidance, behavior. No wasted words, front-loaded with key 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?
Given the tool's simplicity (one optional parameter, output schema exists), the description covers all necessary context: what it returns, when to use it, and how it behaves. No gaps remain.
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?
With 100% schema coverage, the description adds value by connecting the parameter to the use case of discovering service keys. It doesn't repeat schema details but reinforces the tool's purpose.
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 clearly states the tool lists all cloud services for a provider, specifying return fields like slug, name, category, and tiers. It distinguishes itself from sibling tools (e.g., design_architecture, estimate_cost) by being a pure lookup tool.
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 description explicitly advises using the tool to discover valid service keys for ArchSpecs or requirement mapping, providing clear context. It could be improved by mentioning when not to use it, but the use case is well articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_architectureA
Modify an existing architecture with a natural-language instruction.
When to use: You already have an ArchSpec and want to evolve it (add a
cache, swap a service, change a region). Returns the updated ArchSpec.
For from-scratch design, use design_architecture. For iterative
multi-turn editing with conversation memory, use chat_create_session.
Behavior: Calls an LLM provider — incurs API costs. Pure function: returns a new spec without mutating the input. Does not deploy.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | Existing ArchSpec as a dict (typically the output of a prior `design_architecture`, `modify_architecture`, or `chat_send` call). Must contain 'name', 'provider', 'components', and 'connections' keys. | |
| instruction | Yes | Plain-English modification instruction. The LLM interprets it and produces a new ArchSpec with components added, removed, or reconfigured. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: 'Calls an LLM provider — incurs API costs. Pure function: returns a new spec without mutating the input. Does not deploy.' This informs the agent of side effects and safety.
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 description is six sentences, well-organized with labeled sections ('When to use', 'Behavior'). Every sentence adds essential information; no redundancy or filler.
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?
Given the tool has 2 parameters, no output schema, and no annotations, the description covers purpose, usage, behavior, and return value ('Returns the updated ArchSpec'). It is self-contained and sufficient for correct invocation.
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?
Input schema has 100% coverage with descriptions and examples for both parameters. The description adds value by stating that 'spec_json' is typically the output of prior tool calls and must contain specific keys, which aids agent understanding beyond the schema.
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 clearly states the tool modifies an existing architecture with natural-language instruction. It specifies the resource (existing ArchSpec) and verb (modify). It also distinguishes from siblings: for from-scratch use 'design_architecture', for multi-turn editing use 'chat_create_session'.
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?
Explicit when-to-use: 'You already have an ArchSpec and want to evolve it.' Explicit alternatives: 'For from-scratch design, use design_architecture. For iterative multi-turn editing..., use chat_create_session.' This leaves no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_terraformA
Scan Terraform HCL source for security misconfigurations.
Returns findings (severity-graded) tied to specific resource blocks — e.g.
aws_s3_bucket with acl = public-read, aws_security_group with
cidr_blocks = 0.0.0.0/0 on sensitive ports, aws_rds_instance with
storage_encrypted = false.
When to use: You have existing Terraform code (not an ArchSpec) and want
an immediate security audit. For ArchSpec-level audit, use security_scan.
Behavior: Pure computation — no LLM, no network. Does not run Terraform or touch cloud. Safe for scanning untrusted HCL.
| Name | Required | Description | Default |
|---|---|---|---|
| hcl_content | Yes | Raw Terraform HCL source code to scan. Typically the contents of a `main.tf` file or a concatenated module. The scanner parses resource blocks directly; no terraform binary is invoked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool is pure computation with no LLM, no network, does not run Terraform or touch cloud, and is safe for scanning untrusted HCL. No contradiction with annotations.
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?
Description is well-structured: first sentence states purpose, then examples, when-to-use, and behavior. Every sentence adds value, no fluff. Length appropriate for the information conveyed.
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?
Tool has one parameter and is security-related. Description covers purpose, usage, behavior, and parameter details. Mentions output (severity-graded findings on resource blocks). Complete for this complexity level.
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 100%, so baseline is 3. Description adds significant value by explaining the parameter is raw HCL source code, typical usage (main.tf), and how the scanner works (parses directly, no terraform binary). Just above baseline.
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?
Description clearly states it scans Terraform HCL for security misconfigurations, using specific verb 'scan' and resource 'Terraform HCL'. It distinguishes itself from sibling tool security_scan which is for ArchSpec-level audit.
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?
Explicit 'When to use' section specifies to use this tool when you have existing Terraform code (not an ArchSpec) for an immediate security audit, and directs to security_scan for ArchSpec-level audit. Provides clear context and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_architectureA
Score an architecture across reliability, security, cost, compliance, and complexity.
Returns the dimension scores, overall weighted score (0-100), letter grade, and per-dimension notes. Weights: Reliability 30% (load balancing, multi-AZ, auto-scaling, CDN, caching), Security 25% (WAF, auth, encryption, HTTPS, DNS), Cost Efficiency 20% (budget compliance, free- tier usage), Compliance 15% (framework validation), Complexity 10% (component count, connection density, tier separation).
When to use: You want a quick quality summary before a design review.
For specific findings, use lint_architecture, security_scan, or
validate_compliance.
Behavior: Pure computation — no LLM, no network. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to score. Scorer evaluates across five weighted dimensions and returns an overall 0-100 score with a letter grade (A/B/C/D/F). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly states behavior as 'Pure computation — no LLM, no network. Read-only.' This fully compensates for missing annotations and discloses that the tool is safe and non-destructive.
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 description is concise with no redundant sentences. Front-loaded with the core action, followed by return details, usage context, and behavioral note.
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?
Despite having no output schema, the description sufficiently explains return values (dimension scores, overall score, letter grade, notes) and covers weights and dimension details. Complete for a simple scoring 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 100% with a description for the single parameter. The tool description adds context about scoring dimensions but does not elaborate on the parameter's structure beyond what the schema already provides.
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 clearly states the tool scores an architecture across five dimensions and returns a weighted score, letter grade, and notes. It distinguishes from siblings by specifying when to use and listing alternatives for specific findings.
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?
Explicitly says when to use ('quick quality summary before a design review') and provides exclusions ('For specific findings, use lint_architecture, security_scan, or validate_compliance').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_scanA
Scan an architecture for security anti-patterns and misconfigurations.
Returns a structured report with severity-graded findings (critical / high
/ medium / low / info), each tied to specific component IDs. Framework-
agnostic — use validate_compliance for specific regulatory frameworks.
Checks include: unencrypted data stores, public-facing databases, missing WAF on public HTTP endpoints, weak auth on APIs, SPOFs, overly permissive connection protocols.
Behavior: Pure computation — no LLM, no network. Does not touch cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to scan. The scanner inspects component configs, connection protocols, encryption flags, exposure boundaries, and auth presence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it is pure computation with no network or cloud access, though read-only nature could be explicitly stated.
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?
Concise, front-loaded, and well-structured with no unnecessary 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?
Comprehensive description covering input, output, scope, behavioral constraints, and relationship to sibling tools despite lacking output schema.
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 provides 100% coverage for the single parameter, and description adds context on what the scanner inspects, enhancing understanding.
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 clearly states the tool scans architecture for security anti-patterns, lists example checks, and distinguishes from validate_compliance.
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?
Explicitly directs users to use validate_compliance for specific regulatory frameworks, providing clear guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_complianceA
Validate an architecture against compliance frameworks.
Returns one result object per framework with pass/fail status per check, evidence (which components triggered the rule), and remediation hints.
When to use: You have a proposed architecture and need to know whether
it satisfies HIPAA / PCI-DSS / SOC 2 / FedRAMP / GDPR before proceeding.
Use security_scan for anti-pattern detection (weak auth, public
buckets, etc.) which is framework-agnostic.
Behavior: Pure computation — no LLM, no network. Evaluates the spec statically against 30+ rules. Does not access or modify any cloud resources.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_json | Yes | ArchSpec to validate. Checks are run against the declared components, connections, and provider settings — no cloud API access required. | |
| frameworks | Yes | List of compliance framework slugs to validate against. Each framework runs 5-7 checks (encryption, logging, access control, etc.). Values: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'. | |
| well_architected | No | When True, additionally runs the AWS Well-Architected Framework pillar checks (multi-AZ, auto-scaling, backup, monitoring, SPOF detection, cost optimization). Independent of the `frameworks` list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It details behavior: pure computation, no LLM/network, static evaluation against 30+ rules, no cloud resource access. This fully informs the agent about safety and side effects.
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?
Well-structured with clear sections (purpose, return value, usage, behavior). Every sentence is necessary and concise, no fluff.
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?
Even without viewing output schema, the description explains return format (one result per framework with pass/fail, evidence, remediation hints). Combined with behavior and usage guidelines, it provides full context for correct invocation.
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 has 100% description coverage. The description adds practical context: spec_json is the architecture to validate, frameworks are slugs each with 5-7 checks, well_architected runs additional independent checks. This integrates schema info meaningfully.
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 clearly states the tool validates an architecture against compliance frameworks, specifying verb and resource. It distinguishes itself from sibling tool security_scan by noting the latter is for framework-agnostic anti-pattern detection.
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?
Explicit 'When to use' section describes scenarios (verifying HIPAA/PCI-DSS/etc. compliance before proceeding) and suggests an alternative (security_scan for anti-patterns).
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. Dates show when Glama detected each change.
18 tool updates
v0.1.1- Changed
analyze_blast_radius3 fields changed- added
Input schema / properties / component_id / descriptionAdded value: +"Optional: focus analysis on a single component's blast radius (its direct dependents + transitive dependents). When omitted, returns blast-radius metrics for every component." - added
Input schema / properties / component_id / examplesAdded value: +[ + "api_gateway", + "rds_primary", + null +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to analyze. Builds a directed dependency graph from the spec's connections and computes reachability per component."
- Changed
catalog_search10 fields changed- added
Input schema / properties / max_price_per_hour / descriptionAdded value: +"Optional maximum hourly on-demand price (USD). Returns only instances at or below this price. Useful for budget-constrained sizing." - added
Input schema / properties / max_price_per_hour / examplesAdded value: +[ + 0.1, + 0.5, + 2 +] - added
Input schema / properties / memory_gb / descriptionAdded value: +"Optional exact memory-in-GB filter. Returns instances matching this memory size." - added
Input schema / properties / memory_gb / examplesAdded value: +[ + 8, + 16, + 32, + 64 +] - added
Input schema / properties / provider / descriptionAdded value: +"Cloud provider slug to search within. Default 'aws'." - added
Input schema / properties / provider / examplesAdded value: +[ + "aws", + "gcp", + "azure" +] - added
Input schema / properties / query / descriptionAdded value: +"Optional free-text query matching instance family, generation, or purpose (e.g. 'memory-optimized', 'graviton', 'gpu')." - added
Input schema / properties / query / examplesAdded value: +[ + "memory-optimized", + "graviton", + "gpu" +] - added
Input schema / properties / vcpus / descriptionAdded value: +"Optional exact vCPU count filter. Returns instances matching this vCPU count." - added
Input schema / properties / vcpus / examplesAdded value: +[ + 4, + 8, + 16, + 32 +]
- Changed
chat_create_session6 fields changed- added
Input schema / properties / budget_monthly / descriptionAdded value: +"Optional monthly budget cap (USD). Applied across all design turns within the session — the architect will bias toward fitting under it." - added
Input schema / properties / budget_monthly / examplesAdded value: +[ + 2000, + 5000, + 10000 +] - added
Input schema / properties / compliance / descriptionAdded value: +"Optional compliance frameworks enforced across the session's design turns. Values: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'." - added
Input schema / properties / compliance / examplesAdded value: +[ + [ + "hipaa" + ], + [ + "soc2", + "gdpr" + ] +] - added
Input schema / properties / provider / descriptionAdded value: +"Default cloud provider for the session. Every subsequent `chat_send` within this session uses this provider unless overridden in the message." - added
Input schema / properties / provider / examplesAdded value: +[ + "aws", + "gcp", + "azure", + "databricks" +]
- Changed
chat_delete_session1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"Session handle to delete. If the session doesn't exist, the tool returns `{'error': ...}` and does nothing."
- Changed
chat_send3 fields changed- added
Input schema / properties / message / descriptionAdded value: +"User message for this conversation turn. Can be a design request, a modification instruction, a question about the current spec, or meta-commands (e.g. 'show me the cost')." - added
Input schema / properties / message / examplesAdded value: +[ + "Design a 3-tier web app with PostgreSQL", + "Add a Redis cache in front of the database", + "What's the monthly cost?" +] - added
Input schema / properties / session_id / descriptionAdded value: +"Session handle returned by `chat_create_session`. Must reference an existing session; otherwise the tool returns `{'error': ...}`."
- Changed
compare_provider_costs3 fields changed- added
Input schema / properties / providers / descriptionAdded value: +"List of cloud providers to compare pricing across. Values: 'aws', 'gcp', 'azure', 'databricks'." - added
Input schema / properties / providers / examplesAdded value: +[ + [ + "aws", + "gcp", + "azure" + ], + [ + "aws", + "gcp" + ] +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to cost across providers. Services are mapped to cross-cloud equivalents (ec2 <-> compute_engine <-> virtual_machines, etc.) before pricing."
- Changed
compare_providers3 fields changed- added
Input schema / properties / providers / descriptionAdded value: +"List of target provider slugs to compare against. Values: 'aws', 'gcp', 'azure', 'databricks'. Returns one result per target." - added
Input schema / properties / providers / examplesAdded value: +[ + [ + "gcp", + "azure" + ], + [ + "aws", + "gcp" + ] +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to translate across providers. Original provider's services are mapped to equivalents on each target provider using 22 cross-cloud equivalence pairs (e.g. ec2 <-> compute_engine <-> virtual_machines)."
- Changed
design_architecture10 fields changed- added
Input schema / properties / budget_monthly / descriptionAdded value: +"Optional monthly budget cap in USD. When set, the architect biases toward instance tiers and managed services that fit under this cap." - added
Input schema / properties / budget_monthly / examplesAdded value: +[ + 2000, + 5000, + 10000 +] - added
Input schema / properties / compliance / descriptionAdded value: +"Optional list of compliance frameworks the architecture must satisfy. Values from: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'. Influences service selection (e.g. BAA-eligible services for HIPAA, FIPS-compliant services for FedRAMP) and encryption defaults." - added
Input schema / properties / compliance / examplesAdded value: +[ + [ + "hipaa" + ], + [ + "soc2", + "gdpr" + ], + [ + "fedramp" + ] +] - added
Input schema / properties / description / descriptionAdded value: +"Plain-English description of the system to design. Include workload type (e.g. 'HIPAA-compliant 3-tier healthcare API'), traffic expectations, and any stack preferences. The LLM uses this to select services, tiers, and connections." - added
Input schema / properties / description / examplesAdded value: +[ + "HIPAA-compliant 3-tier web app on AWS with PostgreSQL", + "Serverless data pipeline on GCP with Pub/Sub, Dataflow, and BigQuery" +] - added
Input schema / properties / provider / descriptionAdded value: +"Target cloud provider for the generated architecture. Values: 'aws', 'gcp', 'azure', 'databricks'. Default 'aws'." - added
Input schema / properties / provider / examplesAdded value: +[ + "aws", + "gcp", + "azure", + "databricks" +] - added
Input schema / properties / region / descriptionAdded value: +"Cloud region for the generated architecture (e.g. 'us-east-1' for AWS, 'us-central1' for GCP, 'eastus' for Azure). Used to set region-aware pricing and compliance constraints (e.g. FedRAMP requires US regions)." - added
Input schema / properties / region / examplesAdded value: +[ + "us-east-1", + "us-central1", + "eastus", + "eu-west-1" +]
- Changed
diff_architectures2 fields changed- added
Input schema / properties / new_spec_json / descriptionAdded value: +"Proposed ArchSpec (target). Typically the version about to be deployed." - added
Input schema / properties / old_spec_json / descriptionAdded value: +"Previous ArchSpec (baseline). Typically the last deployed version."
- Changed
estimate_cost3 fields changed- added
Input schema / properties / pricing_tier / descriptionAdded value: +"Pricing tier multiplier applied to compute and data-store components. Values: 'on_demand' (1.0x), 'reserved_1yr' (0.6x), 'reserved_3yr' (0.4x), 'spot' (0.3x)." - added
Input schema / properties / pricing_tier / examplesAdded value: +[ + "on_demand", + "reserved_1yr", + "reserved_3yr", + "spot" +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to price. Pricing is resolved per-component against a bundled SQLite catalog (no network calls), with formula dispatch for serverless/managed services and a static fallback for rare ones."
- Changed
export_architecture3 fields changed- added
Input schema / properties / format / descriptionAdded value: +"Target output format. Values: 'terraform' (HCL with provider blocks, 24 AWS / 11 GCP / 10 Azure resource types), 'cloudformation' (YAML template with Parameters/Outputs), 'mermaid' (tier-grouped flowchart), 'd2' (D2 diagram), 'sbom' (CycloneDX 1.5 service bill of materials), 'aibom' (OWASP AI bill of materials), 'compliance' (audit-ready markdown report)." - added
Input schema / properties / format / examplesAdded value: +[ + "terraform", + "cloudformation", + "mermaid", + "d2", + "sbom" +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to export. Components are translated to provider-native resources; connections become security-group / firewall / IAM rules."
- Changed
lint_architecture1 field changed- added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to lint. Runs 10 anti-pattern checks covering encryption, redundancy, load balancing, auth presence, and resource sizing."
- Changed
list_services2 fields changed- added
Input schema / properties / provider / descriptionAdded value: +"Cloud provider slug. Values: 'aws' (47 services), 'gcp' (25), 'azure' (28), 'databricks'." - added
Input schema / properties / provider / examplesAdded value: +[ + "aws", + "gcp", + "azure", + "databricks" +]
- Changed
modify_architecture3 fields changed- added
Input schema / properties / instruction / descriptionAdded value: +"Plain-English modification instruction. The LLM interprets it and produces a new ArchSpec with components added, removed, or reconfigured." - added
Input schema / properties / instruction / examplesAdded value: +[ + "Add a Redis cache between the API and the database", + "Replace RDS PostgreSQL with Aurora Serverless v2", + "Move the compute tier from ECS to Lambda" +] - added
Input schema / properties / spec_json / descriptionAdded value: +"Existing ArchSpec as a dict (typically the output of a prior `design_architecture`, `modify_architecture`, or `chat_send` call). Must contain 'name', 'provider', 'components', and 'connections' keys."
- Changed
scan_terraform1 field changed- added
Input schema / properties / hcl_content / descriptionAdded value: +"Raw Terraform HCL source code to scan. Typically the contents of a `main.tf` file or a concatenated module. The scanner parses resource blocks directly; no terraform binary is invoked."
- Changed
score_architecture1 field changed- added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to score. Scorer evaluates across five weighted dimensions and returns an overall 0-100 score with a letter grade (A/B/C/D/F)."
- Changed
security_scan1 field changed- added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to scan. The scanner inspects component configs, connection protocols, encryption flags, exposure boundaries, and auth presence."
- Changed
validate_compliance4 fields changed- added
Input schema / properties / frameworks / descriptionAdded value: +"List of compliance framework slugs to validate against. Each framework runs 5-7 checks (encryption, logging, access control, etc.). Values: 'hipaa', 'pci-dss', 'soc2', 'fedramp', 'gdpr'." - added
Input schema / properties / frameworks / examplesAdded value: +[ + [ + "hipaa" + ], + [ + "soc2", + "pci-dss" + ], + [ + "fedramp", + "gdpr" + ] +] - added
Input schema / properties / spec_json / descriptionAdded value: +"ArchSpec to validate. Checks are run against the declared components, connections, and provider settings — no cloud API access required." - added
Input schema / properties / well_architected / descriptionAdded value: +"When True, additionally runs the AWS Well-Architected Framework pillar checks (multi-AZ, auto-scaling, backup, monitoring, SPOF detection, cost optimization). Independent of the `frameworks` list."
19 tool updates
v0.1.0- First observed
analyze_blast_radius - First observed
catalog_search - First observed
chat_create_session - First observed
chat_delete_session - First observed
chat_list_sessions - First observed
chat_send - First observed
compare_provider_costs - First observed
compare_providers - First observed
design_architecture - First observed
diff_architectures - First observed
estimate_cost - First observed
export_architecture - First observed
lint_architecture - First observed
list_services - First observed
modify_architecture - First observed
scan_terraform - First observed
score_architecture - First observed
security_scan - First observed
validate_compliance
TDQS
Each tool has a clearly distinct purpose with comprehensive 'When to use' sections that explicitly contrast with similar tools. For example, compare_providers vs compare_provider_costs, design_architecture vs modify_architecture vs chat sessions are all well-differentiated.
All 18 tools follow a consistent verb_noun pattern in lowercase snake_case (e.g., design_architecture, chat_create_session, validate_compliance). No deviations or mixed styles.
18 tools is well-scoped for a cloud architecture server, covering design, modification, chat, cost, comparison, scanning, compliance, export, and search without being overwhelming or sparse.
The tool surface covers the full lifecycle of cloud architecture analysis and design: greenfield design, iterative modification, multi-turn conversation, cost estimation, multi-provider comparison, security scanning, compliance validation, blast radius analysis, diffing, and IaC export. No obvious gaps for its stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Designs, prices, and deploys AWS/GCP cloud infrastructure from plain-English requirements.
Unified API to query AWS, GCP, Azure and generate Terraform/CLI execution kits for AI agents.
Compare, estimate, and deploy cloud infrastructure across AWS, GCP, and Azure for AI agents.
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to visualize cloud architecture diagrams, generate and import Terraform HCL, and manage infrastructure resources directly from chat through the CloudForge platform.1846MIT
- AlicenseAqualityCmaintenanceAI infrastructure design agent. Describe your app in plain English; Riley designs, prices, and deploys AWS or GCP infrastructure with generated Terraform.24Apache 2.0

Synlake MCP Serverofficial
AlicenseAqualityDmaintenanceEnables AI agents to discover, evaluate, and provision cloud infrastructure across AWS, GCP, and Azure with cross-cloud normalization, cost comparisons, and deployable execution kits.517MIT- AlicenseNot gradedqualityBmaintenanceEnables LLMs to model, validate, and analyze multi-cloud infrastructure as a typed graph, with tools for IaC import/export, cost estimation, and architecture review.557Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xmpuspus/cloudwright'
If you have feedback or need assistance with the MCP directory API, please join our Discord server