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

# Review route permission

> Compute a fresh read-only plan for one exact route and task envelope, returning all blockers or a signed plan with its source-bound controls and expiry. A plan grants no permission or spend consent.



## OpenAPI

````yaml /openapi/solverapi.openapi.json post /v1/model-inventory/plan
openapi: 3.1.0
info:
  description: >-
    Run approved AI models under data, cost, and time limits. A cost limit can
    stop another provider call after recorded spend reaches the limit; it cannot
    reverse a call already in progress. Each finished run returns a receipt
    naming the selected model and provider without including the prompt or model
    output. Use the model catalog for what your organization can run now.
    Provider secrets never appear in API requests or responses. Retry a mutation
    with the same Idempotency-Key and the same request body.
  title: Millwork API
  version: 1.0.0
servers:
  - url: https://api.getmillwork.dev
security: []
tags:
  - description: >-
      Submit work, check its status, cancel it, and read the result. The API
      calls each run an execution.
    name: Runs
  - description: >-
      Register an asynchronous coding agent and manage its repository-bound
      credentials.
    name: Review Composer
  - description: Connect a repository to this organization through the Millwork GitHub App.
    name: GitHub review connections
  - description: A record of how a run was handled, without prompt or result content.
    name: Receipts
  - description: Models this organization can use now.
    name: Models
  - description: Providers and sign-in methods that can be connected.
    name: Available providers
  - description: Provider accounts connected to this organization.
    name: Provider connections
  - description: >-
      Observed account models, exact routes, current readiness, import recovery
      and bounded permission plans. Observations are separate from tested model
      records.
    name: Account model inventory
  - description: >-
      Confirm and recover explicit permission for one exact account route and
      task envelope. Permission does not run a model or record a test.
    name: Exact route permissions
  - description: >-
      One-time browser steps for connecting a provider without sending its
      secret in an API request.
    name: Secure credential setup
  - description: Exact models and provider routes available through connected accounts.
    name: Provider models
  - description: Create, label, list, and revoke organization API keys.
    name: API keys
  - description: Organization members and invitations.
    name: Members
  - description: Metered usage and quota state.
    name: Usage
  - description: Account, plan and allowance snapshot.
    name: Account
  - description: Checkout, billing portal and billing profile.
    name: Billing
  - description: Webhook endpoints, deliveries and replay.
    name: Webhooks
  - description: Organization-scoped compliance export.
    name: Compliance export
  - description: >-
      Models, agents, and skills Millwork can choose for a run. The API calls
      each one an arm.
    name: Registered options
  - description: >-
      Checks that score output and can stop, retry, or choose another option
      within the request policy.
    name: Output checks
  - description: Routing proposals and their review lifecycle.
    name: Repair proposals
  - description: Aggregate evaluation trend and repair history.
    name: Evaluation
  - description: Publisher and release identity records for supported models.
    name: Model definitions
  - description: >-
      Protected provider-credential references. Secret material never appears in
      this API.
    name: Credential references
  - description: Dashboard browser sign-in, sign-up, session lookup, and sign-out.
    name: Browser access
  - description: >-
      Record and recover support requests from the signed-in human session.
      Notification delivery is separate from request status.
    name: Support requests
  - description: Read-only demo session setup.
    name: Demo
  - description: Machine setup and the authenticated organization profile.
    name: Organizations
  - description: Eligible immutable starter presets and typed blockers.
    name: Tenant templates
  - description: Stateless starter plan resolution. No write and no provider call.
    name: Tenant template plans
  - description: Durable starter applications that resume instead of restarting.
    name: Tenant template applications
paths:
  /v1/model-inventory/plan:
    post:
      tags:
        - Account model inventory
      summary: Review route permission
      description: >-
        Compute a fresh read-only plan for one exact route and task envelope,
        returning all blockers or a signed plan with its source-bound controls
        and expiry. A plan grants no permission or spend consent.
      operationId: postModelInventoryPlan
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                authority_id:
                  maxLength: 200
                  minLength: 1
                  type: string
                item_id:
                  maxLength: 200
                  minLength: 1
                  type: string
                observation_revision:
                  maxLength: 200
                  minLength: 1
                  type: string
                purpose:
                  enum:
                    - add
                    - execute
                route_id:
                  maxLength: 200
                  minLength: 1
                  type: string
                task:
                  additionalProperties: false
                  properties:
                    objective:
                      maxLength: 262144
                      minLength: 1
                      type: string
                  required:
                    - objective
                  type: object
                task_envelope:
                  additionalProperties: false
                  properties:
                    data_classes:
                      items:
                        $ref: '#/components/schemas/DataClass'
                      minItems: 1
                      type: array
                      uniqueItems: true
                    max_input_tokens:
                      minimum: 1
                      type: integer
                    max_output_tokens:
                      minimum: 1
                      type: integer
                    max_reasoning_tokens:
                      minimum: 1
                      type: integer
                    max_runtime_s:
                      minimum: 1
                      type: integer
                  required:
                    - max_input_tokens
                    - max_output_tokens
                    - max_runtime_s
                    - data_classes
                  type: object
              required:
                - item_id
                - route_id
                - observation_revision
                - purpose
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  binding_revision:
                    minimum: 0
                    type: integer
                  bound:
                    anyOf:
                      - additionalProperties: false
                        properties:
                          anthropic_evidence:
                            additionalProperties: false
                            properties:
                              evidence_refs:
                                items:
                                  type: string
                                type: array
                              expires_at:
                                type: string
                              input_usd_per_token:
                                type: string
                              output_usd_per_token:
                                type: string
                              proof_digest:
                                type: string
                              request_usd:
                                type: string
                              resolved_model_ids:
                                items:
                                  type: string
                                type: array
                              version:
                                enum:
                                  - anthropic.messages/v1
                            required:
                              - version
                              - proof_digest
                              - evidence_refs
                              - expires_at
                              - resolved_model_ids
                              - input_usd_per_token
                              - output_usd_per_token
                              - request_usd
                            type: object
                          assumptions:
                            items:
                              type: string
                            type: array
                          class_evidence:
                            additionalProperties: false
                            properties:
                              evidence_refs:
                                items:
                                  type: string
                                type: array
                              expected_provider:
                                type: string
                              expires_at:
                                type: string
                              meter_limits:
                                items:
                                  additionalProperties: false
                                  properties:
                                    maximum_volume:
                                      minimum: 0
                                      type: integer
                                    meter:
                                      type: string
                                    usage_field:
                                      enum:
                                        - prompt_tokens
                                        - completion_tokens
                                        - uncached_prompt_tokens
                                        - visible_completion_tokens
                                        - >-
                                          completion_tokens_details.reasoning_tokens
                                        - prompt_tokens_details.cached_tokens
                                        - prompt_tokens_details.cache_write_tokens
                                        - request
                                  required:
                                    - meter
                                    - usage_field
                                    - maximum_volume
                                  type: object
                                type: array
                              partitions:
                                items:
                                  additionalProperties: false
                                  properties:
                                    maximum_volume:
                                      minimum: 0
                                      type: integer
                                    partition:
                                      type: string
                                    usage_fields:
                                      items:
                                        type: string
                                      type: array
                                  required:
                                    - partition
                                    - usage_fields
                                    - maximum_volume
                                  type: object
                                type: array
                              proof_digest:
                                type: string
                              reasoning_maximum_tokens:
                                minimum: 0
                                type: integer
                              reasoning_mode:
                                enum:
                                  - disabled
                                  - shared_completion
                                  - independent
                              resolved_model_ids:
                                items:
                                  type: string
                                type: array
                              revision:
                                type: string
                              version:
                                enum:
                                  - openrouter.classes/v1
                            required:
                              - version
                              - revision
                              - proof_digest
                              - evidence_refs
                              - expires_at
                              - resolved_model_ids
                              - expected_provider
                              - reasoning_mode
                              - reasoning_maximum_tokens
                              - meter_limits
                              - partitions
                            type: object
                          input_volume_tokens:
                            minimum: 0
                            type: integer
                          meters:
                            items:
                              additionalProperties: false
                              properties:
                                maximum_microusd:
                                  minimum: 0
                                  type: integer
                                maximum_volume:
                                  minimum: 0
                                  type: integer
                                meter:
                                  type: string
                                rate_usd:
                                  type: string
                              required:
                                - meter
                                - maximum_volume
                                - rate_usd
                                - maximum_microusd
                              type: object
                            type: array
                          output_volume_tokens:
                            minimum: 0
                            type: integer
                          provider_maximum_microusd:
                            minimum: 0
                            type: integer
                          rate_digest:
                            type: string
                          source_contract_revision:
                            type: string
                        required:
                          - provider_maximum_microusd
                          - input_volume_tokens
                          - output_volume_tokens
                          - meters
                          - rate_digest
                          - source_contract_revision
                          - assumptions
                        type: object
                      - type: 'null'
                  confirmation_expires_at:
                    anyOf:
                      - type: string
                      - type: 'null'
                  connection_id:
                    type: string
                  evaluated_at:
                    type: string
                  invocation_id:
                    type: string
                  item_id:
                    type: string
                  observation_revision:
                    type: string
                  permission_expires_at:
                    anyOf:
                      - type: string
                      - type: 'null'
                  plan_digest:
                    anyOf:
                      - type: string
                      - type: 'null'
                  plan_token:
                    anyOf:
                      - type: string
                      - type: 'null'
                  prepared_request:
                    anyOf:
                      - oneOf:
                          - additionalProperties: false
                            properties:
                              max_tokens:
                                minimum: 0
                                type: integer
                              model:
                                type: string
                              provider:
                                additionalProperties: false
                                properties:
                                  allow_fallbacks:
                                    enum:
                                      - false
                                  data_collection:
                                    enum:
                                      - deny
                                  max_price:
                                    additionalProperties:
                                      type: number
                                    type: object
                                  only:
                                    items:
                                      type: string
                                    type: array
                                  order:
                                    items:
                                      type: string
                                    type: array
                                  require_parameters:
                                    enum:
                                      - true
                                required:
                                  - only
                                  - order
                                  - allow_fallbacks
                                  - require_parameters
                                  - data_collection
                                  - max_price
                                type: object
                              reasoning:
                                oneOf:
                                  - additionalProperties: false
                                    properties:
                                      effort:
                                        enum:
                                          - none
                                    required:
                                      - effort
                                    type: object
                                  - additionalProperties: false
                                    properties:
                                      enabled:
                                        enum:
                                          - true
                                    required:
                                      - enabled
                                    type: object
                                  - additionalProperties: false
                                    properties:
                                      max_tokens:
                                        minimum: 1
                                        type: integer
                                    required:
                                      - max_tokens
                                    type: object
                              stream:
                                enum:
                                  - false
                              usage:
                                additionalProperties: false
                                properties:
                                  include:
                                    enum:
                                      - true
                                required:
                                  - include
                                type: object
                            required:
                              - model
                              - stream
                              - max_tokens
                              - provider
                              - usage
                            type: object
                          - additionalProperties: false
                            properties:
                              api_version:
                                enum:
                                  - '2026-10-21'
                              inference_geo:
                                enum:
                                  - global
                              max_tokens:
                                minimum: 1
                                type: integer
                              model:
                                type: string
                              protocol:
                                enum:
                                  - anthropic_messages
                              service_tier:
                                enum:
                                  - standard_only
                              stream:
                                enum:
                                  - false
                              thinking:
                                additionalProperties: false
                                properties:
                                  type:
                                    enum:
                                      - disabled
                                      - adaptive
                                required:
                                  - type
                                type: object
                            required:
                              - protocol
                              - api_version
                              - model
                              - stream
                              - max_tokens
                              - service_tier
                              - inference_geo
                              - thinking
                            type: object
                      - type: 'null'
                  purpose:
                    enum:
                      - add
                      - execute
                  readiness:
                    additionalProperties: false
                    properties:
                      blockers:
                        items:
                          additionalProperties: false
                          properties:
                            action:
                              type: string
                            actor:
                              type: string
                            code:
                              enum:
                                - access_unverified
                                - binding_revoked
                                - binding_rotated
                                - identity_unbound
                                - policy_disabled
                                - authority_expired
                                - price_incomplete
                                - capability_unverified
                                - model_details_unverified
                                - invocation_access_unverified
                                - source_profile_unproven
                                - spend_bound_missing
                                - data_policy_unknown
                                - task_unsupported
                                - source_unavailable
                                - profile_status_unverified
                                - evidence_expired
                                - snapshot_changed
                                - plan_changed
                                - consent_missing
                                - quote_expired
                                - version_incompatible
                                - unknown_paid
                                - usage_unreliable
                                - bound_exceeded
                              type: string
                            evidence_refs:
                              items:
                                type: string
                              type: array
                            message:
                              type: string
                          required:
                            - code
                            - actor
                            - action
                            - message
                            - evidence_refs
                          type: object
                        type: array
                      disposition:
                        enum:
                          - ready
                          - needs_action
                          - not_available
                      evaluated_at:
                        type: string
                      planner_version:
                        type: string
                      policy_revision:
                        anyOf:
                          - minimum: 0
                            type: integer
                          - type: 'null'
                    required:
                      - disposition
                      - evaluated_at
                      - planner_version
                      - policy_revision
                      - blockers
                    type: object
                  route_id:
                    type: string
                  source_id:
                    type: string
                  task_envelope:
                    anyOf:
                      - additionalProperties: false
                        properties:
                          data_classes:
                            items:
                              $ref: '#/components/schemas/DataClass'
                            minItems: 1
                            type: array
                            uniqueItems: true
                          max_input_tokens:
                            minimum: 1
                            type: integer
                          max_output_tokens:
                            minimum: 1
                            type: integer
                          max_reasoning_tokens:
                            minimum: 1
                            type: integer
                          max_runtime_s:
                            minimum: 1
                            type: integer
                        required:
                          - max_input_tokens
                          - max_output_tokens
                          - max_runtime_s
                          - data_classes
                        type: object
                      - type: 'null'
                  testing:
                    additionalProperties: false
                    properties:
                      evidence_ref:
                        anyOf:
                          - type: string
                          - type: 'null'
                      last_tested_at:
                        anyOf:
                          - type: string
                          - type: 'null'
                      state:
                        enum:
                          - recorded
                          - not_tested
                          - unknown
                    required:
                      - state
                      - last_tested_at
                      - evidence_ref
                    type: object
                required:
                  - source_id
                  - purpose
                  - item_id
                  - route_id
                  - observation_revision
                  - connection_id
                  - binding_revision
                  - invocation_id
                  - readiness
                  - task_envelope
                  - prepared_request
                  - bound
                  - plan_digest
                  - plan_token
                  - confirmation_expires_at
                  - permission_expires_at
                  - evaluated_at
                  - testing
                type: object
          description: Default Response
        4XX:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Request failure in RFC 7807 format. The `type` field identifies the
            reason. Validation errors list affected fields. Rate and quota
            errors include `retry_after_s` and the `Retry-After` header.
        5XX:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Server failure in RFC 7807 format. The response does not include
            internal error details.
      security:
        - bearerAuth: []
        - sessionCookie: []
components:
  schemas:
    DataClass:
      enum:
        - public
        - sandbox
        - tenant_internal
    Problem:
      additionalProperties: false
      properties:
        blockers:
          items:
            additionalProperties: false
            properties:
              action:
                type: string
              actor:
                type: string
              code:
                enum:
                  - access_unverified
                  - binding_revoked
                  - binding_rotated
                  - identity_unbound
                  - policy_disabled
                  - authority_expired
                  - price_incomplete
                  - capability_unverified
                  - model_details_unverified
                  - invocation_access_unverified
                  - source_profile_unproven
                  - spend_bound_missing
                  - data_policy_unknown
                  - task_unsupported
                  - source_unavailable
                  - profile_status_unverified
                  - evidence_expired
                  - snapshot_changed
                  - plan_changed
                  - consent_missing
                  - quote_expired
                  - version_incompatible
                  - unknown_paid
                  - usage_unreliable
                  - bound_exceeded
                type: string
              evidence_refs:
                items:
                  type: string
                type: array
              message:
                type: string
            required:
              - code
              - actor
              - action
              - message
              - evidence_refs
            type: object
          type: array
        current_offer:
          additionalProperties: false
          properties:
            content_markdown:
              type: string
            display_label:
              type: string
            document_id:
              type: string
            offer_id:
              pattern: ^[a-f0-9]{64}$
              type: string
            published_url:
              format: uri
              type: string
            source_sha256:
              pattern: ^[a-f0-9]{64}$
              type: string
            title:
              type: string
            updated_at:
              format: date-time
              type: string
            version_id:
              type: string
          required:
            - document_id
            - title
            - version_id
            - display_label
            - updated_at
            - source_sha256
            - offer_id
            - content_markdown
            - published_url
          type: object
        current_organization:
          additionalProperties: false
          properties:
            legal_entity_name:
              maxLength: 256
              minLength: 1
              type: string
            profile_revision:
              minimum: 1
              type: integer
          required:
            - profile_revision
            - legal_entity_name
          type: object
        detail:
          description: Short, safe, occurrence-specific description. Never a stack trace.
          type: string
        errors:
          description: Per-field validation failures (validation_failed only).
          items:
            additionalProperties: false
            properties:
              field:
                type: string
              message:
                type: string
            required:
              - field
              - message
            type: object
          type: array
        instance:
          description: Unique id for this occurrence, safe to quote in support requests.
          format: uuid
          type: string
        next_actions:
          items:
            additionalProperties: false
            properties:
              action:
                type: string
              actor:
                type: string
            required:
              - actor
              - action
            type: object
          type: array
        reason:
          enum:
            - agreement_terminated
            - agreement_recovery_required
            - price_changed
          type: string
        reason_code:
          enum:
            - access_unverified
            - binding_revoked
            - binding_rotated
            - identity_unbound
            - policy_disabled
            - authority_expired
            - price_incomplete
            - capability_unverified
            - model_details_unverified
            - invocation_access_unverified
            - source_profile_unproven
            - spend_bound_missing
            - data_policy_unknown
            - task_unsupported
            - source_unavailable
            - profile_status_unverified
            - evidence_expired
            - snapshot_changed
            - plan_changed
            - consent_missing
            - quote_expired
            - version_incompatible
            - unknown_paid
            - usage_unreliable
            - bound_exceeded
          type: string
        retry_after_s:
          description: >-
            Seconds to wait before retrying (rate_limited and quota_exceeded
            only; mirrored as the Retry-After header).
          type: integer
        status:
          description: HTTP status code, duplicated in the body per RFC 7807.
          type: integer
        title:
          description: Human-readable summary of the problem type.
          type: string
        type:
          description: Stable URI that identifies the error type.
          format: uri
          type: string
      required:
        - type
        - title
        - status
        - instance
      type: object
  securitySchemes:
    bearerAuth:
      description: Organization API key for application requests.
      scheme: bearer
      type: http
    sessionCookie:
      description: Dashboard browser session. Do not use this credential in an application.
      in: cookie
      name: solverapi_session
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.