MCP server exposing the PolyForge evidence ledger and completion gate over stdio (rmcp)
PolyForge MCP exposes 4 domain-specific tools for evidence ledger management with clear, verb-prefixed names (evidence_append, evidence_verify, gate_evaluate, gate_report). All tools have descriptions (50-150 chars) and input schemas with typed parameters. However, schemas lack output documentation, parameter descriptions are minimal (10-30 chars), and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Naming is strong; schema completeness and error recovery are weak.
Append a ModelClaim evidence entry to the ledger. kind must be 'ModelClaim'; ToolAttestation/Validation are rejected (models cannot self-verify).
Verify a ModelClaim by running an allowlisted tool and appending a ToolAttestation entry to the ledger.
Evaluate a completion gate: count evidence entries by state and report pass/fail against required states.
Generate a reproducible evidence bundle report for a task: list all entries, compute bundle SHA256, and report gate pass/fail.
No output schemas documented. LLMs cannot infer what fields gate_report or evidence_verify return, forcing guesswork on downstream tool chaining.
Parameter descriptions are too brief (10-30 chars). E.g., 'Task identifier' for task_id lacks context on format, length, or origin. LLMs cannot validate inputs without explicit constraints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). evidence_append and evidence_verify are clearly destructive/write operations; gate_evaluate and gate_report are read-only. Annotations would guide agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No error handling guidance. If evidence_verify fails (tool not allowlisted, claim_id invalid), the response lacks recovery hints. LLMs cannot self-correct without actionable error messages.
eval_metadata parameter in evidence_append is an untyped object. No schema for its internal structure; LLMs cannot know what fields to populate.