THE ULTIMATE CRITICFounding access — $249

Send the work. Handle the result.

Include the completed work, its requirements, and enough evidence to check it. TUC returns JSON your workflow can act on.

Try the handoff without a key

The public preview gate checks one sanitized text, code, or JSON file with fixed rules. It calls no external model, does not save the input or result, and exits 0 on pass, 1 on fail, or 2 when more evidence is required.

curl -fsSLO https://ultimate-critic.fly.dev/tuc-preview-gate.py
python tuc-preview-gate.py generated.py --type code --task "Review this generated code safely."

Download tuc-preview-gate.py. The public limit is 10,000 characters and five runs per minute. Do not submit credentials, secrets, private source, or sensitive customer data.

Connect an AI agent

Connect a Streamable HTTP MCP client directly to https://ultimate-critic.fly.dev/mcp. Supply the tenant key as a secret X-API-Key header for paid evaluation and usage tools; omit it for the no-key preview.

The standalone stdio alternative reads the tenant key from TUC_API_KEY; the key is never a tool argument.

curl -fsSLO https://ultimate-critic.fly.dev/tuc-mcp-server.py

Download the MCP server or open the setup guide.

1. Build the request

FieldPurpose
artifact_typeText, code, image, UI, game scene, JSON, or mixed.
artifactGenerated content, files, evidence, and builder metadata.
intentPrompt, requirements, constraints, and success criteria.
evaluation_profileDomain-specific judgment such as code review, factuality, visual design, or game scene.
rubricOptional criteria supplied by the account owner.
reference_materialsFacts or source material the artifact must respect.

Quote the package before submission

Founding access includes 1,000 review credits. Standard packages use 1 credit, extended packages use 5, and full packages use 10. Call the quote endpoint with the same request body; it does not run an evaluation, store the artifact, or consume credits.

quote = critic.quote_review_credits(payload)
print(quote["tier"], quote["credits"])
TierEncoded package boundaryCredits
StandardUp to 256 KiB, 8 files, no images1
ExtendedUp to 2 MiB, 16 files, 3 images5
FullUp to 8 MiB, 32 files, 8 images10

2. Python SDK

from sdks.python.ultimate_critic import UltimateCriticClient

critic = UltimateCriticClient(
    base_url="https://YOUR_TUC_HOST/api",
    api_key="YOUR_TENANT_KEY",
)

result = critic.evaluate({
    "artifact_type": "code",
    "artifact": {
        "content": generated_code,
        "metadata": {"builder_model": "your-builder-model"},
    },
    "intent": {
        "prompt": "Implement a safe division helper.",
        "requirements": ["Return a typed error for division by zero."],
        "constraints": ["Do not swallow exceptions."],
    },
    "domain": "software",
    "evaluation_profile": "code_review",
})

if result["overall"]["verdict"] != "pass":
    repair_agent(result["findings"])

3. REST

curl https://YOUR_TUC_HOST/api/v1/evaluate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_TENANT_KEY" \
  -d '{
    "artifact_type": "text",
    "artifact": {
      "content": "The generated artifact",
      "metadata": {"builder_model": "your-builder-model"}
    },
    "intent": {
      "prompt": "Write the requested artifact",
      "requirements": ["State the conclusion clearly"]
    },
    "domain": "general",
    "evaluation_profile": "general_quality"
  }'

4. Run it asynchronously

job = critic.queue_evaluation(
    payload,
    idempotency_key=f"{build_id}:{artifact_sha256}",
)

while job["status"] in {"queued", "running"}:
    job = critic.get_job(job["id"])

result = job["result"]

Reuse the idempotency key only when retrying the same request. A different payload with the same key returns an error.

5. Enforce the verdict

match result["overall"]["verdict"]:
    case "pass":
        release(result["evaluation_id"])
    case "fail":
        create_atomic_repairs(result["findings"])
    case "insufficient_evidence":
        request_more_evidence(result["metadata"]["evidence_issues"])

6. Check the repair

Create one repair for each finding. After the work changes, submit it again and attach the new evaluation to the repair. Verification requires a new passing result and any evidence requested by the finding.

ticket = critic.create_repair({
    "source_evaluation_id": result["evaluation_id"],
    "finding_id": result["findings"][0]["id"],
    "invariant": "The artifact must satisfy the stated requirement.",
    "observed_error": result["findings"][0]["title"],
    "likely_root_cause": "Builder omitted a required edge case.",
    "gap_kind": "COGNITION",
    "transformation": "Implement the missing edge-case behavior.",
    "verification_method": "Re-evaluate the repaired artifact.",
    "retry_limit": 3,
})