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

# Widget tool bridge (allow-listed per resource, exact-key argument policies)



## OpenAPI

````yaml /openapi/v3.yaml post /mcp/{toolName}
openapi: 3.1.0
info:
  title: Semicola Exchange API
  version: 3.0.0-preview
  description: >-
    Platform endpoints of Semicola: sign-in and accounts, members and keys,
    billing, notifications, the Semi assistant (chat stream, confirmations,
    conversations), the MCP App widget host and realtime feeds. Typed agent
    tools live on the MCP server at /mcp/v3.
servers:
  - url: https://api.semicola.com
security:
  - bearerAuth: []
  - sessionCookie: []
tags:
  - name: Auth
  - name: Accounts
  - name: Billing
  - name: Notifications
  - name: Assistant
  - name: Widget host
  - name: Realtime
  - name: Demo
paths:
  /mcp/{toolName}:
    post:
      tags:
        - Widget host
      summary: >-
        Widget tool bridge (allow-listed per resource, exact-key argument
        policies)
      operationId: postMcpByToolName
      parameters:
        - name: toolName
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-z0-9_]+$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tool:
                  type: string
                  minLength: 1
                arguments:
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties: {}
                surface:
                  type: string
                  enum:
                    - page
                    - v3
                pageCapability:
                  type: string
                clientRequestId:
                  type: string
                resourceUri:
                  type: string
                  pattern: ^ui:\/\/semicola\/[a-z0-9-]+\/mcp-app\.html$
                conversationUid:
                  type: string
                  minLength: 6
              required:
                - tool
                - arguments
                - surface
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      jsonrpc:
                        type: string
                        const: '2.0'
                      id:
                        type:
                          - string
                          - number
                      result:
                        type: object
                        properties:
                          content:
                            type: array
                            items:
                              anyOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      const: text
                                    text:
                                      type: string
                                  required:
                                    - type
                                    - text
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      const: resource_link
                                    uri:
                                      type: string
                                    name:
                                      type: string
                                    mimeType:
                                      type: string
                                  required:
                                    - type
                                    - uri
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                  required:
                                    - type
                                  additionalProperties: {}
                          structuredContent:
                            type: object
                            propertyNames:
                              type: string
                            additionalProperties: {}
                          isError:
                            type: boolean
                          _meta:
                            type: object
                            propertyNames:
                              type: string
                            additionalProperties: {}
                        required:
                          - content
                        additionalProperties: false
                    required:
                      - result
                    additionalProperties: false
                  - type: object
                    properties:
                      jsonrpc:
                        type: string
                        const: '2.0'
                      id:
                        type:
                          - string
                          - number
                      error:
                        type: object
                        properties:
                          code:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          message:
                            type: string
                          data: {}
                        required:
                          - code
                          - message
                        additionalProperties: false
                    required:
                      - error
                    additionalProperties: false
        default:
          description: >-
            Error envelope `{data: null, error: {code, message, field?,
            details?}}`.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or OAuth access token.
    sessionCookie:
      type: apiKey
      in: cookie
      name: sc_session

````