MCP server playground with AINativeKit widgets for ChatGPT Apps
This server demonstrates good foundational quality with three well-named tools, proper schema definitions, and solid descriptions. All tools follow verb-noun naming conventions (get-weather, get-products, get-product-by-id). Input schemas are properly defined using Zod with type information and parameter descriptions. Tool annotations (readOnlyHint, openWorldHint, destructiveHint) are correctly applied. However, output schemas are not formally documented in the tool definitions, responses are returned as untyped structuredContent/content arrays without schema documentation. Error handling is present but minimal, returning only error messages without guidance on recovery steps. Parameter descriptions are adequate but lack constraint details (e.g., perPage defaults, search term format). Composition is clean, each tool has one clear responsibility.
Get detailed information about a specific product by its ID
Get a list of products from the WooCommerce store
Get current weather information for a city
Output schemas not documented. Tool responses return structuredContent and _meta fields but no formal schema definition exists for what fields downstream tools or LLMs should expect. This forces LLMs to infer response structure from trial.
Parameter descriptions lack constraint details. For example, 'perPage' parameter has no specified min/max range, default value behavior, or practical limits. Description should state 'Number of products to return (default: 10, max: 100).'
Error handling lacks recovery guidance. When fetchWeather or fetchProducts fails, the tool returns an error message but does not tell the LLM what to do next (e.g., 'Try with a different city name' or 'Check that WOOCOMMERCE_URL is configured').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 66 | - | v1 |
Tool descriptions lack context on when to use versus alternatives. 'Get a list of products' does not explain whether to use get-products with search, get-products with category, or get-product-by-id when the product ID is known.
No pagination metadata documented. get-products accepts perPage but there is no documentation of what happens when results exceed the limit, whether next_cursor or total_count is returned, or how to fetch subsequent pages.