AWS STS AssumeRole credential_issuer plugin for MCPG — per-caller temporary AWS credentials
Two tools with clear, detailed descriptions and well-structured input schemas. Tool naming follows verb_noun convention (issue, revoke). Descriptions are comprehensive (150-200 chars) and explain WHAT, WHEN, and consequences. Input schemas include typed parameters with descriptions. However, output schemas are not documented in the visible code, and error handling guidance is minimal. The 'revoke' tool's description acknowledges it's a no-op for STS, which is honest but raises questions about its utility. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present.
Issue temporary AWS credentials by assuming a configured IAM role via STS AssumeRole. Maps the caller's PluginIdentity to a target role ARN per operator-configurable rules (static, subject_id, from_role, or template-based). Returns access_key_id, secret_access_key, and session_token with TTL capped at the role's session duration and the operator's max_cache_ttl_ms.
Revoke a previously issued credential. This is a no-op for STS sessions because they cannot be individually revoked; they auto-expire. The cache eviction just drops the cached credential.
Output schemas not documented. Tool descriptions explain inputs but do not specify what fields are returned (access_key_id, secret_access_key, session_token, TTL). LLMs cannot plan downstream calls without knowing response structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The 'issue' tool is marked Risk=WRITE and 'revoke' is REVERSIBLE, but these are not exposed as structured annotations in the tool definition. LLMs cannot infer safety properties.
Error handling lacks recovery guidance. No documented error cases (e.g., 'identity not authorized', 'role ARN invalid', 'STS call failed'). Descriptions do not explain what to do if a call fails or how to retry.
'revoke' tool is documented as a no-op for STS (auto-expiring sessions cannot be revoked). This raises a composition concern: why expose a tool that does nothing? Consider removing it or clarifying its purpose in a credential lifecycle context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Parameter 'identity' is a complex object (PluginIdentity with 8+ fields). No guidance on which fields are required vs optional, or how the LLM should construct this object. Descriptions should clarify the minimal identity needed.