KickMCP

Local 2025-09-01 00:51:49 0
Developer Tools @NosytLabs/KickMCP

A high-performance Model Context Protocol server implementation that provides a standardized interface for third-party applications to integrate with Kick streaming platform API.


npm version License: MIT TypeScript

? A powerful Model Context Protocol (MCP) server for seamless Kick.com API integration

? Table of Contents

? Quick Start

  1. Install the package:

    npm install kick-mcp

  2. Create your MCP configuration (mcp.json):

    {
      "mcpServers": {
        "kickmcp": {
          "command": "node",
          "args": ["./dist/bin/mcp.js"]
        }
      },
      "version": "1.0.0",
      "description": "MCP configuration for KickMCP project",
      "defaultServer": "kickmcp"

  3. Get your credentials:

  4. Visit Kick Developer Settings to obtain your Client ID
  5. Get your Smithery key from Smithery.ai

✨ Features

  • Complete Kick API Integration:
  • Authentication (OAuth, App Access Tokens)
  • Chat messaging with reply support
  • Channel information by ID and slug
  • User profile management
  • Stream control (start/stop/update)
  • Polls and predictions
  • Livestream status webhooks
  • Category search and trending content

  • MCP Standard Compliance:

  • JSON-RPC 2.0 interface
  • Standardized authentication
  • Extensible endpoints
  • AI assistant compatibility

  • Developer Experience:

  • Modern TypeScript codebase
  • Comprehensive documentation
  • Built-in diagnostics
  • Consistent error handling

? User Guides

? For Viewers

Enhance your viewing experience with KickMCP:

  • Chat Integration: Build custom chat clients with real-time message support
  • Channel Notifications: Get alerts when your favorite streamers go live
  • Content Discovery: Find new channels and trending categories

Example: Setting up chat notifications

const kickmcp = require('kick-mcp');

kickmcp.on('chatMessage', (message) => {
  if (message.mentions.includes(yourUsername)) {
    sendNotification(`${message.sender} mentioned you!`);
  }
});

? For Streamers

Optimize your streaming workflow:

  • Stream Management: Control your stream settings programmatically
  • Chat Moderation: Build custom moderation tools
  • Analytics: Track viewer engagement and channel growth
  • Polls & Predictions: Create interactive content

Example: Creating a poll

const poll = await kickmcp.createPoll({
  question: "What game next?",
  options: ["Minecraft", "Fortnite", "Valorant"],
  duration: 300 // 5 minutes
});

? For Developers

Build powerful Kick.com integrations:

  • OAuth Authentication: Secure user authentication flow
  • Webhooks: Real-time event processing
  • RESTful API: Complete API coverage
  • TypeScript Support: Full type definitions

Example: Setting up webhooks

const webhook = await kickmcp.createWebhook({
  events: ['stream.online', 'stream.offline'],
  url: 'https://your-server.com/webhook'
});

? Installation

npm install kick-mcp

# or with yarn
yarn add kick-mcp

? Authentication Setup

  1. Visit Kick Developer Settings
  2. Create a new application
  3. Copy your Client ID and Client Secret
  4. Configure your MCP server:
const kickmcp = require('kick-mcp');

kickmcp.configure({
  clientId: 'YOUR_CLIENT_ID',
  clientSecret: 'YOUR_CLIENT_SECRET'
});

? API Documentation

For detailed API documentation, visit: - Kick API Documentation - KickMCP TypeDoc

? Troubleshooting

Common issues and solutions:

  1. Authentication Errors
  2. Verify your Client ID and Secret
  3. Check your OAuth redirect URI
  4. Ensure your Smithery key is valid

  5. Rate Limiting

  6. Implement proper request throttling
  7. Use caching where appropriate
  8. Monitor your API usage

? Contributing

We welcome contributions! Please see our Contributing Guide for details.

? License

MIT © NosytLabs

[
  {
    "description": "Get OAuth authorization URL",
    "inputSchema": {
      "properties": {
        "client_id": {
          "description": "Client ID",
          "type": "string"
        },
        "code_challenge": {
          "description": "PKCE code challenge",
          "type": "string"
        },
        "code_challenge_method": {
          "description": "Code challenge method (S256 recommended)",
          "type": "string"
        },
        "redirect_uri": {
          "description": "Redirect URI",
          "type": "string"
        },
        "scope": {
          "description": "Scope (e.g., user:read channel:read chat:write)",
          "type": "string"
        },
        "state": {
          "description": "Random string to maintain state between request and callback",
          "type": "string"
        }
      },
      "required": [
        "client_id",
        "redirect_uri",
        "scope"
      ],
      "type": "object"
    },
    "name": "getOAuthUrl"
  },
  {
    "description": "Exchange code for token",
    "inputSchema": {
      "properties": {
        "client_id": {
          "description": "Client ID",
          "type": "string"
        },
        "client_secret": {
          "description": "Client Secret",
          "type": "string"
        },
        "code": {
          "description": "Authorization code",
          "type": "string"
        },
        "code_verifier": {
          "description": "PKCE code verifier to validate the code challenge",
          "type": "string"
        },
        "redirect_uri": {
          "description": "Redirect URI (must match the one used in authorization)",
          "type": "string"
        }
      },
      "required": [
        "client_id",
        "client_secret",
        "code",
        "redirect_uri"
      ],
      "type": "object"
    },
    "name": "getAccessToken"
  },
  {
    "description": "Refresh expired token",
    "inputSchema": {
      "properties": {
        "client_id": {
          "description": "Client ID",
          "type": "string"
        },
        "client_secret": {
          "description": "Client Secret",
          "type": "string"
        },
        "refresh_token": {
          "description": "Refresh token",
          "type": "string"
        }
      },
      "required": [
        "client_id",
        "client_secret",
        "refresh_token"
      ],
      "type": "object"
    },
    "name": "refreshAccessToken"
  },
  {
    "description": "Validate access token",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "validateToken"
  },
  {
    "description": "Revoke access token",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "revokeToken"
  },
  {
    "description": "Get user profile",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserProfile"
  },
  {
    "description": "Update user profile",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "data": {
          "description": "Profile data to update",
          "type": "object"
        }
      },
      "required": [
        "access_token",
        "data"
      ],
      "type": "object"
    },
    "name": "updateUserProfile"
  },
  {
    "description": "Get user subscriptions",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserSubscriptions"
  },
  {
    "description": "Get user emotes",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserEmotes"
  },
  {
    "description": "Get user badges",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserBadges"
  },
  {
    "description": "Get followed channels",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserFollows"
  },
  {
    "description": "Get blocked users",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserBlockedUsers"
  },
  {
    "description": "Get user clips",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserClips"
  },
  {
    "description": "Get user videos",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserVideos"
  },
  {
    "description": "Get user highlights",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserHighlights"
  },
  {
    "description": "Get scheduled streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserScheduledStreams"
  },
  {
    "description": "Get notifications",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserNotifications"
  },
  {
    "description": "Get wallet info",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserWallet"
  },
  {
    "description": "Get gift history",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getUserGifts"
  },
  {
    "description": "Get chat messages",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChatMessages"
  },
  {
    "description": "Send chat message",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "message": {
          "description": "Message text",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "message"
      ],
      "type": "object"
    },
    "name": "sendChatMessage"
  },
  {
    "description": "Get chat settings",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChatSettings"
  },
  {
    "description": "Ban user from chat",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "user_id": {
          "description": "User ID to ban",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "user_id"
      ],
      "type": "object"
    },
    "name": "banUser"
  },
  {
    "description": "Unban user from chat",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "user_id": {
          "description": "User ID to unban",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "user_id"
      ],
      "type": "object"
    },
    "name": "unbanUser"
  },
  {
    "description": "Timeout user",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "duration": {
          "description": "Timeout duration in seconds",
          "type": "integer"
        },
        "user_id": {
          "description": "User ID to timeout",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "user_id",
        "duration"
      ],
      "type": "object"
    },
    "name": "timeoutUser"
  },
  {
    "description": "Delete chat message",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "message_id": {
          "description": "Message ID to delete",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "message_id"
      ],
      "type": "object"
    },
    "name": "deleteMessage"
  },
  {
    "description": "Clear all chat messages",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "clearChat"
  },
  {
    "description": "Get chat user info",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "user_id": {
          "description": "User ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "user_id"
      ],
      "type": "object"
    },
    "name": "getChatUserInfo"
  },
  {
    "description": "Get channel information",
    "inputSchema": {
      "properties": {
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelInfo"
  },
  {
    "description": "Get channel followers",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelFollowers"
  },
  {
    "description": "Get channel subscribers",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelSubscribers"
  },
  {
    "description": "Get channel emotes",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelEmotes"
  },
  {
    "description": "Get channel badges",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelBadges"
  },
  {
    "description": "Get channel moderators",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelModerators"
  },
  {
    "description": "Get channel banned users",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelBans"
  },
  {
    "description": "Get channel VIP users",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelVips"
  },
  {
    "description": "Get channel clips",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelClips"
  },
  {
    "description": "Get channel videos",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelVideos"
  },
  {
    "description": "Get channel highlights",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelHighlights"
  },
  {
    "description": "Get channel scheduled streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelScheduledStreams"
  },
  {
    "description": "Get channel chat rules",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelChatRules"
  },
  {
    "description": "Get channel chat commands",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelChatCommands"
  },
  {
    "description": "Get channel categories",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelCategories"
  },
  {
    "description": "Get channel tags",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelTags"
  },
  {
    "description": "Get channel gift history",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelGifts"
  },
  {
    "description": "Get channel raid history",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelRaids"
  },
  {
    "description": "Get channel host history",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelHosts"
  },
  {
    "description": "Get list of current livestreams",
    "inputSchema": {
      "properties": {},
      "type": "object"
    },
    "name": "getLivestreams"
  },
  {
    "description": "Get livestream by slug",
    "inputSchema": {
      "properties": {
        "slug": {
          "description": "Stream slug",
          "type": "string"
        }
      },
      "required": [
        "slug"
      ],
      "type": "object"
    },
    "name": "getLivestreamBySlug"
  },
  {
    "description": "Start streaming",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "startStream"
  },
  {
    "description": "End stream",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "endStream"
  },
  {
    "description": "Update stream info",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "data": {
          "description": "Stream info data",
          "type": "object"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "data"
      ],
      "type": "object"
    },
    "name": "updateStreamInfo"
  },
  {
    "description": "Update stream settings",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "data": {
          "description": "Stream settings data",
          "type": "object"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "data"
      ],
      "type": "object"
    },
    "name": "updateStreamSettings"
  },
  {
    "description": "Get stream information",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getStreamInfo"
  },
  {
    "description": "Get stream viewers",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getStreamViewers"
  },
  {
    "description": "Get stream categories",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getStreamCategories"
  },
  {
    "description": "Get stream tags",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getStreamTags"
  },
  {
    "description": "Get stream statistics",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getStreamStats"
  },
  {
    "description": "Create poll",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "duration": {
          "description": "Poll duration in seconds",
          "type": "integer"
        },
        "options": {
          "description": "Poll options",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "description": "Poll title",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "title",
        "options",
        "duration"
      ],
      "type": "object"
    },
    "name": "createPoll"
  },
  {
    "description": "End active poll",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "poll_id": {
          "description": "Poll ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "poll_id"
      ],
      "type": "object"
    },
    "name": "endPoll"
  },
  {
    "description": "Create prediction",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "duration": {
          "description": "Prediction duration in seconds",
          "type": "integer"
        },
        "options": {
          "description": "Prediction outcomes",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "description": "Prediction title",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "title",
        "options",
        "duration"
      ],
      "type": "object"
    },
    "name": "createPrediction"
  },
  {
    "description": "End prediction",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "prediction_id": {
          "description": "Prediction ID",
          "type": "string"
        },
        "winning_outcome_id": {
          "description": "Winning outcome ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "prediction_id",
        "winning_outcome_id"
      ],
      "type": "object"
    },
    "name": "endPrediction"
  },
  {
    "description": "Create stream marker",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "description": {
          "description": "Marker description",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "description"
      ],
      "type": "object"
    },
    "name": "createMarker"
  },
  {
    "description": "Create webhook",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "events": {
          "description": "Event types to subscribe to",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "url": {
          "description": "Webhook URL",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "url",
        "events"
      ],
      "type": "object"
    },
    "name": "createWebhook"
  },
  {
    "description": "Delete webhook",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "webhook_id": {
          "description": "Webhook ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "webhook_id"
      ],
      "type": "object"
    },
    "name": "deleteWebhook"
  },
  {
    "description": "List webhooks",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "listWebhooks"
  },
  {
    "description": "Get available webhook events",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getWebhookEvents"
  },
  {
    "description": "Verify webhook signature",
    "inputSchema": {
      "properties": {
        "body": {
          "description": "Body content",
          "type": "string"
        },
        "message_id": {
          "description": "Message ID",
          "type": "string"
        },
        "signature": {
          "description": "Signature to verify",
          "type": "string"
        },
        "timestamp": {
          "description": "Timestamp",
          "type": "string"
        }
      },
      "required": [
        "signature",
        "message_id",
        "timestamp",
        "body"
      ],
      "type": "object"
    },
    "name": "verifyWebhookSignature"
  },
  {
    "description": "Get public key for signature verification",
    "inputSchema": {
      "properties": {},
      "type": "object"
    },
    "name": "getPublicKey"
  },
  {
    "description": "Get example webhook payloads",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "event_type": {
          "description": "Event type",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "event_type"
      ],
      "type": "object"
    },
    "name": "getWebhookPayloads"
  },
  {
    "description": "Retry failed webhook",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "message_id": {
          "description": "Message ID",
          "type": "string"
        },
        "webhook_id": {
          "description": "Webhook ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "webhook_id",
        "message_id"
      ],
      "type": "object"
    },
    "name": "retryWebhook"
  },
  {
    "description": "Check webhook subscription status",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "webhook_id": {
          "description": "Webhook ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "webhook_id"
      ],
      "type": "object"
    },
    "name": "checkWebhookSubscriptionStatus"
  },
  {
    "description": "Search channels",
    "inputSchema": {
      "properties": {
        "query": {
          "description": "Search query",
          "type": "string"
        }
      },
      "required": [
        "query"
      ],
      "type": "object"
    },
    "name": "searchChannels"
  },
  {
    "description": "Search streams",
    "inputSchema": {
      "properties": {
        "query": {
          "description": "Search query",
          "type": "string"
        }
      },
      "required": [
        "query"
      ],
      "type": "object"
    },
    "name": "searchStreams"
  },
  {
    "description": "Search users",
    "inputSchema": {
      "properties": {
        "query": {
          "description": "Search query",
          "type": "string"
        }
      },
      "required": [
        "query"
      ],
      "type": "object"
    },
    "name": "searchUsers"
  },
  {
    "description": "Search categories",
    "inputSchema": {
      "properties": {
        "query": {
          "description": "Search query",
          "type": "string"
        }
      },
      "required": [
        "query"
      ],
      "type": "object"
    },
    "name": "searchCategories"
  },
  {
    "description": "Get categories",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        }
      },
      "required": [
        "access_token"
      ],
      "type": "object"
    },
    "name": "getCategories"
  },
  {
    "description": "Get category",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "category_id": {
          "description": "Category ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "category_id"
      ],
      "type": "object"
    },
    "name": "getCategory"
  },
  {
    "description": "Get category streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "category_id": {
          "description": "Category ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "category_id"
      ],
      "type": "object"
    },
    "name": "getCategoryStreams"
  },
  {
    "description": "Get top streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "category_id": {
          "description": "Category ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "category_id"
      ],
      "type": "object"
    },
    "name": "getTopStreams"
  },
  {
    "description": "Get recommended streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "category_id": {
          "description": "Category ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "category_id"
      ],
      "type": "object"
    },
    "name": "getRecommendedStreams"
  },
  {
    "description": "Get followed streams",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "category_id": {
          "description": "Category ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "category_id"
      ],
      "type": "object"
    },
    "name": "getFollowedStreams"
  },
  {
    "description": "Create clip",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        },
        "end_time": {
          "description": "Clip end time in seconds",
          "type": "integer"
        },
        "start_time": {
          "description": "Clip start time in seconds",
          "type": "integer"
        }
      },
      "required": [
        "access_token",
        "channel_id",
        "start_time",
        "end_time"
      ],
      "type": "object"
    },
    "name": "createClip"
  },
  {
    "description": "Get clip",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "clip_id": {
          "description": "Clip ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "clip_id"
      ],
      "type": "object"
    },
    "name": "getClip"
  },
  {
    "description": "Delete clip",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "clip_id": {
          "description": "Clip ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "clip_id"
      ],
      "type": "object"
    },
    "name": "deleteClip"
  },
  {
    "description": "Update clip",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "clip_id": {
          "description": "Clip ID",
          "type": "string"
        },
        "description": {
          "description": "Clip description",
          "type": "string"
        },
        "title": {
          "description": "Clip title",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "clip_id",
        "title",
        "description"
      ],
      "type": "object"
    },
    "name": "updateClip"
  },
  {
    "description": "Get channel by slug",
    "inputSchema": {
      "properties": {
        "slug": {
          "description": "Channel slug",
          "type": "string"
        }
      },
      "required": [
        "slug"
      ],
      "type": "object"
    },
    "name": "getChannelBySlug"
  },
  {
    "description": "Get app access token",
    "inputSchema": {
      "properties": {
        "client_id": {
          "description": "Client ID",
          "type": "string"
        },
        "client_secret": {
          "description": "Client Secret",
          "type": "string"
        }
      },
      "required": [
        "client_id",
        "client_secret"
      ],
      "type": "object"
    },
    "name": "getAppAccessToken"
  },
  {
    "description": "Get chat sender identity",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChatSenderIdentity"
  },
  {
    "description": "Get channel subscription status",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "channel_id": {
          "description": "Channel ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "channel_id"
      ],
      "type": "object"
    },
    "name": "getChannelSubscriptionStatus"
  },
  {
    "description": "Get webhook subscriptions",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "webhook_id": {
          "description": "Webhook ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "webhook_id"
      ],
      "type": "object"
    },
    "name": "getWebhookSubscriptions"
  },
  {
    "description": "Update webhook subscriptions",
    "inputSchema": {
      "properties": {
        "access_token": {
          "description": "Access token",
          "type": "string"
        },
        "subscriptions": {
          "description": "Webhook subscriptions",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "webhook_id": {
          "description": "Webhook ID",
          "type": "string"
        }
      },
      "required": [
        "access_token",
        "webhook_id",
        "subscriptions"
      ],
      "type": "object"
    },
    "name": "updateWebhookSubscriptions"
  }
]