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

# POST /v1/intent/evaluate

> The legacy pre-mandate policy path — a quick policy verdict without minting a mandate first.

The legacy pre-mandate policy path. Use this when you want a quick policy
verdict without minting a mandate first — handy for shadow-mode rollouts
before you've authored intent cards.

## Request

```http theme={"dark"}
POST /v1/intent/evaluate
Authorization: Bearer <INVIOLET_API_KEY>
Content-Type: application/json

{
  "user_id": "alice@example.com",
  "session_id": "sess_01J9X...",
  "conversation_id": "conv_01J9X...",
  "conversation_context": [
    { "role": "user", "content": "Look up Bob Smith." }
  ],
  "tool_call": {
    "name": "lookup_contact",
    "arguments": { "id": 42 }
  },
  "data_source_id": "ds_postgres_prod",
  "shadow_mode": false
}
```

## Response (200 OK)

```json theme={"dark"}
{
  "outcome": "allowed",
  "intent_label": "customer_support_lookup",
  "intent_class": "lookup",
  "confidence": 0.92,
  "grant": "...",
  "policy_id": "pol_...",
  "classification_evidence": {
    "classification_method": "llm",
    "evaluation_layers_consulted": ["lexical", "embedding", "llm"],
    "confidence": 0.92,
    "supporting_evidence": [...],
    "schema_version": 1
  }
}
```

## When to use this vs `/v1/mcp-proxy/call`

* **Use `/v1/intent/evaluate`** early in adoption — when you have policies but not yet intent cards, and you want shadow-mode observability without minting mandates.
* **Use `/v1/mcp-proxy/call`** once you've authored intent cards. The mandate-bound path gives you scope verification, confused-deputy detection, and the full response palette (substitute, redact, downgrade, defer, etc.).
