openapi: 3.0.3
info:
  title: osintelite — MCP Server
  version: 0.1.0
  description: |
    osintelite exposes every API on the platform as
    [Model Context Protocol](https://modelcontextprotocol.io/) tools, so any
    MCP-aware AI agent (Claude Desktop, Claude Code, custom agents using the
    Anthropic SDK) can call them directly.

    **Transport**: [Streamable HTTP](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http).
    Single POST endpoint at `/mcp` accepting JSON-RPC 2.0 messages. The server
    returns a single `application/json` response per request (no SSE).

    **Authentication**: include your osintelite `x-api-key` on every request.
    The same key is used to authorize the underlying tool calls — no
    additional setup needed.

    **Adding to a client**:

    ```bash
    # Claude Code
    claude mcp add osintelite --transport http --url https://mcp.osintelite.com/mcp \
      --header "x-api-key: $OSINTELITE_API_KEY"
    ```

    ```json
    // Claude Desktop config (~/.claude/desktop_config.json)
    {
      "mcpServers": {
        "osintelite": {
          "type": "http",
          "url": "https://mcp.osintelite.com/mcp",
          "headers": { "x-api-key": "YOUR_KEY" }
        }
      }
    }
    ```

    The server exposes one MCP tool per operation across the
    Identity, Telegram, Profiles, LinkedIn, Instagram, TikTok, VK, OK,
    GitHub, Twitter, YouTube, Pinterest and Snapchat APIs.
  contact:
    name: osintelite support
    url: https://osintelite.com
servers:
  - url: https://mcp.osintelite.com
    description: Production
tags:
  - name: MCP
    description: |
      Model Context Protocol endpoint. POST JSON-RPC 2.0 requests here. See
      the official spec at https://modelcontextprotocol.io/ for the wire
      protocol; the supported methods are `initialize`, `tools/list`,
      `tools/call`, and `ping`.
x-tagGroups:
  - name: MCP
    tags: [MCP]
security:
  - ApiKeyAuth: []
paths:
  /mcp:
    post:
      tags: [MCP]
      summary: JSON-RPC 2.0 endpoint
      description: |
        Send a JSON-RPC 2.0 message. Supported methods:

        - `initialize` — handshake. Returns server `capabilities` and
          `serverInfo`.
        - `tools/list` — returns the full catalog of tools (one per
          osintelite API operation) with JSON-Schema input schemas.
        - `tools/call` — invoke a single tool. Arguments must match the
          tool's `inputSchema`. The tool's HTTP call is made under your
          `x-api-key`.
        - `ping` — liveness check.

        The endpoint is **stateless**: the server does not issue an
        `Mcp-Session-Id` header. Each request stands alone.
      operationId: mcpRpc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: A JSON-RPC 2.0 request, notification, or response.
              required: [jsonrpc]
              properties:
                jsonrpc:
                  type: string
                  enum: ['2.0']
                id:
                  oneOf:
                    - { type: string }
                    - { type: integer }
                  description: Request id (omit for notifications).
                method:
                  type: string
                  example: tools/list
                params:
                  type: object
            examples:
              initialize:
                summary: initialize handshake
                value:
                  jsonrpc: '2.0'
                  id: 1
                  method: initialize
                  params:
                    protocolVersion: '2025-06-18'
                    capabilities: {}
                    clientInfo:
                      name: example-client
                      version: '1.0'
              listTools:
                summary: list available tools
                value:
                  jsonrpc: '2.0'
                  id: 2
                  method: tools/list
              callTool:
                summary: invoke a tool
                value:
                  jsonrpc: '2.0'
                  id: 3
                  method: tools/call
                  params:
                    name: github_getUser
                    arguments:
                      username: torvalds
      responses:
        '200':
          description: JSON-RPC response (single JSON object).
          content:
            application/json:
              schema:
                type: object
                required: [jsonrpc]
                properties:
                  jsonrpc: { type: string, enum: ['2.0'] }
                  id:
                    oneOf:
                      - { type: string }
                      - { type: integer }
                  result: { type: object }
                  error:
                    type: object
                    properties:
                      code: { type: integer }
                      message: { type: string }
                      data: {}
              example:
                jsonrpc: '2.0'
                id: 3
                result:
                  content:
                    - type: text
                      text: |
                        {"status":"OK","request_id":"...","data":{"profile":{"username":"torvalds","display_name":"Linus Torvalds"}}}
                  structuredContent:
                    status: OK
                    request_id: 1bc77d23-9b71-4f73-b6e6-37c19c4e9b4b
                    data:
                      profile:
                        username: torvalds
                        display_name: Linus Torvalds
        '202':
          description: Notification accepted (no body).
        '400':
          description: Malformed JSON-RPC request.
        '401':
          description: Missing or invalid `x-api-key`.

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
