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

# Read ranked eligible project work

> Read-only deterministic recommendations with authorized contributing reasons and freshness limitations. Complete bounded scan before ranking; 1,000 source issues, 25,000 related physical rows and 200 queries maximum, with additional relation ceilings. No actor-specific execution filtering, assignment, score, or heartbeat change. CLI work project-recommendations and full/public MCP atoll_get_work_recommendations with view project expose this existing contract. Cursors are unsigned scoped navigation state, not snapshots or authorization.



## OpenAPI

````yaml /openapi.json get /api/orgs/{id}/projects/{projectId}/work-recommendations
openapi: 3.1.0
info:
  title: Atoll API
  version: 1.0.0
  description: >-
    REST API for Atoll project management, agent collaboration, strategy
    tracking, and integrations.
servers:
  - url: https://atollhq.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Authentication
  - name: Organizations
  - name: Projects
  - name: Project access
  - name: Issues
  - name: Issue details
  - name: Milestones
  - name: Artifacts
  - name: Strategy
  - name: Members and agents
  - name: Planning
  - name: Setup
  - name: Integrations and billing
  - name: Notifications and public
  - name: Private inbox
  - name: Agent executions
  - name: Human attention
  - name: Products
paths:
  /api/orgs/{id}/projects/{projectId}/work-recommendations:
    get:
      tags:
        - Projects
      summary: Read ranked eligible project work
      description: >-
        Read-only deterministic recommendations with authorized contributing
        reasons and freshness limitations. Complete bounded scan before ranking;
        1,000 source issues, 25,000 related physical rows and 200 queries
        maximum, with additional relation ceilings. No actor-specific execution
        filtering, assignment, score, or heartbeat change. CLI work
        project-recommendations and full/public MCP
        atoll_get_work_recommendations with view project expose this existing
        contract. Cursors are unsigned scoped navigation state, not snapshots or
        authorization.
      operationId: getProjectWorkRecommendations
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 5
            default: 5
        - name: cursor
          in: query
          schema:
            type: string
            maxLength: 2048
          description: >-
            Opaque next_cursor from the same org/project/actor; expires after 15
            minutes. Changed facts can move or repeat items.
      responses:
        '200':
          description: >-
            Complete bounded evaluation, including empty or unconfigured
            projects. No mutation is authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectWorkRecommendations'
        '400':
          description: >-
            WORK_RECOMMENDATIONS_INPUT_INVALID or
            WORK_RECOMMENDATIONS_CURSOR_EXPIRED (15-minute cursor lifetime).
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - error
                  - code
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: 'NOT_FOUND: project missing or inaccessible, without distinction.'
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - error
                  - code
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '422':
          description: >-
            WORK_RECOMMENDATIONS_EVIDENCE_LIMIT: source or related evidence
            exceeds a bound; no partial result.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - error
                  - code
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '500':
          description: >-
            WORK_RECOMMENDATIONS_READ_FAILED or
            WORK_RECOMMENDATIONS_RESPONSE_INVALID. Safe message only.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - error
                  - code
                properties:
                  error:
                    type: string
                  code:
                    type: string
      security:
        - bearerAuth: []
components:
  schemas:
    ProjectWorkRecommendations:
      type: object
      additionalProperties: false
      properties:
        recommendations:
          type: array
          maxItems: 5
          items:
            type: object
            additionalProperties: false
            properties:
              issue:
                type: object
                additionalProperties: false
                properties:
                  id:
                    type: string
                    format: uuid
                  number:
                    anyOf:
                      - type: integer
                      - type: 'null'
                  title:
                    type: string
                    maxLength: 240
                  status:
                    type: string
                  priority:
                    anyOf:
                      - type: integer
                        minimum: 0
                        maximum: 3
                      - type: 'null'
                  due_date:
                    anyOf:
                      - type: string
                        format: date
                      - type: 'null'
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - number
                  - title
                  - status
                  - priority
                  - due_date
                  - created_at
                  - updated_at
              action_kind:
                type: string
                enum:
                  - start
                  - continue
                  - review_assignment
              reasons:
                type: array
                maxItems: 3
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    code:
                      type: string
                      enum:
                        - urgent_blocked_downstream
                        - overdue_milestone
                        - current_kpi_relevance
                        - explicit_strategy_link
                        - issue_overdue
                        - issue_due
                        - issue_priority
                    summary:
                      type: string
                      maxLength: 300
                    source_type:
                      type: string
                      enum:
                        - issue
                        - milestone
                        - initiative
                        - kpi
                    source_id:
                      type: string
                      format: uuid
                    source_title:
                      type: string
                      maxLength: 240
                    source_as_of:
                      type: string
                      format: date-time
                  required:
                    - code
                    - summary
                    - source_type
                    - source_id
              limitations:
                type: array
                maxItems: 5
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    code:
                      type: string
                      enum:
                        - kpi_stale
                        - kpi_current_unknown
                        - strategy_link_absent
                        - kpi_evidence_absent
                        - linked_context_not_visible
                        - assignment_requires_review
                        - linked_context_unavailable
                        - strategy_inactive
                    source_type:
                      type: string
                      enum:
                        - issue
                        - milestone
                        - initiative
                        - kpi
                    source_id:
                      type: string
                      format: uuid
                    source_title:
                      type: string
                      maxLength: 240
                    source_as_of:
                      type: string
                      format: date-time
                  required:
                    - code
              limitations_truncated:
                type: boolean
            required:
              - issue
              - action_kind
              - reasons
              - limitations
              - limitations_truncated
        page:
          type: object
          properties:
            limit:
              type: integer
              minimum: 1
              maximum: 5
            has_more:
              type: boolean
            next_cursor:
              anyOf:
                - type: string
                  maxLength: 2048
                - type: 'null'
          required:
            - limit
            - has_more
            - next_cursor
          additionalProperties: false
        evaluation:
          type: object
          additionalProperties: false
          properties:
            evaluated_at:
              type: string
              format: date-time
            eligible_count:
              type: integer
              minimum: 0
            excluded_count:
              type: integer
              minimum: 0
            primary_exclusion_reason_counts:
              type: object
              additionalProperties: false
              properties:
                project_inactive:
                  type: integer
                  minimum: 0
                issue_archived:
                  type: integer
                  minimum: 0
                issue_cancelled:
                  type: integer
                  minimum: 0
                workflow_role_unconfigured:
                  type: integer
                  minimum: 0
                workflow_role_excluded:
                  type: integer
                  minimum: 0
                dependency_evidence_invalid:
                  type: integer
                  minimum: 0
                unresolved_dependency:
                  type: integer
                  minimum: 0
              required: []
          required:
            - evaluated_at
            - eligible_count
            - excluded_count
            - primary_exclusion_reason_counts
      required:
        - recommendations
        - page
        - evaluation
    Error:
      type: object
      description: >-
        Common error responses contain error. Shared missing-auth and
        unknown-API responses also contain a stable code.
      properties:
        error:
          type: string
        code:
          type: string
      required:
        - error
      examples:
        - error: Unauthorized
          code: unauthorized
        - error: Not found
          code: not_found
      additionalProperties: true
  responses:
    Unauthorized:
      description: Missing or invalid authentication
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Authenticated but not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk_atoll_<key>

````

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