Get an upload URL for a run artifact
Retired. Every request answers 410 Gone with code: "FEATURE_NOT_SUPPORTED" and details.code: "SDK_UPGRADE_REQUIRED". @mcpjam/sdk 8.17.0 and later upload a run artifact by sending its bytes to POST /projects/{projectId}/eval-ingest/artifacts, which returns the storageId the run’s results reference. Upgrade the SDK if a report logs this answer.
The gateway passes the backend’s status and body through verbatim.
Authorizations
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
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.
1, 2 Path Parameters
Project id, or the literal default for the key org's Default project.
Body
Forwarded VERBATIM to the backend's eval-ingestion surface, which owns the schema. The projectId path segment always wins: it overwrites any projectId in the body, and the literal default omits it so the key's org Default project is used. Bodies are capped at ~6 MiB here and 5 MiB by the backend.
Response
Malformed body or parameters.
Stable, machine-readable error code. New codes may be added over time; treat unknown codes as non-retryable failures unless the HTTP status says otherwise.
UNAUTHORIZED, FORBIDDEN, NOT_FOUND, CONFLICT, VALIDATION_ERROR, RATE_LIMITED, FEATURE_NOT_SUPPORTED, SERVER_UNREACHABLE, TIMEOUT, OAUTH_REQUIRED, INTERNAL_ERROR Human-readable description. May change between releases — don't match on it.
Optional, unstructured context bag.

