Skip to main content
Glama

quality_profiles

List and recommend quality profiles for media services to optimize download settings and ensure consistent media quality standards.

Instructions

List available quality profiles with recommendations

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
serviceYes

Implementation Reference

  • Core handler implementation that fetches quality profiles from the ARR API (/qualityprofile), maps response data, selects a recommended profile using helper, and returns structured OperationResult<QualityProfileData>.
    async listQualityProfiles(): Promise<OperationResult<QualityProfileData>> { debugOperation(this.serviceName, "listQualityProfiles"); try { const response: QualityProfile[] = await fetchJson( this.buildApiUrl("/qualityprofile"), ); const profiles = Array.isArray(response) ? response : []; const profileData = profiles.map((profile: QualityProfile) => ({ id: profile.id, name: profile.name, upgradeAllowed: profile.upgradeAllowed, cutoff: profile.cutoff, })); const recommendedId = this.selectBestQualityProfile(profiles); return { ok: true, data: { service: this.serviceName, mediaKind: this.mediaKind, total: profileData.length, profiles: profileData, recommended: recommendedId ?? undefined, }, }; } catch (error) { return handleError(error, this.serviceName); } }
  • src/index.ts:126-133 (registration)
    MCP tool registration in the tools array, defining name, description, and inputSchema requiring 'service'.
    name: "quality_profiles", description: "List available quality profiles with recommendations", inputSchema: { type: "object", properties: { service: { type: "string" } }, required: ["service"], }, },
  • Dispatch handler in the main CallToolRequestSchema switch statement that invokes the service.listQualityProfiles() method.
    case "quality_profiles": return await service.listQualityProfiles();
  • TypeScript interface defining the output structure for quality profiles data returned by the handler.
    export interface QualityProfileData { service: string; mediaKind: "series" | "movie"; total: number; profiles: QualityProfile[]; recommended?: number; }
  • Helper method to intelligently select the best quality profile based on service name patterns (e.g., 4K, HD, anime) for recommendations and auto-add.
    private selectBestQualityProfile(profiles: QualityProfile[]): number | null { // Sort profiles by preference based on service name patterns and common naming const serviceName = this.serviceName.toLowerCase(); // Define quality profile preferences based on service naming patterns const qualityPreferences = [ // 4K/UHD service patterns ...(serviceName.includes("4k") || serviceName.includes("uhd") || serviceName.includes("2160") ? [/4k|uhd|2160p?/i, /ultra.*hd|hd.*ultra/i] : []), // HD/1080p service patterns ...(serviceName.includes("hd") || serviceName.includes("1080") ? [/1080p?|hd(?!\s*4k)/i, /high.*def|def.*high/i] : []), // Anime-specific patterns ...(serviceName.includes("anime") ? [/anime/i] : []), // General fallback patterns (prefer common resolutions) /1080p?/i, /720p?/i, /any|default|standard/i, ]; // Try to find a profile matching our preferences for (const pattern of qualityPreferences) { const matchingProfile = profiles.find((profile: QualityProfile) => pattern.test(profile.name), ); if (matchingProfile) { return matchingProfile.id; } } // If no smart match found, use the first profile but only if there's exactly one // This prevents accidentally selecting a random profile when multiple exist if (profiles.length === 1) { return profiles[0]?.id || null; } // Multiple profiles available but no smart match - require explicit selection return null; }

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/thesammykins/FlixBridge'

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