MCP server exposing PowerShell modules as tools, running on Azure Functions with .NET 8 runtime
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names lack action verbs (jwt_details, x509_details should be get_jwt_details, decode_x509_cert). Descriptions are present but minimal (avg 65 chars, below 194-char baseline). Parameter descriptions exist but lack format/constraint details. No documented output schemas. Error handling returns JSON but lacks recovery guidance. No tool annotations (readOnlyHint despite READ_ONLY risk classification).
Decode JWT access tokens with readable expiry time and signature details
Decode X509 certificates with expiry information and time to expiry
Tool names lack action verbs. 'jwt_details' and 'x509_details' should be 'get_jwt_details' and 'decode_x509_cert' to signal intent clearly to LLMs.
No output schema documented. LLMs cannot plan downstream calls or extract fields without knowing response structure (e.g., does jwt_details return 'expiry' or 'expiresAt'?).
Parameter descriptions lack format/constraint details. 'JWT token to decode' does not specify format (Bearer prefix? Raw JWT?). 'Base64 encoded X509 certificate' does not clarify PEM vs DER vs raw Base64.
Error responses lack recovery guidance. Returning {'error': 'Processing error: ...'} gives LLM no actionable next step. Should suggest 'Invalid certificate format. Ensure Base64 or PEM encoding.' or similar.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Tool annotations missing. Both tools are READ_ONLY (no state mutation) but lack readOnlyHint in schema. This prevents clients from optimizing caching or parallelization.