mcpgate Subscription API

The subscription API from mcpgate — 5 operation(s) for subscription.

Operations 5

GET /admin/subscription/public-key Get Public Key #
POST /admin/subscription/issue Issue Subscription #
GET /admin/subscription/list List Subscriptions #
GET /admin/subscription/{jti} Get Subscription #
POST /admin/subscription/{jti}/revoke Revoke Subscription #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mcpgate:mcpgate-subscription-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mcpgate-subscription-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: mcpgate-backend Subscription API
  version: 0.4.20
tags:
- name: Subscription
paths:
  /admin/subscription/public-key:
    get:
      tags:
      - Subscription
      summary: Get Public Key
      description: 'Return the active public key in PEM form for distribution to

        gateway images. Admin-only because we don''t need to advertise key

        material on the open web — gateways receive it via image release.'
      operationId: get_public_key_admin_subscription_public_key_get
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/subscription/issue:
    post:
      tags:
      - Subscription
      summary: Issue Subscription
      operationId: issue_subscription_admin_subscription_issue_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/subscription/list:
    get:
      tags:
      - Subscription
      summary: List Subscriptions
      operationId: list_subscriptions_admin_subscription_list_get
      parameters:
      - name: tier
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            pattern: ^(team|enterprise)$
          - type: 'null'
          title: Tier
      - name: include_revoked
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Include Revoked
      - name: expires_before
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Expires Before
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionList'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/subscription/{jti}:
    get:
      tags:
      - Subscription
      summary: Get Subscription
      operationId: get_subscription_admin_subscription__jti__get
      parameters:
      - name: jti
        in: path
        required: true
        schema:
          type: string
          minLength: 1
          maxLength: 64
          title: Jti
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /admin/subscription/{jti}/revoke:
    post:
      tags:
      - Subscription
      summary: Revoke Subscription
      operationId: revoke_subscription_admin_subscription__jti__revoke_post
      parameters:
      - name: jti
        in: path
        required: true
        schema:
          type: string
          minLength: 1
          maxLength: 64
          title: Jti
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevokeResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PublicKeyResponse:
      properties:
        kid:
          type: string
          title: Kid
        algorithm:
          type: string
          title: Algorithm
          default: EdDSA
        public_key_pem:
          type: string
          title: Public Key Pem
      type: object
      required:
      - kid
      - public_key_pem
      title: PublicKeyResponse
    SubscriptionRow:
      properties:
        jti:
          type: string
          title: Jti
        customer_id:
          type: string
          title: Customer Id
        owner_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Owner Id
        customer_name:
          type: string
          title: Customer Name
        customer_email:
          anyOf:
          - type: string
          - type: 'null'
          title: Customer Email
        tier:
          type: string
          enum:
          - team
          - enterprise
          title: Tier
        kid:
          type: string
          title: Kid
        issued_at:
          type: string
          format: date-time
          title: Issued At
        expires_at:
          type: string
          format: date-time
          title: Expires At
        issued_by:
          type: string
          title: Issued By
        revoked_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Revoked At
        notes:
          anyOf:
          - type: string
          - type: 'null'
          title: Notes
      type: object
      required:
      - jti
      - customer_id
      - customer_name
      - tier
      - kid
      - issued_at
      - expires_at
      - issued_by
      - revoked_at
      - notes
      title: SubscriptionRow
    IssueRequest:
      properties:
        owner_id:
          anyOf:
          - type: string
            maxLength: 64
          - type: 'null'
          title: Owner Id
        customer_name:
          anyOf:
          - type: string
            maxLength: 255
            minLength: 1
          - type: 'null'
          title: Customer Name
        customer_email:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          title: Customer Email
        tier:
          type: string
          enum:
          - team
          - enterprise
          title: Tier
        duration_days:
          type: integer
          maximum: 3650.0
          minimum: 1.0
          title: Duration Days
        notes:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Notes
      type: object
      required:
      - tier
      - duration_days
      title: IssueRequest
      description: 'Issue a new subscription.


        Either provide ``owner_id`` to link to an existing customer record,

        or provide ``customer_name`` (and optionally ``customer_email``) to

        create one inline. When both are given, ``owner_id`` wins.'
    RevokeResponse:
      properties:
        jti:
          type: string
          title: Jti
        revoked_at:
          type: string
          format: date-time
          title: Revoked At
      type: object
      required:
      - jti
      - revoked_at
      title: RevokeResponse
    SubscriptionList:
      properties:
        items:
          items:
            $ref: '#/components/schemas/SubscriptionRow'
          type: array
          title: Items
        total:
          type: integer
          title: Total
      type: object
      required:
      - items
      - total
      title: SubscriptionList
    IssueResponse:
      properties:
        jti:
          type: string
          title: Jti
        customer_id:
          type: string
          title: Customer Id
        owner_id:
          type: string
          title: Owner Id
        customer_name:
          type: string
          title: Customer Name
        tier:
          type: string
          enum:
          - team
          - enterprise
          title: Tier
        issued_at:
          type: string
          format: date-time
          title: Issued At
        expires_at:
          type: string
          format: date-time
          title: Expires At
        kid:
          type: string
          title: Kid
        token:
          type: string
          title: Token
      type: object
      required:
      - jti
      - customer_id
      - owner_id
      - customer_name
      - tier
      - issued_at
      - expires_at
      - kid
      - token
      title: IssueResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError