Vault dynamic-DB credential_issuer plugin for MCPG. Issues per-request database credentials via Vault's database secrets engine by mapping caller PluginIdentity to a Vault role per operator-configurable rules.
Two tools with clear names and risk classifications, but critical gaps in schema documentation and parameter descriptions. The 'issue' tool has a complex input schema with nested PluginIdentity type that is not formally documented in JSON Schema format. Parameter descriptions exist but lack actionable constraints (e.g., no validation rules for 'target' string format, no enum for identity_mapping modes). The 'revoke' tool is simpler but still lacks output schema documentation. No evidence of error handling guidance or recovery patterns. Tool descriptions are adequate (100-150 chars) but do not explain prerequisites, when to use each tool, or what happens on failure.
Issue per-request database credentials via Vault's database secrets engine. Maps caller PluginIdentity to a Vault role per operator-configurable rules and calls POST /v1/database/creds/<role>.
Revoke a database credential lease via Vault's lease revocation API. Calls PUT /v1/sys/leases/revoke with the lease_id.
Input schemas lack formal JSON Schema documentation. 'identity' parameter is typed as 'PluginIdentity' (a custom type) with no visible schema definition, type constraints, or required field list. 'config' parameter is typed as 'Value' (generic) with no structure. LLMs cannot infer valid input shapes.
Parameter descriptions lack actionable constraints. 'target' is described as 'Target name from operator configuration' but does not specify format, length limits, allowed characters, or validation rules. 'lease_id' has no format guidance.
No output schema documented for either tool. Callers cannot know what fields to expect from 'issue' (does it return lease_id, credentials, ttl?) or 'revoke' (success boolean, status string?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
No error handling guidance. Tool descriptions do not explain what happens on authorization failure, invalid role, Vault connectivity loss, or lease revocation failure. Per pattern:recovery-guide, error responses must tell the LLM what to do next.
Identity-derived role validation is implemented (identity_mapping.rs checks role names, prevents path traversal) but not surfaced in tool descriptions. LLMs cannot reason about when a role will be rejected or why. Security logic is invisible to callers.