AI-powered Adaptive Card generator — MCP server + npm library. Generates, validates, optimizes, templates, and transforms Adaptive Cards for Teams, Outlook, Copilot, and other hosts.
The Adaptive Cards MCP server defines 9 tools with complete JSON Schema input definitions and clear, actionable descriptions. Tool naming is consistent (verb_noun pattern: generate_card, validate_card, data_to_card, optimize_card, template_card, transform_card, suggest_layout, generate_and_validate, card_workflow). Descriptions are well-written (average 120-180 chars) and explain purpose, prerequisites, and return values. Parameters have proper type annotations (string, object, array, boolean) and enums for constrained inputs. However, output schemas are not documented in the tool definitions, the server does not explicitly specify what fields are returned by each tool. Error handling guidance is not visible in the provided source. The test shell script (test-mcp-tools.sh) demonstrates real-world scenarios but does not show server-side implementation details like error recovery patterns or response structure. Tool composition is excellent: tools are single-purpose, and chaining is supported via cardId references and the card_workflow composite tool.
Execute a multi-step card generation workflow in a single call. Chain together generation, validation, optimization, templating, and transformation steps.
Convert structured data (JSON array, CSV, key-value object) into the optimal Adaptive Card presentation.
Generate an Adaptive Card and immediately validate + optionally optimize it in a single call. Reduces tool-call overhead for common workflows.
Convert any content — natural language description, structured data, or a combination — into a valid Adaptive Card v1.6 JSON. Returns cardId for reference in subsequent tool calls.
Optimize an existing Adaptive Card. Accepts card JSON or a cardId.
Recommend the best Adaptive Card layout pattern for a given description.
Output schemas not documented. Tools define inputs thoroughly but do not expose what fields/structure clients should expect in responses. This forces LLMs to infer response structure, risking parsing errors and failed downstream tool chaining.
Error handling guidance missing from tool descriptions. No indication of what errors can occur, how to distinguish retryable from user-fixable errors, or recovery suggestions (e.g., 'if validation fails, call suggest_layout() to redesign').
template_card parameter 'dataShape' lacks type constraint. Defined as 'object' with no schema for the expected structure, no examples, and no description of what fields should be present. This invites invalid input from LLMs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | <=2025-11-25 | v2 |
Convert a static Adaptive Card into an Adaptive Card Template with ${expression} data binding.
Transform an Adaptive Card: upgrade/downgrade version, apply host-specific constraints, or flatten nesting.
Validate an Adaptive Card JSON against the v1.6 schema. Returns diagnostics with suggested fixes for each error. Accepts card JSON or a cardId from a previous tool call.
tool names 'generate_and_validate' and 'card_workflow' signal multiple responsibilities (pattern:tool violation). These are composite/workflow tools that bundle multiple operations. Consider offering a 'workflow execution' concept via a single tool that takes explicit step sequences.