Jinn MCP gateway API

The single MCP endpoint. Transport is JSON-RPC 2.0 over HTTP POST.

GitHub OpenAPI

Operations 2

POST /api/mcp Call the MCP gateway (JSON-RPC 2.0) #
GET /api/mcp Not supported: use POST #

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/jinn-works:jinn-works-mcp-gateway-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

jinn-works-mcp-gateway-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Jinn gateway (MCP) MCP gateway API
  version: 1.0.0
  summary: 'The public Jinn MCP gateway: one bearer-authed JSON-RPC endpoint that serves an agent a brand''s verified record.'
  description: 'The Jinn gateway is a single, read-only MCP endpoint. Point any MCP client at it with a bearer token and an agent can read a brand — voice, positioning, messaging, product, and design system — before it generates a word.


    It speaks MCP over HTTP: JSON-RPC 2.0 to one URL, with three methods — `initialize`, `tools/list`, and `tools/call`. There is no REST resource tree; this document describes the transport, not a per-tool contract. Call `tools/list` for the exact tool set your token can reach: tier and brand allowlist resolve at request time, so the same bearer keeps working across trial, renewal, and upgrade.


    Auth is a bearer token or Sign in with Jinn (OAuth 2.1 with PKCE; discovery at .well-known/oauth-protected-resource). Tokens are self-serve, read-only, scoped to your own brands, and shown once at mint — see https://jinn.works/docs/mcp for the tool reference, auth model, and error taxonomy.


    Rate limit: 120 requests per minute per token. Over the limit answers HTTP 429 with `Retry-After`.


    Status-code shape: transport-level failures use real HTTP codes (401 for auth, 429 for rate limiting, 202 for accepted notifications, 405 for GET, which needs no token). Every other JSON-RPC error — parse, invalid request, method not found, invalid params, tool failure — rides an HTTP 200 response carrying a JSON-RPC error envelope, per JSON-RPC 2.0.'
  termsOfService: https://jinn.works/api-terms
  contact:
    name: Jinn support
    url: https://jinn.works/contact
servers:
- url: https://app.jinn.works
  description: Jinn gateway
security:
- bearerAuth: []
tags:
- name: MCP gateway
  description: The single MCP endpoint. Transport is JSON-RPC 2.0 over HTTP POST.
  externalDocs:
    url: https://jinn.works/docs/mcp
paths:
  /api/mcp:
    post:
      tags:
      - MCP gateway
      operationId: mcpJsonRpc
      summary: Call the MCP gateway (JSON-RPC 2.0)
      description: 'Supported methods: `initialize` (protocol-version negotiation and server info), `tools/list` (the tools this token can call), and `tools/call` (invoke one).


        MCP notifications (`notifications/*`) are accepted and answered `202` with no body. An unknown method returns a JSON-RPC `method not found` error inside an HTTP 200.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonRpcRequest'
      responses:
        '200':
          description: A JSON-RPC 2.0 response envelope — `result` on success, `error` on any non-transport failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
        '202':
          description: Notification accepted. No body.
        '401':
          description: Missing, malformed, invalid, revoked, or expired bearer token. The body is a JSON-RPC error envelope (code -32001).
          headers:
            WWW-Authenticate:
              description: Bearer challenge (RFC 6750).
              schema:
                type: string
                examples:
                - Bearer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
        '429':
          description: Rate limit exceeded (120 requests per 60s per token). Back off and retry.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
            X-RateLimit-Limit:
              description: Requests allowed in the window.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left in the current window.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix time (seconds) when the window resets.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
    get:
      tags:
      - MCP gateway
      operationId: mcpGetNotAllowed
      summary: 'Not supported: use POST'
      description: 'The gateway offers no server-initiated SSE stream, so GET answers 405 with `Allow: POST` before any auth (MCP spec, Streamable HTTP transport). Every MCP method goes through POST.'
      security: []
      responses:
        '405':
          description: GET is not supported on this endpoint.
          headers:
            Allow:
              description: The supported method.
              schema:
                type: string
                examples:
                - POST
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
components:
  schemas:
    JsonRpcResponse:
      type: object
      required:
      - jsonrpc
      properties:
        jsonrpc:
          type: string
          const: '2.0'
        id:
          anyOf:
          - type: string
          - type: integer
          - type: 'null'
        result:
          type: object
          additionalProperties: true
          description: Method-specific result. Present on success; mutually exclusive with `error`.
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: integer
              description: 'JSON-RPC error code. Standard codes plus the gateway set: -32001 unauthorized, -32002 forbidden scope, -32003 rate limited, -32000 tool error.'
            message:
              type: string
            data:
              type: object
              additionalProperties: true
              description: Machine-readable detail so an agent can branch without parsing prose. Auth failures carry a `code` (token_malformed, token_invalid, token_revoked, token_expired); an expired token also carries `renewal_url` and `tier`. Tool failures carry a `kind` and a `retryable` flag.
    JsonRpcRequest:
      type: object
      required:
      - jsonrpc
      - method
      properties:
        jsonrpc:
          type: string
          const: '2.0'
        id:
          description: Request id, echoed on the response. Omit for a notification (answered 202).
          anyOf:
          - type: string
          - type: integer
        method:
          type: string
          description: One of `initialize`, `tools/list`, `tools/call`, or `notifications/*`.
        params:
          type: object
          additionalProperties: true
          description: 'Method-specific parameters. For `tools/call`: `name` plus an `arguments` object. The per-tool argument shape comes from `tools/list`, not from this document.'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Opaque Jinn token (jmcp_ prefix)
      description: Mint, rotate, and revoke tokens in the token panel at https://jinn.works/account/tokens. Secrets are shown once, at creation.
externalDocs:
  description: 'Developer docs: tool reference, auth model, rate limits, error taxonomy.'
  url: https://jinn.works/docs/mcp