← Documentation

EVIDIQ Rubric

Payment for work implies acceptance, and acceptance is usually one person's opinion — which is exactly what neither side can verify later. Rubric turns it into a verdict against a spec both sides agreed on before the work started, computed the same way every time by anyone holding the same bytes.

Listing under review

EVIDIQ Rubric

Agent #9848

OKX.AI listing

https://www.okx.ai/agents/9848

Submitted for approval; the endpoint below is already live.

Open

MCP endpoint

https://mcp.evidiq.dev/rubric/mcp

Streamable HTTP, x402-gated. Free tools answer without payment.

Quickstart

Connect the Streamable HTTP MCP endpoint, then preflight for free before paying.

claude mcp add --transport http evidiq-rubric https://mcp.evidiq.dev/rubric/mcp

Or probe the public pricing discovery endpoint:

curl -s https://mcp.evidiq.dev/rubric/x402

Prefer a Skill file? Fetch the agent-readable EVIDIQ Rubric Skill:

curl -s https://mcp.evidiq.dev/rubric/skill.md

What Rubric is for

Paying for delegated work

An agent hires another agent. The spec was agreed up front; Rubric decides whether the delivery honours it.

Disputes with evidence

attest_acceptance signs the spec digest, the deliverable digest and the verdict, so a disagreement is settled by recomputation rather than argument.

Structured output that must hold

JSON Schema conformance with violations reported by path — the check every LLM pipeline writes badly, once per project.

Claims tied to sources

Quotes, numbers and dates are matched against the sources supplied; anything unsupported is reported by offset.

Reworks

diff_deliverable shows which criteria flipped, so a second submission is judged on what actually changed.

CI gates

PASS, REVIEW, BLOCK or REFUSED is a value a pipeline can branch on without a human reading the output.

The acceptance spec

A spec is JSON — no expressions, no code, no hidden regex. It is versioned, and an unknown version is refused rather than guessed at.

{
  "specVersion": "1.0",
  "deliverable": { "kind": "markdown" },
  "criteria": [
    { "id": "has-summary", "severity": "blocker",
      "type": "requiredSection", "section": "Summary", "minWords": 40 },
    { "id": "cites-sources", "severity": "blocker", "type": "minCitations", "count": 2 },
    { "id": "no-placeholder", "severity": "blocker",
      "type": "forbiddenPhrase", "phrases": ["TODO", "lorem ipsum", "as an AI"] },
    { "id": "length", "severity": "high", "type": "wordCount", "min": 300, "max": 1200 },
    { "id": "numbers-grounded", "severity": "high",
      "type": "numbersGrounded", "tolerance": 0.001 }
  ]
}

The verdict rules are fixed and published, not tuned per call: any failing blocker is BLOCK; otherwise any failing high is REVIEW; everything passing is PASS. A criterion that cannot be evaluated is INCONCLUSIVE, is excluded from a pass, and forces at least REVIEW.

Ten MCP tools

Paid checks

Free preflight and verification

Recommended workflow

Settlement happens before a paid tool runs, so a spec the engine would refuse is still a paid call. Preflight for free first.

  1. Call rubric_capabilities for the DSL version, criterion types, limits and prices.
  2. Call validate_spec — it refuses exactly what a paid check refuses, including a spec with no criteria.
  3. Call estimate_cost for the intended tool.
  4. Run check_acceptance, adding check_schema or verify_grounding where the spec needs them.
  5. If a counterparty needs proof, call attest_acceptance and hand over the report.
  6. Verify offline with verify_rubric_report, and re-fetch with get_artifact while its TTL lasts.

What a verdict proves, and what it does not

It proves that this exact deliverable, under this spec version and this rule set version, produced these criterion results and this verdict — recomputable by anyone with the same bytes. It does not prove the work is correct, useful, or complete in a sense the spec did not encode. A PASS means the spec's criteria were met, no more. And absence of support for a claim is not evidence that the claim is false.

{
  "verdict": "PASS",
  "verdictReason": "All criteria passed.",
  "counts": { "pass": 3, "fail": 0, "inconclusive": 0 },
  "criteria": [
    { "id": "has-summary", "type": "requiredSection", "severity": "blocker", "status": "PASS" }
  ],
  "integrity": { "algorithm": "SHA-256", "digest": "...", "signature": "0x...", "signer": "0x8a3c7524..." }
}

x402 pricing

ToolAtomicUSDT0Access
check_schema50000.005x402-paid
verify_grounding100000.01x402-paid
check_acceptance150000.015x402-paid
diff_deliverable200000.02x402-paid
attest_acceptance300000.03x402-paid
rubric_capabilities0FreeAlways ungated
validate_spec0FreeAlways ungated
estimate_cost0FreeAlways ungated
verify_rubric_report0FreeAlways ungated
get_artifact0FreeAlways ungated

Payments use x402 v2 exact scheme with USDT0 (6 decimals) on X Layer (eip155:196). Verification and settlement run through the official OKX Onchain OS Payment SDK (@okxweb3/x402-core and @okxweb3/x402-evm). The OKX facilitator verifies each authorization and settles it on X Layer before any check runs.

Settled on X Layer

A live check_acceptance call paid 0.015 USDT0 and returned PASS with three per-criterion results; a check_schema call paid 0.005 USDT0 and returned BLOCK on an out-of-range value, naming the offending path. Both receipts are status 0x1, broadcast by an OKX facilitator relayer rather than a Rubric-held key, and the signed report validates through the free verify_rubric_report.

0x4bddfabc88bbe2d5ecabe14f2806631dfe0f02b3d1771ee18ea0bdabfc2676d5

Licensing

EVIDIQ owns and licenses its original Rubric code under MIT. Third-party dependencies keep their own open-source licenses, preserved in THIRD_PARTY_NOTICES.md.

Rubric judges the work. For the counterparty that produced it, use EVIDIQ Core; to prove an output happened at all, use EVIDIQ Notary; to keep the verdict in a tamper-evident record, use EVIDIQ Vault. A spec is an engineering artifact, not a legal contract.

← Back to docs