MCP server exposing presidio-hardened-x402 pre-payment PII screening, policy, and replay-guard tools to autonomous agents.
Three tools with complete input schemas and descriptions, but descriptions are terse (10-60 chars) and lack actionable context. Tool names follow verb_noun pattern (screen_, check_) but descriptions don't explain WHEN to use each tool or what distinguishes them. Parameters are typed and described, but lack constraints (enums, ranges). No output schemas documented. Error handling is implicit (PolicyViolationError, ReplayDetectedError raised but not described in tool docs). Security-critical tools (check_payment_policy, check_payment_replay) record state but descriptions don't warn agents of side effects clearly enough.
Spending-policy gate (RECORDS spend on call)
Duplicate-payment gate (RECORDS fingerprint on call)
PII scan of payment metadata (no side effects)
Descriptions are too terse (10-60 chars) and lack actionable context. 'PII scan of payment metadata (no side effects)' doesn't explain when to call this vs the policy/replay tools, what PII types are detected, or what the agent should do with results.
No output schemas documented. LLMs cannot plan downstream actions or extract required fields (e.g., does screen_payment_metadata return detected entities, risk scores, or just pass/fail?).
State-modifying tools (check_payment_policy, check_payment_replay) record audit/fingerprint on every call but descriptions don't warn agents of side effects. Agents may not realize these are not idempotent and could cause duplicate records on retry.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Parameters lack constraints. 'entities' is an array of strings with no enum or format guidance. 'amount_usd' is a number with no min/max bounds, agents could pass negative or absurdly large values.
Error handling is implicit (exceptions raised but not documented in tool descriptions). Agents don't know what PolicyViolationError or ReplayDetectedError mean, what triggered them, or how to recover.