> ## Documentation Index
> Fetch the complete documentation index at: https://mcpjam-mintlify-docs-update-pr-3762-1786137034119.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Enable, repoint, or disable a suite's schedule

> A schedule fires exactly ONE run per interval, so an environment-based suite must pin exactly one of its attached environments. Omitting `environmentId` on a single-environment suite means that environment; omitting it on a multi-environment suite is a VALIDATION_ERROR. Disabling preserves the existing pin. Responds with the full updated suite.



## OpenAPI

````yaml /reference/openapi.json patch /projects/{projectId}/eval-suites/{suiteId}/schedule
openapi: 3.1.0
info:
  title: MCPJam API
  version: 1.0.0-preview
  description: >-
    Programmatic access to MCP servers saved in your MCPJam projects — live
    diagnostics (validate, inspect, export) and operations: call tools, render
    prompts, run eval suites asynchronously and poll their results, and import
    OAuth tokens.


    **The API is in preview**: the surface may change while we finish the
    design. Error `code` values are stable; error `message` strings are not.
    Write clients that ignore unknown response fields.
  contact:
    name: MCPJam
    url: https://github.com/MCPJam/inspector/issues
servers:
  - url: https://app.mcpjam.com/api/v1
    description: Hosted MCPJam
security:
  - bearerAuth: []
tags:
  - name: Hosts
    description: >-
      Project hosts: named model + capability profiles you run chats and eval
      suites against.
  - name: Environments
    description: >-
      Project environments: named, live-editable execution bundles (one host, an
      optional standalone server group, optionally pinned skills and plugin
      versions) that eval suites and journeys run against. Distinct from Sandbox
      images, which are Computer base images. Reads require project membership;
      every write requires project admin.
  - name: Sandbox images
    description: >-
      Custom Computer images: a digest-pinned Dockerfile built into an immutable
      image your project's computers boot from.
  - name: Server diagnostics
    description: Connect-level health checks against a saved MCP server.
  - name: Primitives
    description: 'The server''s MCP primitives: tools, prompts, and resources.'
  - name: Export
    description: Full-server snapshots for diffing and CI.
  - name: Execution
    description: 'Run the server''s primitives: call tools, render prompts.'
  - name: Eval runs
    description: >-
      Asynchronous eval suite runs: create with 202, poll status, iterations,
      and traces.
  - name: OAuth
    description: 'Bring-your-own OAuth: import externally obtained tokens for a server.'
  - name: Chatboxes
    description: >-
      Read-only access to the chatboxes published from a project: listing,
      settings, attached servers, and share links.
  - name: Catalog
    description: >-
      Discover the resources the other routes operate on: your account,
      projects, servers, eval suites, and chat sessions.
  - name: Tunnels
    description: >-
      Relay tunnels that expose local MCP servers through a public URL,
      registered as first-class project servers (the `mcpjam tunnel` CLI flow).
  - name: Agent
    description: >-
      Headless agent turns over the public API: send a message history, the
      server runs one assistant turn with project-scoped workspace tools (eval
      reads + suite creation) on a pinned hosted model, and returns the reply
      plus created-resource references.
paths:
  /projects/{projectId}/eval-suites/{suiteId}/schedule:
    patch:
      tags:
        - Eval runs
      summary: Enable, repoint, or disable a suite's schedule
      description: >-
        A schedule fires exactly ONE run per interval, so an environment-based
        suite must pin exactly one of its attached environments. Omitting
        `environmentId` on a single-environment suite means that environment;
        omitting it on a multi-environment suite is a VALIDATION_ERROR.
        Disabling preserves the existing pin. Responds with the full updated
        suite.
      operationId: updateEvalSuiteSchedule
      parameters:
        - $ref: '#/components/parameters/projectId'
        - $ref: '#/components/parameters/suiteId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvalSuiteScheduleRequest'
      responses:
        '200':
          description: The updated suite.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvalSuiteDetail'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          $ref: '#/components/responses/ServerUnreachable'
components:
  parameters:
    projectId:
      name: projectId
      in: path
      required: true
      description: ID of the hosted project that contains the server.
      schema:
        type: string
    suiteId:
      name: suiteId
      in: path
      required: true
      description: Eval suite ID, as returned by `POST /eval-runs`.
      schema:
        type: string
  schemas:
    EvalSuiteScheduleRequest:
      type: object
      required:
        - enabled
      description: >-
        Enable, repoint, or disable a suite's recurring runs. Disabling
        PRESERVES the existing environment pin — send `enabled: true` with a new
        `environmentId` to repoint it.
      properties:
        enabled:
          type: boolean
        intervalMinutes:
          type: integer
          minimum: 5
          maximum: 10080
        environmentId:
          type: string
          minLength: 1
          description: >-
            Which attached environment scheduled runs use. Only meaningful when
            enabling. Omitted on a single-environment suite means that
            environment; omitted on a multi-environment suite is a
            VALIDATION_ERROR.
    EvalSuiteDetail:
      type: object
      required:
        - id
        - environment
        - hosts
        - environmentIds
        - settings
        - schedule
      description: >-
        One eval suite's full configuration. Distinct from the `EvalSuite`
        summary returned by the list route, which carries run rollups instead of
        settings.
      properties:
        id:
          type: string
        name:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        projectId:
          type:
            - string
            - 'null'
        environment:
          type: object
          description: >-
            LEGACY server bag, kept as rollback data. Unrelated to
            `environmentIds`.
          properties:
            servers:
              type: array
              items:
                type: string
        executionConfig:
          type:
            - object
            - 'null'
          properties:
            model:
              type: string
            systemPrompt:
              type: string
            temperature:
              type: number
        hosts:
          type: array
          items:
            type: object
            required:
              - id
              - name
            properties:
              id:
                type: string
              name:
                type: string
              servers:
                type: array
                items:
                  type: string
        environmentIds:
          type: array
          description: Attached project environments, in attach order.
          items:
            type: string
        settings:
          type: object
          properties:
            minimumAccuracy:
              type:
                - number
                - 'null'
              description: Minimum pass rate for the suite to count as passing.
            matchOptions:
              type:
                - object
                - 'null'
            checks:
              type: array
              items:
                type: object
            judge:
              type: object
              description: Goal-completion judge. Absent config reads as enabled.
              properties:
                enabled:
                  type: boolean
                model:
                  type:
                    - string
                    - 'null'
        schedule:
          $ref: '#/components/schemas/EvalSuiteSchedule'
        createdAt:
          type:
            - number
            - 'null'
          description: Epoch milliseconds.
        updatedAt:
          type:
            - number
            - 'null'
    EvalSuiteSchedule:
      type: object
      required:
        - enabled
      description: >-
        Recurring-run schedule. A schedule fires exactly ONE run, so an
        environment-based suite pins the environment it runs against.
      properties:
        enabled:
          type: boolean
        intervalMinutes:
          type:
            - integer
            - 'null'
          minimum: 5
          maximum: 10080
          description: Minutes between runs. 5 minutes to 7 days.
        environmentId:
          type:
            - string
            - 'null'
          description: >-
            The single attached environment scheduled runs use. Null on a legacy
            (non-environment) suite.
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: >-
            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.
          enum:
            - UNAUTHORIZED
            - FORBIDDEN
            - NOT_FOUND
            - CONFLICT
            - VALIDATION_ERROR
            - RATE_LIMITED
            - FEATURE_NOT_SUPPORTED
            - SERVER_UNREACHABLE
            - TIMEOUT
            - OAUTH_REQUIRED
            - INTERNAL_ERROR
        message:
          type: string
          description: >-
            Human-readable description. May change between releases — don't
            match on it.
        details:
          type: object
          description: Optional, unstructured context bag.
          additionalProperties: true
  responses:
    ValidationError:
      description: Malformed body or parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: VALIDATION_ERROR
            message: Invalid JSON body
    Unauthorized:
      description: >-
        Missing, invalid, revoked, or orphaned key (`UNAUTHORIZED`) — or the
        **target MCP server** needs an OAuth grant (`OAUTH_REQUIRED`), which is
        a property of the server, not your key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            badKey:
              summary: Invalid or revoked key
              value:
                code: UNAUTHORIZED
                message: Invalid API key
            oauthRequired:
              summary: Target server needs an OAuth grant
              value:
                code: OAUTH_REQUIRED
                message: Server requires OAuth authorization
    Forbidden:
      description: Key is valid but not allowed to do this.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: FORBIDDEN
            message: You do not have access to this project
    NotFound:
      description: Unknown project, server, or resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: NOT_FOUND
            message: Server not found
    Conflict:
      description: >-
        The resource is not in a state that accepts this write — a stale
        `expectedRevision`, a duplicate name, or an environment that cannot
        currently be launched. The request was well-formed; re-read the resource
        and retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: CONFLICT
            message: >-
              Environment changed since you loaded it (expected revision 3,
              current 5). Reload and retry.
    RateLimited:
      description: >-
        Per-key rate limit exceeded (60 requests/minute sustained, bursts up to
        10). Honor `Retry-After` and back off with jitter.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: RATE_LIMITED
            message: API key rate limit exceeded. Slow down and retry.
    InternalError:
      description: Something failed on MCPJam's side.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: INTERNAL_ERROR
            message: Unexpected internal error
    ServerUnreachable:
      description: Could not connect to the target MCP server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: SERVER_UNREACHABLE
            message: Failed to connect to server
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        MCPJam API key (`sk_…`). Create one at [Settings → API
        keys](https://app.mcpjam.com/settings/api-keys). Guest sessions cannot
        use the API, and API keys cannot manage other API keys.

````