Skip to main content
Glama

getVideoCategories

Retrieve YouTube video categories for a specific region to filter trending videos and perform category-specific operations. Supports two-letter country codes for regional category variations.

Instructions

Retrieves available video categories for a specific region. Returns a list of YouTube video categories with their IDs and titles that can be used for filtering trending videos or other category-specific operations. Different regions may have different available categories.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
regionCodeNoTwo-letter country code (e.g., 'US', 'GB', 'JP'). Defaults to 'US'US

Implementation Reference

  • The getVideoCategoriesHandler function implements the core logic of the tool by parsing input parameters and calling the YouTube service to fetch video categories.
    export const getVideoCategoriesHandler = async ( params: VideoCategoriesParams, youtubeService: YoutubeService ): Promise<CallToolResult> => { try { const validatedParams = getVideoCategoriesSchema.parse(params); const { regionCode } = validatedParams; const categories = await youtubeService.getVideoCategories(regionCode); return formatSuccess(categories); } catch (error: unknown) { return formatError(error); } };
  • Zod schema for validating the input parameters (regionCode) of the getVideoCategories tool.
    export const getVideoCategoriesSchema = z.object({ regionCode: regionCodeSchema .default("US") .describe( "Two-letter country code (e.g., 'US', 'GB', 'JP'). Defaults to 'US'" ), });
  • Registration of the getVideoCategories tool within the allTools function, including config and a wrapped handler that injects the youtubeService dependency.
    { config: getVideoCategoriesConfig, handler: (params) => getVideoCategoriesHandler( params as unknown as VideoCategoriesParams, youtubeService ), },
  • The YoutubeService.getVideoCategories method implements the YouTube API interaction to list video categories for a region, including caching and error handling. This is called by the tool handler.
    async getVideoCategories(regionCode: string = "US") { const cacheKey = this.cacheService.createOperationKey( "getVideoCategories", { regionCode, } ); const operation = async () => { try { const response = await this.trackCost( () => this.youtube.videoCategories.list({ part: ["snippet"], regionCode: regionCode, }), API_COSTS["videoCategories.list"] ); const categories = response.data.items?.map((category) => ({ id: category.id, title: category.snippet?.title, })); return categories || []; } catch (error) { throw new YouTubeApiError( `YouTube API call for getVideoCategories failed for regionCode: ${regionCode}`, error ); } }; return this.cacheService.getOrSet( cacheKey, operation, CACHE_TTLS.STATIC, CACHE_COLLECTIONS.VIDEO_CATEGORIES, { regionCode } ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kirbah/mcp-youtube'

If you have feedback or need assistance with the MCP directory API, please join our Discord server