MCP server exposing OPA/Rego evaluation and an OpenID AuthZEN 1.0 PDP
Four tools with complete input schemas and strong descriptions (avg 180 chars). All parameters typed and described. Tool names are action-verb clear (evaluate_*, authzen_*). Output schemas documented via Go structs (evaluateOutput, batchOutput, discoverOutput). Error handling present but recovery guidance minimal. Composition is sound: evaluate_policy is read-only OPA evaluation; authzen_* tools delegate to external PDP. No security issues detected (no secrets in params). Main gaps: descriptions could be more prescriptive about when to use each tool vs alternatives; batch tool lacks explicit guidance on when to prefer it over sequential calls.
Read a PDP's /.well-known/authzen-configuration metadata document.
Ask an OpenID AuthZEN 1.0 Policy Decision Point whether a subject may perform an action on a resource. Use this when the answer has to come from the PDP that actually governs the system, rather than from a policy pasted into the conversation. Returns the PDP's decision and any context it attached.
Ask an OpenID AuthZEN 1.0 PDP for several decisions in one round trip (the Access Evaluations API). Use this to answer "which of these may the subject do" — filtering a list of resources, or checking every action on one resource — instead of calling authzen_evaluate in a loop. Top-level subject/action/resource/context act as defaults that each entry may override.
Evaluate a Rego policy module against an input document and optional data namespace. Runs in-process via OPA; no external service is contacted, and the built-ins that could contact one are disabled. Use this to author or debug a policy whose source you have. Returns the decision, whether the query was defined at all, the raw OPA result set, and any print() output.
authzen_evaluate_batch lacks explicit guidance on when to prefer batch over sequential calls. Description does not state token/latency savings or mention the maxBatchEvaluations=100 limit.
evaluate_policy description mentions 'Rego v1 syntax by default' and 'pre-OPA-1.0 policies' but does not explain when an LLM should choose this tool vs calling authzen_evaluate. No disambiguation guidance.
authzen_discover description is minimal (47 chars). Does not explain when to call it (e.g., 'Call this first to discover PDP capabilities before authzen_evaluate') or what the metadata reveals.
Error handling in tool_authzen.go not visible in provided source. No evidence of recovery guidance (e.g., 'PDP unreachable, check pdp_url and network') or error categorization (retryable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
Parameters 'subject', 'action', 'resource', 'context' in authzen tools accept JSON strings but descriptions do not validate format or provide schema examples. LLMs may pass invalid JSON.