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

> ## Agent Instructions
> For agents: install the OpenWork desktop app with `brew install --cask openwork` (macOS) or from https://openworklabs.com/download. Do not run `npx openwork`; the npm package named `openwork` is a different project.
> Connect an agent to OpenWork with the MCP Gateway: `claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent`. Teams sign up at https://app.openworklabs.com?mode=sign-up.
> Step-by-step agent guide: https://openworklabs.com/docs/start-here/use-openwork-from-an-ai-agent.md
> Connect Slack (any organization admin): https://openworklabs.com/docs/slack/connect-slack.md. OpenWork in Slack (@openwork bot) is private alpha for approved organizations. Setup guide: https://openworklabs.com/docs/slack/overview.md. Agent skill: https://openworklabs.com/.well-known/agent-skills/set-up-openwork-slack/SKILL.md.

# Get my agent

> The signed-in member's own agent in the active organization: whether it is on for them, what it will tell them about (each responsibility, whether the organization turned it on and whether they muted it), where its messages go (a DM from the Workbot Slack app) and whether they can arrive yet (the Slack app installed, their Slack account linked), the working hours and daily limit it follows, and when it looks next. With My agent on (workbotAgentLibrary) it also says what it did: `lastCheck` and `todayChecks` (each with an outcome sent, quiet, waited or failed, and a `summary` sentence that says why, for example "Stayed quiet: nothing new." or "Couldn't read Gmail: reconnect Google."), `sentToday` against `limits.dailyCap`, the member's own words (`preferences`: always, never, when, how), their narrower `limits` inside the admin's, their recent `changes`, and `sources`: what the agent reads (calendar, email, team chat and each other connection), each with the admin's `policy` (`everyone` = on for everyone, `members` = the member chooses, `off` = not allowed), whether it is `on`, the member's `instruction` for it, when it was last read, and whether the member's account on each connection is ready (`connected`, `needs_connection`, `reconnect`). Answer "why was it quiet?" from these records, never by guessing. Requires the workbotProactive feature and Workbot on this deployment.



## OpenAPI

````yaml https://api.openworklabs.com/openapi.json?public=1 get /v1/me/agent
openapi: 3.1.0
info:
  title: Den API
  description: >-
    OpenAPI spec for the Den control plane API.


    Authentication:

    - API keys (they start with `den_`) go in the `x-api-key` header as the raw
    value. Do not send them as `Authorization: Bearer`; that header only accepts
    Den session tokens, so an API key there returns 401.
      Example: `curl https://api.openworklabs.com/v1/me -H "x-api-key: den_..."`.
      API keys resolve to the issuing user and the organization member they were scoped to when created, so they can call ordinary user and organization routes without a separate signed-in session.
    - Use `Authorization: Bearer <session-token>` for user-authenticated routes
    that require a Den session.

    - Session-only flows still require a signed-in user session, including
    organization creation, invitation acceptance, active-organization switching,
    and MCP token minting.

    - Public routes like health and documentation do not require authentication.


    Swagger tip: use the security schemes in the Authorize dialog to set
    `denApiKey` (your API key) or `bearerAuth` (a session token) before trying
    protected endpoints.
  version: commit 8863aab
  contact:
    name: OpenWork
    url: https://openworklabs.com
    email: team@openworklabs.com
  license:
    name: OpenWork Enterprise Edition License
    url: https://github.com/different-ai/openwork/blob/dev/ee/LICENSE
servers:
  - url: https://api.openworklabs.com
security:
  - denApiKey: []
  - bearerAuth: []
tags:
  - name: System
    description: >-
      Service health, readiness, API documentation, and desktop version
      metadata.
  - name: Authentication
    description: >-
      Sign-in discovery, administrator bootstrap, OAuth provider connections,
      and MCP token minting.
  - name: OAuth
    description: >-
      OAuth 2.0 / OpenID Connect authorization-server and protected-resource
      metadata and dynamic client registration (RFC 8414, RFC 9728, RFC 7591),
      used by MCP clients.
  - name: SCIM
    description: >-
      SCIM 2.0 provisioning endpoints for identity providers (RFC 7644) and the
      organization SCIM connector management routes.
  - name: SSO
    description: Organization single sign-on connector management routes.
  - name: Bootstrap
    description: Agent-first provisional workspace setup routes.
  - name: Users
    description: Current user and membership routes.
  - name: Organizations
    description: Organization creation, context, brand assets, and install links.
  - name: Invitations
    description: Invitation preview, acceptance, creation, and cancellation routes.
  - name: Sandbox organizations
    description: Preview and join a sandbox organization with its shareable join link.
  - name: Members
    description: Organization member management routes.
  - name: Teams
    description: Organization team management routes.
  - name: Permissions
    description: >-
      Organization permissions: the permission catalog, Member, Admin and team
      permission sets, their history, and each member's effective permissions.
  - name: API Keys
    description: Organization API key management routes.
  - name: Desktop Policies
    description: Desktop app policies applied to the organization, members, or teams.
  - name: Agent Permissions
    description: What agents may do on members' computers, set for everyone and per team.
  - name: LLM Providers
    description: Organization LLM provider catalog, configuration, and access routes.
  - name: Inference
    description: Organization inference settings.
  - name: Inference Providers
    description: >-
      Organization inference Gateway providers, model groups, credential sets,
      access grants, member connections, and usage.
  - name: Gateway Usage Limits
    description: >-
      Estimated-cost policies, independent member calendar buckets, assignments,
      and audited usage-extension requests.
  - name: Cloud
    description: Organization Cloud instance lifecycle and browser gateway resolution.
  - name: Workers
    description: >-
      List and delete the organization's workers, including OpenWork Web
      instances.
  - name: Worker Activity
    description: Worker heartbeat and activity reporting routes.
  - name: Managed deployments
    description: >-
      OpenWork installations in an organization's own cloud account: launch
      approval, installer milestones and health reports.
  - name: Automations
    description: Scheduled Automations, their runs, and desktop runner presence.
  - name: Documents
    description: >-
      Connected Drive documents, inline editing and file-bound temporary Office
      sessions.
  - name: Workbot
    description: The signed-in member's single Workbot conversation.
  - name: Workflows
    description: Saved Workflows (Code Mode scripts), their versions, snapshots, and views.
  - name: Workflow Runs
    description: Durable Workflow run history.
  - name: Codemode Runs
    description: Generated Artifact views produced by Code Mode runs.
  - name: Apps
    description: >-
      Saved reusable apps built from Workflows and Artifact views, and their
      sharing.
  - name: Config Objects
    description: >-
      Versioned configuration objects (skills, workflows, and other plugin
      content).
  - name: Plugins
    description: Plugin packages, access grants, and imports.
  - name: Marketplaces
    description: Marketplaces that distribute plugins to members and teams.
  - name: Resources
    description: >-
      Aggregated snapshot of the resources and marketplace capabilities
      available to the caller.
  - name: Capability Sources
    description: >-
      Native provider capabilities (Google Workspace, Microsoft 365) and
      external MCP connections executed as the calling member.
  - name: Direct uploads
    description: Multipart uploads that stream workspace files straight to a provider.
  - name: Connectors
    description: >-
      Connector accounts and instances (GitHub and other sources) and their sync
      state.
  - name: GitHub
    description: >-
      GitHub App installation, repository discovery, and plugin import from
      GitHub.
  - name: Diagnostics
    description: Controlled egress diagnostics for self-hosted deployments.
  - name: Telemetry
    description: Telemetry event ingestion and adoption analytics.
  - name: Webhooks
    description: Signed inbound webhooks from third-party providers.
  - name: Admin
    description: Platform administration routes for allowlisted OpenWork administrators.
  - name: Deprecated
    description: Removed features that answer with 410 or an empty result for old clients.
paths:
  /v1/me/agent:
    get:
      tags:
        - Users
      summary: Get my agent
      description: >-
        The signed-in member's own agent in the active organization: whether it
        is on for them, what it will tell them about (each responsibility,
        whether the organization turned it on and whether they muted it), where
        its messages go (a DM from the Workbot Slack app) and whether they can
        arrive yet (the Slack app installed, their Slack account linked), the
        working hours and daily limit it follows, and when it looks next. With
        My agent on (workbotAgentLibrary) it also says what it did: `lastCheck`
        and `todayChecks` (each with an outcome sent, quiet, waited or failed,
        and a `summary` sentence that says why, for example "Stayed quiet:
        nothing new." or "Couldn't read Gmail: reconnect Google."), `sentToday`
        against `limits.dailyCap`, the member's own words (`preferences`:
        always, never, when, how), their narrower `limits` inside the admin's,
        their recent `changes`, and `sources`: what the agent reads (calendar,
        email, team chat and each other connection), each with the admin's
        `policy` (`everyone` = on for everyone, `members` = the member chooses,
        `off` = not allowed), whether it is `on`, the member's `instruction` for
        it, when it was last read, and whether the member's account on each
        connection is ready (`connected`, `needs_connection`, `reconnect`).
        Answer "why was it quiet?" from these records, never by guessing.
        Requires the workbotProactive feature and Workbot on this deployment.
      operationId: getV1MeAgent
      responses:
        '200':
          description: The member's agent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAgent'
        '401':
          description: The caller must be signed in.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '404':
          description: Agents are off for this organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAgentDisabled'
      security:
        - denApiKey: []
        - bearerAuth: []
components:
  schemas:
    MemberAgent:
      type: object
      properties:
        available:
          type: boolean
        'on':
          type: boolean
        snoozedUntil:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            - type: 'null'
        responsibilities:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                enum:
                  - morning_brief
                  - meeting_prep
                  - calendar_changes
                  - waiting_on_you
              label:
                type: string
              tells:
                type: string
              enabled:
                type: boolean
              muted:
                type: boolean
            required:
              - id
              - label
              - tells
              - enabled
              - muted
        destination:
          anyOf:
            - type: object
              properties:
                kind:
                  type: string
                  const: workbot_dm
                name:
                  type: string
                blocked:
                  anyOf:
                    - type: string
                      enum:
                        - slack_app_not_installed
                        - member_not_linked
                    - type: 'null'
              required:
                - kind
                - name
                - blocked
            - type: 'null'
        workingHours:
          type: object
          properties:
            workingDays:
              type: string
              enum:
                - weekdays
                - everyday
            startHour:
              type: number
            endHour:
              type: number
            dailyCap:
              type: number
          required:
            - workingDays
            - startHour
            - endHour
            - dailyCap
        nextCheckAt:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
            - type: 'null'
        timeZone:
          type: string
        lastCheck:
          anyOf:
            - type: object
              properties:
                id:
                  type: string
                at:
                  type: string
                  format: date-time
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                kind:
                  type: string
                  enum:
                    - morning
                    - scheduled
                    - calendar
                outcome:
                  type: string
                  enum:
                    - sent
                    - quiet
                    - waited
                    - failed
                reason:
                  type: string
                  enum:
                    - sent
                    - nothing_new
                    - already_told
                    - unreadable_reply
                    - daily_limit
                    - nothing_to_check
                    - outside_hours
                    - quiet_window
                    - snoozed
                    - google_disconnected
                    - source_disconnected
                    - slack_app_not_installed
                    - member_not_linked
                    - no_destination
                    - send_failed
                    - agent_unavailable
                headline:
                  type: string
                summary:
                  type: string
                responsibilities:
                  type: array
                  items:
                    type: string
                    enum:
                      - morning_brief
                      - meeting_prep
                      - calendar_changes
                      - waiting_on_you
                sources:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      connectionId:
                        type:
                          - string
                          - 'null'
                    required:
                      - id
                      - name
                      - connectionId
                slackUrl:
                  type:
                    - string
                    - 'null'
                fix:
                  anyOf:
                    - type: string
                      enum:
                        - reconnect_google
                        - reconnect
                        - link_slack
                        - ask_admin
                    - type: 'null'
              required:
                - id
                - at
                - kind
                - outcome
                - reason
                - headline
                - summary
                - responsibilities
                - sources
                - slackUrl
                - fix
            - type: 'null'
        todayChecks:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              at:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              kind:
                type: string
                enum:
                  - morning
                  - scheduled
                  - calendar
              outcome:
                type: string
                enum:
                  - sent
                  - quiet
                  - waited
                  - failed
              reason:
                type: string
                enum:
                  - sent
                  - nothing_new
                  - already_told
                  - unreadable_reply
                  - daily_limit
                  - nothing_to_check
                  - outside_hours
                  - quiet_window
                  - snoozed
                  - google_disconnected
                  - source_disconnected
                  - slack_app_not_installed
                  - member_not_linked
                  - no_destination
                  - send_failed
                  - agent_unavailable
              headline:
                type: string
              summary:
                type: string
              responsibilities:
                type: array
                items:
                  type: string
                  enum:
                    - morning_brief
                    - meeting_prep
                    - calendar_changes
                    - waiting_on_you
              sources:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    connectionId:
                      type:
                        - string
                        - 'null'
                  required:
                    - id
                    - name
                    - connectionId
              slackUrl:
                type:
                  - string
                  - 'null'
              fix:
                anyOf:
                  - type: string
                    enum:
                      - reconnect_google
                      - reconnect
                      - link_slack
                      - ask_admin
                  - type: 'null'
            required:
              - id
              - at
              - kind
              - outcome
              - reason
              - headline
              - summary
              - responsibilities
              - sources
              - slackUrl
              - fix
        sentToday:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        preferences:
          type: object
          properties:
            always:
              type: string
              maxLength: 400
            never:
              type: string
              maxLength: 400
            when:
              type: string
              maxLength: 400
            how:
              type: string
              maxLength: 400
          required:
            - always
            - never
            - when
            - how
        limits:
          type: object
          properties:
            workingDays:
              type: string
              enum:
                - weekdays
                - everyday
            startHour:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            endHour:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            dailyCap:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            quietWindow:
              anyOf:
                - type: object
                  properties:
                    startHour:
                      type: integer
                      minimum: 0
                      maximum: 23
                    endHour:
                      type: integer
                      minimum: 1
                      maximum: 24
                  required:
                    - startHour
                    - endHour
                - type: 'null'
            admin:
              type: object
              properties:
                startHour:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                endHour:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                dailyCap:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
              required:
                - startHour
                - endHour
                - dailyCap
            narrowed:
              type: object
              properties:
                hours:
                  type: boolean
                dailyCap:
                  type: boolean
              required:
                - hours
                - dailyCap
          required:
            - workingDays
            - startHour
            - endHour
            - dailyCap
            - quietWindow
            - admin
            - narrowed
        changes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              field:
                type: string
                enum:
                  - always
                  - never
                  - when
                  - how
                  - hours
                  - dailyCap
                  - quietWindow
                  - morning_brief
                  - meeting_prep
                  - calendar_changes
                  - waiting_on_you
                  - source
                  - sourceInstruction
              sourceId:
                type:
                  - string
                  - 'null'
              summary:
                type: string
              source:
                type: string
                enum:
                  - chat
                  - page
              at:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              undone:
                type: boolean
            required:
              - id
              - field
              - sourceId
              - summary
              - source
              - at
              - undone
        sources:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              kind:
                type: string
                enum:
                  - calendar
                  - email
                  - chat
                  - other
              name:
                type: string
              connections:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    url:
                      type: string
                    state:
                      type: string
                      enum:
                        - connected
                        - needs_connection
                        - reconnect
                  required:
                    - id
                    - name
                    - url
                    - state
              policy:
                type: string
                enum:
                  - everyone
                  - members
                  - 'off'
              'on':
                type: boolean
              instruction:
                type: string
              lastReadAt:
                anyOf:
                  - type: string
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                  - type: 'null'
            required:
              - id
              - kind
              - name
              - connections
              - policy
              - 'on'
              - instruction
              - lastReadAt
        link:
          type: string
      required:
        - available
        - 'on'
        - snoozedUntil
        - responsibilities
        - destination
        - workingHours
        - nextCheckAt
    UnauthorizedError:
      type: object
      properties:
        error:
          type: string
          const: unauthorized
      required:
        - error
    MemberAgentDisabled:
      type: object
      properties:
        error:
          type: string
          const: feature_disabled
        feature:
          type: string
      required:
        - error
        - feature
  securitySchemes:
    denApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Organization API key passed as the `x-api-key` header. The raw key is
        the header value; do not prefix it with `Bearer`.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: session-token
      description: >-
        Den session token passed as `Authorization: Bearer <session-token>` for
        user-authenticated Den routes. Not for API keys: send `den_` keys in the
        `x-api-key` header instead.

````

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