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

# Configure MCP plans on an MCP product

> Configures plans and optional tool-to-plan mappings for an MCP product.



## OpenAPI

````yaml /api-reference/openapi.json put /v1/sdk/products/{productRef}/mcp/plans
openapi: 3.0.0
info:
  contact: {}
  description: The SolvaPay REST API specification
  title: SolvaPay REST API
  version: '1.0'
servers: []
security: []
tags: []
paths:
  /v1/sdk/products/{productRef}/mcp/plans:
    put:
      tags:
        - Products
      summary: Configure MCP plans on an MCP product
      description: Configures plans and optional tool-to-plan mappings for an MCP product.
      operationId: ProductSdkController_configureMcpPlans
      parameters:
        - description: Product reference or ID
          in: path
          name: productRef
          required: true
          schema:
            example: prd_1A2B3C4D
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureMcpPlansDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigureMcpPlansResult'
          description: MCP plans configured successfully
        '400':
          description: Invalid MCP plans request or product is not MCP-enabled
        '404':
          description: Product not found
      security:
        - SecretKey: []
components:
  schemas:
    ConfigureMcpPlansDto:
      properties:
        plans:
          items:
            properties:
              currency:
                maxLength: 3
                minLength: 3
                type: string
              features:
                additionalProperties: true
                type: object
              key:
                minLength: 1
                type: string
              name:
                minLength: 1
                type: string
              options:
                items:
                  oneOf:
                    - properties:
                        amountMinor:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                        currency:
                          type: string
                        kind:
                          enum:
                            - charge
                          type: string
                        label:
                          type: string
                        meter:
                          minLength: 1
                          type: string
                        oneTime:
                          type: boolean
                        per:
                          enum:
                            - unit
                            - seat
                            - flat
                          type: string
                      required:
                        - amountMinor
                        - currency
                        - per
                        - kind
                      type: object
                    - properties:
                        anchor:
                          format: date-time
                          type: string
                        count:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                        interval:
                          enum:
                            - week
                            - month
                            - year
                          type: string
                        kind:
                          enum:
                            - billingCycle
                          type: string
                      required:
                        - kind
                        - interval
                      type: object
                    - properties:
                        charge:
                          properties:
                            amountMinor:
                              exclusiveMinimum: false
                              minimum: 0
                              type: integer
                            currency:
                              type: string
                            label:
                              type: string
                            meter:
                              minLength: 1
                              type: string
                            per:
                              enum:
                                - unit
                                - seat
                                - flat
                              type: string
                          required:
                            - amountMinor
                            - currency
                            - per
                          type: object
                        from:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                        kind:
                          enum:
                            - tier
                          type: string
                        label:
                          type: string
                        mode:
                          enum:
                            - graduated
                            - volume
                          type: string
                        to:
                          exclusiveMinimum: false
                          minimum: 0
                          nullable: true
                          type: integer
                      required:
                        - kind
                        - from
                        - to
                        - mode
                        - charge
                      type: object
                    - properties:
                        cap:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                        kind:
                          enum:
                            - limit
                          type: string
                        label:
                          type: string
                        meter:
                          minLength: 1
                          type: string
                        onExceed:
                          enum:
                            - block
                            - throttle
                            - charge
                            - notify
                            - top_up
                            - auto_upgrade
                          type: string
                        onExceedPricingId:
                          type: string
                        scope:
                          enum:
                            - billing_period
                            - lifetime
                            - rolling_window
                          type: string
                        uiHint:
                          enum:
                            - upgrade_prompt
                            - soft_warning
                          type: string
                        windowDays:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                      required:
                        - kind
                        - cap
                        - scope
                        - meter
                        - onExceed
                      type: object
                    - properties:
                        feature:
                          minLength: 1
                          type: string
                        kind:
                          enum:
                            - entitlement
                          type: string
                        label:
                          type: string
                        scope:
                          type: string
                        value:
                          oneOf:
                            - type: boolean
                            - type: number
                            - type: string
                      required:
                        - kind
                        - feature
                        - value
                      type: object
                    - properties:
                        days:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                        downgradeToPricingId:
                          type: string
                        kind:
                          enum:
                            - trial
                          type: string
                        label:
                          type: string
                        onEnd:
                          enum:
                            - convert
                            - cancel
                            - downgrade
                          type: string
                        requireCard:
                          type: boolean
                      required:
                        - kind
                        - days
                        - onEnd
                      type: object
                    - properties:
                        kind:
                          enum:
                            - prepaid
                          type: string
                        label:
                          type: string
                        lowBalanceUnits:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                        minTopUpMinor:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                      required:
                        - kind
                      type: object
                    - properties:
                        appliesTo:
                          enum:
                            - recurring
                            - setup
                            - usage
                            - all
                          type: string
                        currency:
                          type: string
                        cycles:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                        duration:
                          enum:
                            - once
                            - repeating
                            - forever
                          type: string
                        kind:
                          enum:
                            - discount
                          type: string
                        label:
                          type: string
                        mode:
                          enum:
                            - percentage
                            - fixed
                          type: string
                        value:
                          exclusiveMinimum: true
                          minimum: 0
                          type: integer
                      required:
                        - kind
                        - mode
                        - value
                        - duration
                      type: object
                    - properties:
                        capUnits:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                        currency:
                          type: string
                        kind:
                          enum:
                            - rollover
                          type: string
                        label:
                          type: string
                        maxCycles:
                          exclusiveMinimum: false
                          minimum: 1
                          type: integer
                        meter:
                          minLength: 1
                          type: string
                        rateMinor:
                          exclusiveMinimum: false
                          minimum: 0
                          type: integer
                        treatment:
                          enum:
                            - forfeit
                            - carry_forward
                            - credit_units
                            - credit_money
                          type: string
                      required:
                        - kind
                        - meter
                        - treatment
                      type: object
                    - properties:
                        kind:
                          enum:
                            - autoAssigned
                          type: string
                        label:
                          type: string
                      required:
                        - kind
                      type: object
                    - properties:
                        kind:
                          enum:
                            - hidden
                          type: string
                        label:
                          type: string
                      required:
                        - kind
                      type: object
                type: array
            required:
              - key
              - name
              - options
            type: object
          type: array
        toolMapping:
          items:
            properties:
              name:
                minLength: 1
                type: string
              planKeys:
                items:
                  type: string
                type: array
            required:
              - name
              - planKeys
            type: object
          type: array
      type: object
    ConfigureMcpPlansResult:
      properties:
        mcpServer:
          additionalProperties: true
          description: Updated MCP server identity
          type: object
        planMap:
          additionalProperties: true
          description: Resolved plan mapping by key (includes existing free plan)
          type: object
        product:
          allOf:
            - $ref: '#/components/schemas/SdkProductResponse'
          description: Updated product
      required:
        - product
        - mcpServer
        - planMap
      type: object
    SdkProductResponse:
      properties:
        balance:
          description: Product balance in cents
          example: 0
          type: number
        config:
          allOf:
            - $ref: '#/components/schemas/ProductConfigDto'
          description: Product-specific configuration
        createdAt:
          description: Creation timestamp
          type: string
        description:
          description: Product description
          type: string
        imageUrl:
          description: URL to the product image
          type: string
        isManagedMcp:
          description: >-
            Whether this product uses the Managed MCP integration (SolvaPay
            reverse proxy)
          example: false
          type: boolean
        isMcpPay:
          deprecated: true
          description: >-
            Deprecated alias of isManagedMcp. Prefer isManagedMcp; still emitted
            for wire compatibility.
          example: false
          type: boolean
        mcp:
          additionalProperties: true
          description: MCP linkage details for MCP-enabled products
          example:
            defaultPlanRef: pln_FREE123
            mcpProxyUrl: https://acme-docs.mcp.solvapay.com/mcp
            mcpServerRef: mcp_ABC123
            mcpSubdomain: acme-docs
            originUrl: https://origin.example.com/mcp
          type: object
        metadata:
          additionalProperties: true
          description: Arbitrary key-value metadata
          type: object
        name:
          description: Product name
          example: AI Writing Assistant
          type: string
        plans:
          description: Plans associated with this product
          items:
            $ref: '#/components/schemas/SdkPlanResponse'
          type: array
        productType:
          description: Free-form product type
          type: string
        reference:
          description: Product reference
          example: prd_1A2B3C4D
          type: string
        status:
          description: Product status
          example: active
          type: string
        totalTransactions:
          description: Total number of transactions
          example: 0
          type: number
        updatedAt:
          description: Last update timestamp
          type: string
      required:
        - reference
        - name
        - balance
        - totalTransactions
        - isManagedMcp
        - isMcpPay
        - status
        - createdAt
        - updatedAt
      type: object
    ProductConfigDto:
      properties:
        deliveryMethod:
          description: Delivery method
          example: api
          type: string
        fulfillmentType:
          description: Fulfillment type
          example: digital
          type: string
        validityPeriod:
          description: Validity period in days
          example: 30
          type: number
      type: object
    SdkPlanResponse:
      properties:
        createdAt:
          description: Creation timestamp
          type: string
        currency:
          description: Currency code (ISO 4217)
          example: USD
          type: string
        currencySymbol:
          description: Currency symbol
          example: $
          type: string
        description:
          description: Plan description
          example: Best for teams getting started
          type: string
        features:
          additionalProperties: true
          description: Plan features
          type: object
        isActive:
          description: Whether the plan is active
          example: true
          type: boolean
        name:
          description: Plan name
          example: Starter
          type: string
        options:
          description: Composable pricing options (money as integer minor units)
          items:
            additionalProperties: true
            type: object
          type: array
        price:
          description: Derived headline price in minor units (base or one-time charge)
          example: 2999
          type: number
        reference:
          description: Plan reference
          example: pln_1A2B3C4D
          type: string
        requiresPayment:
          description: Whether payment is required
          example: true
          type: boolean
        status:
          description: Plan status
          example: active
          type: string
        type:
          description: Derived plan type (read from options)
          enum:
            - recurring
            - one-time
            - usage-based
            - hybrid
          example: recurring
          type: string
        updatedAt:
          description: Last update timestamp
          type: string
      required:
        - type
        - reference
        - options
        - currency
        - requiresPayment
        - isActive
        - status
        - createdAt
        - updatedAt
      type: object
  securitySchemes:
    SecretKey:
      bearerFormat: JWT
      description: >-
        Provider secret API key (sk_live_… / sk_test_…) supplied as a Bearer
        token.
      scheme: bearer
      type: http

````