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

# Get MCP status

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the app's live MCP server. That covers whether AI clients can connect to it now, its endpoint, how clients authenticate, and the tools it serves.

This reports what the last publish put live, not the config you're editing. Read that with [Get MCP config](/api-reference/get-mcp-config). A server is only active while the app is published, and a workspace rule can turn it off without a publish, which `workspace_policy` tells you.

This is limited to 120 requests a minute for each app. Some workspaces have a different limit.

<Note>This endpoint accepts a personal API key belonging to a user with access to the app. A read-only key is refused, and workspace API keys are not accepted.</Note>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/platform/{app_id}/mcp-status
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/platform/{app_id}/mcp-status:
    get:
      summary: Get MCP status
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns the app's live MCP server. That covers whether AI clients can
        connect to it now, its endpoint, how clients authenticate, and the tools
        it serves.


        This reports what the last publish put live, not the config you're
        editing. Read that with [Get MCP config](/api-reference/get-mcp-config).
        A server is only active while the app is published, and a workspace rule
        can turn it off without a publish, which `workspace_policy` tells you.


        This is limited to 120 requests a minute for each app. Some workspaces
        have a different limit.


        <Note>This endpoint accepts a personal API key belonging to a user with
        access to the app. A read-only key is refused, and workspace API keys
        are not accepted.</Note>
      operationId: get_app_mcp_status_api_apps_platform__app_id__mcp_status_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: The app's live MCP server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppMcpStatusResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, it doesn't exist, or your API key
            is read-only.
        '404':
          description: >-
            App not found, or it's outside the workspace your credential is
            scoped to.
        '429':
          description: Too many MCP status requests for this app in the last minute.
components:
  schemas:
    AppMcpStatusResponse:
      properties:
        active:
          type: boolean
          title: Active
          description: >-
            Whether AI clients can use the server right now. It's `false` until
            the app is published, while it's unpublished or blocked, when the
            workspace has turned MCP off or requires `oauth` from a `none`
            server, and when a `none` server's app requires visitors to log in.
          default: false
          example: true
        published:
          type: boolean
          title: Published
          description: Whether a publish has put an MCP server live for the app.
          default: false
          example: true
        endpoint:
          anyOf:
            - type: string
            - type: 'null'
          title: Endpoint
          description: >-
            URL AI clients connect to, or `null` when the app has no address
            yet.
          example: https://my-crm-3c45a1f2.base44.app/api/mcp
        auth:
          anyOf:
            - type: string
              enum:
                - none
                - oauth
            - type: 'null'
          title: Auth
          description: >-
            How clients authenticate with the live server, or `null` when none
            is published. Either `"oauth"`, where clients sign in, or `"none"`,
            where anyone can call the public tools.
          example: oauth
        tools:
          items:
            $ref: '#/components/schemas/AppMcpToolSummary'
          type: array
          title: Tools
          description: >-
            Tools the live server serves. A `none` server lists only its public
            tools.
        effective_public_settings:
          anyOf:
            - type: string
            - type: 'null'
          title: Effective Public Settings
          description: >-
            Who can open the app after its next publish, once workspace SSO
            rules apply. A `none` server only works while this is
            `public_without_login`.
          example: public_with_login
        workspace_policy:
          type: string
          title: Workspace Policy
          description: >-
            The workspace's rule for app MCP servers. Either `"allow"`,
            `"oauth_only"`, which stops `none` servers, or `"disabled"`, which
            stops every server in the workspace.
          default: allow
          example: allow
      type: object
      title: AppMcpStatusResponse
      description: The app's live MCP server.
    AppMcpToolSummary:
      properties:
        name:
          type: string
          title: Name
          description: Name AI clients call the tool by.
          example: query_task
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: Display title of the tool, or `null` when it has none.
          example: Query tasks
        description:
          type: string
          title: Description
          description: What the tool does, as AI clients see it.
          example: Find Task records by ID or filter.
        kind:
          type: string
          title: Kind
          description: >-
            Where the tool comes from. Either `"entity"`, `"agent"`, or
            `"function"` for a custom tool backed by a backend function.
          example: entity
        handler:
          anyOf:
            - type: string
            - type: 'null'
          title: Handler
          description: >-
            Backend function a custom tool runs, or `null` for entity and agent
            tools.
          example: sendInvoice
        read_only_hint:
          type: boolean
          title: Read Only Hint
          description: Whether the tool is marked as only reading data.
          default: false
          example: true
        public:
          type: boolean
          title: Public
          description: >-
            Whether the tool can be called without signing in when the server's
            `auth` is `none`. Only entity read tools can. On an `oauth` server
            every tool still needs a signed-in client.
          default: false
          example: false
      type: object
      required:
        - name
        - description
        - kind
      title: AppMcpToolSummary
      description: A tool the live MCP server serves.
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: 'Personal access token, sent as `Authorization: Bearer <token>`.'

````