{
  "protocolVersion": "0.3.0",
  "name": "Streamloop",
  "description": "Hosted live-streaming backend: loop a video or playlist to YouTube, Twitch, Facebook Live, or a custom RTMP endpoint 24/7, up to 4K/60fps, with no operator intervention.",
  "version": "1.0.0",
  "url": "https://mcp.streamloop.app/mcp",
  "preferredTransport": "JSONRPC",
  "additionalInterfaces": [
    {
      "url": "https://mcp.streamloop.app/mcp",
      "transport": "JSONRPC",
      "protocol": "MCP",
      "description": "Product MCP — Streamable HTTP, OAuth 2.1 (the management surface: streams, destinations, playlists, billing)."
    },
    {
      "url": "https://streamloop.app/docs/mcp",
      "transport": "JSONRPC",
      "protocol": "MCP",
      "description": "Docs MCP — Mintlify docs search/read, no auth."
    },
    {
      "url": "https://api.streamloop.app/graphql",
      "transport": "HTTP+JSON",
      "protocol": "GraphQL",
      "description": "GraphQL API — full typed surface (introspectable SDL), the source of truth."
    },
    {
      "url": "https://api.streamloop.app/v1",
      "transport": "HTTP+JSON",
      "protocol": "REST",
      "description": "REST API (/v1) — versioned REST over the product API; OpenAPI at https://api.streamloop.app/openapi.json."
    }
  ],
  "supportedInterfaces": [
    {
      "url": "https://mcp.streamloop.app/mcp",
      "transport": "JSONRPC",
      "protocol": "MCP"
    }
  ],
  "provider": {
    "organization": "Streamloop",
    "url": "https://streamloop.app"
  },
  "iconUrl": "https://streamloop.app/icon.svg",
  "documentationUrl": "https://streamloop.app/docs",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/v1",
        "description": "Agent Payments Protocol (AP2) — signed cart/payment mandates for autonomous purchases of Streamloop streaming credits (card via Stripe or Keepz, crypto via 0xProcessing USDC).",
        "required": false
      }
    ]
  },
  "defaultInputModes": ["application/json", "text/plain"],
  "defaultOutputModes": ["application/json", "text/plain"],
  "securitySchemes": {
    "oauth2": {
      "type": "oauth2",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://auth.streamloop.app/api/auth/oauth2/authorize",
          "tokenUrl": "https://auth.streamloop.app/api/auth/oauth2/token",
          "scopes": {
            "streamloop:read": "Read streams, destinations, and billing status",
            "streamloop:write": "Create and control streams and destinations",
            "streamloop:destructive": "Delete streams and destinations",
            "streamloop:billing": "Read billing and usage"
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": ["streamloop:read", "streamloop:write"]
    }
  ],
  "supportsAuthenticatedExtendedCard": false,
  "skills": [
    {
      "id": "create-loop-stream",
      "name": "Create loop stream",
      "description": "Point a source video or playlist at a destination (YouTube, Twitch, Facebook Live, or custom RTMP) and loop it 24/7 up to 4K/60fps.",
      "tags": ["streaming", "rtmp", "youtube", "twitch", "facebook", "loop"],
      "examples": [
        "Loop my highlight reel to YouTube 24/7",
        "Stream this playlist to Twitch in 1080p"
      ],
      "inputModes": ["application/json"],
      "outputModes": ["application/json"]
    },
    {
      "id": "stream-status",
      "name": "Get stream status",
      "description": "Report the live/health state of a running stream.",
      "tags": ["status", "monitoring"]
    },
    {
      "id": "manage-playlist",
      "name": "Manage playlist live",
      "description": "Add, replace, or reorder videos and audio while a stream is live; changes apply almost instantly.",
      "tags": ["playlist", "hot-replace"]
    }
  ]
}
