Skip to main content
POST
Waive a run gate

Authorizations

Authorization
string
header
required

MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.

Headers

x-mcpjam-eval-vocabulary
enum<string>

Which vocabulary this request and its response speak. Absent means 1, which is byte-for-byte today's contract: the same request fields, the same refusals, the same response projection. 2 is the canonical vocabulary. Any other value is a 400 with code: "VALIDATION_ERROR".

Today it decides one thing: the spelling of an evaluator's policy role. Vocabulary 1 accepts and returns gating; vocabulary 2 accepts both spellings and returns the canonical required. Sending required without the header is a 400, deliberately — vocabulary 1 is not widened to meet vocabulary 2 half way, because a boundary that accepts a spelling it does not announce is one two implementations can disagree about.

A response that varies by vocabulary sends Vary: x-mcpjam-eval-vocabulary.

Available options:
1,
2

Path Parameters

projectId
string
required

ID of the hosted project that contains the server.

runId
string
required

Eval run ID, as returned by POST /eval-runs.

Body

application/json
reason
string
required

Why the gate is being overridden. Non-blank, at most 500 characters, and THE RECORD of the decision. Stored unredacted for the life of the suite.

expiresAt
integer
required

When the waiver lapses, as epoch milliseconds. Must be in the future and at most 30 days out.

Response

The waiver was granted.

The result of granting or revoking a waiver. conflict and already_revoked are IDEMPOTENT no-op successes, not failures.

status
enum<string>
required

conflict — a waiver was already in force, and waiver is that EXISTING one rather than a second row. already_revoked — this waiver had already been revoked, and waiver reports the original revocation rather than restamping it, so the record of who actually ended it survives a second call.

Available options:
created,
conflict,
revoked,
already_revoked
republishedChecks
integer
required

GitHub Check Runs brought back in line by this write. A published check is a persisted verdict, not a live read, so 0 on a repository with checks connected means the status that gates the merge did not move.

waiver
object
required

An audited, time-boxed override of an eval run's release gate. A waiver never changes the run's own result — the run keeps its verdict and every surface that honors the waiver says so out loud, which is what makes "no silent waiver" checkable rather than promised.