# Dry-run evaluate a guardrail

> Runs the full evaluation pipeline — the `class` expression, the guard, the context tool per `context_mode`, live `runtime.*` resolution — against caller-supplied `args` and `guardrail_context`, and returns the exact `guardrail_evaluation` record a real call would produce. Nothing executes, no approval item is filed, and no activity entry is written. This is the adoption path: preview a document's decisions against production-shaped calls before attaching it — or before editing a widely-attached one. Pass an optional `tool_id` to resolve `runtime.tool.*`.

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Dry-run evaluate a guardrail"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/api/v1/guardrails/{guardrail_id}/evaluate"}
  context={"endpoint"}
>
  
</MethodEndpoint>

Runs the full evaluation pipeline — the `class` expression, the guard, the context tool per `context_mode`, live `runtime.*` resolution — against caller-supplied `args` and `guardrail_context`, and returns the exact `guardrail_evaluation` record a real call would produce. Nothing executes, no approval item is filed, and no activity entry is written. This is the adoption path: preview a document's decisions against production-shaped calls before attaching it — or before editing a widely-attached one. Pass an optional `tool_id` to resolve `runtime.tool.*`.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
>
  <Translate id="theme.openapi.request.title">Request</Translate>
</Heading>

<ParamsDetails
  {...require("./evaluate-guardrail.ParamsDetails.json")}
>
  
</ParamsDetails>

<RequestSchema
  {...require("./evaluate-guardrail.RequestSchema.json")}
>
  
</RequestSchema>

<StatusCodes
  {...require("./evaluate-guardrail.StatusCodes.json")}
>
  
</StatusCodes>
