> ## Documentation Index
> Fetch the complete documentation index at: https://judged.systems/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# judged.systems

> Judge one support ticket and store a typed, inspectable result.

judged.systems judges **one support ticket** and returns a typed result. You map your own system onto the ticket. The engine asks a pack of independent questions, applies your thresholds, and stores the evaluation.

The result is `accept` or `review`. A person can label a review later. The label does not change the evaluation.

<Columns cols={2}>
  <Card title="Quickstart" icon="rocket" href="/docs/quickstart">
    Publish a pack and judge a ticket over REST.
  </Card>

  <Card title="Concepts" icon="book-open" href="/docs/guides/concepts">
    Ticket, pack, version, evaluation, and label.
  </Card>

  <Card title="Judge over REST" icon="square-terminal" href="/docs/guides/rest">
    `POST /api/judge` returns the stored evaluation.
  </Card>

  <Card title="MCP" icon="bot" href="/docs/guides/mcp">
    Judge a published pack from an MCP client.
  </Card>
</Columns>

## How a judgment runs

<Steps>
  <Step title="You send one ticket">
    `subject` and `customerMessage` are required. Earlier turns, metadata, and your own id are optional. See [Concepts](/docs/guides/concepts).
  </Step>

  <Step title="The ticket is redacted">
    Email addresses, phone numbers, and payment-like numbers are replaced before the ticket is stored and before the model sees it. See [Redaction](/docs/guides/redaction).
  </Step>

  <Step title="The model answers the pack">
    One evaluation call asks every question on the same ticket. Questions are `choice`, `score`, or `boolean`. They stay observational. Thresholds stay in the pack.
  </Step>

  <Step title="Code decides the result">
    Each question has a review rule. Any rule that fires, or a model failure, stores `review`. Otherwise the result is `accept`. See [Results](/docs/guides/results).
  </Step>

  <Step title="The evaluation is stored">
    The row keeps the pack version, the redacted ticket, the answers, the model id, usage, and latency. It is append-only.
  </Step>
</Steps>

## Four ways to call it

| Caller | Credential | Pack version |
| - | - | - |
| App, including [Playground](/docs/guides/playground) | Browser session | Draft or published |
| [REST](/docs/guides/rest) `POST /api/judge` | API key | Published |
| [MCP](/docs/guides/mcp) | OAuth access token | Published |
| [Inbound webhook](/docs/guides/webhooks) | API key | Published |

Simulations use the same published version. Create keys and the completion URL on [Integrations](/docs/guides/integrations).

## What you get back

A successful judge call returns the stored evaluation id, the pack version that ran, and the result:

```json theme={null}
{
  "evaluationId": "cm7evaluation",
  "packVersionId": "cm7version",
  "result": {
    "status": "review",
    "answers": {
      "department": {
        "type": "choice",
        "choice": "billing",
        "probabilities": { "billing": 0.91, "technical": 0.04, "account": 0.03, "other": 0.02 }
      },
      "refund_requested": { "type": "boolean", "probability": 0.96 }
    },
    "reviewReasons": ["urgency: score is in the review range"],
    "modelId": "typesafe-ai/jev",
    "latencyMs": 840
  }
}
```

`reviewReasons` names the question and the rule that fired. Read the full shape on [Judge a ticket](/docs/guides/rest).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.