trash_list_profiles
List quality profiles from TRaSH Guides for Radarr or Sonarr, showing recommended profiles for 1080p, 4K, Remux, and more.
Instructions
List available TRaSH Guides quality profiles for Radarr or Sonarr. Shows recommended profiles for different use cases (1080p, 4K, Remux, etc.)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Which service to get profiles for |
Implementation Reference
- src/index.ts:756-769 (registration)Tool registration: defines the 'trash_list_profiles' tool with schema requiring a 'service' enum parameter (radarr or sonarr)
name: "trash_list_profiles", description: "List available TRaSH Guides quality profiles for Radarr or Sonarr. Shows recommended profiles for different use cases (1080p, 4K, Remux, etc.)", inputSchema: { type: "object" as const, properties: { service: { type: "string", enum: ["radarr", "sonarr"], description: "Which service to get profiles for", }, }, required: ["service"], }, }, - src/index.ts:2072-2089 (handler)Handler: the switch case that executes the 'trash_list_profiles' tool logic by calling trashClient.listProfiles(service) and returning the list of profile names with descriptions
case "trash_list_profiles": { const service = (args as { service: TrashService }).service; const profiles = await trashClient.listProfiles(service); return { content: [{ type: "text", text: JSON.stringify({ service, count: profiles.length, profiles: profiles.map(p => ({ name: p.name, description: p.description?.replace(/<br>/g, ' ') || 'No description', })), usage: "Use trash_get_profile to see full details for a specific profile", }, null, 2), }], }; } - src/trash-client.ts:228-254 (helper)Helper: TrashClient.listProfiles() - fetches quality profile list from the TRaSH Guides GitHub repo, with caching. Returns profile names and descriptions.
async listProfiles(service: TrashService): Promise<{ name: string; description?: string }[]> { // Check cache const cached = cache.getProfileList(service); if (cached) { // Fetch details for each const profiles = await Promise.all( cached.map(name => this.getProfile(service, name)) ); return profiles.filter((p): p is TrashQualityProfile => p !== null).map(p => ({ name: p.name, description: p.trash_description, })); } // Fetch list from GitHub const profileNames = await listGitHubDir(`${service}/quality-profiles`); cache.setProfileList(service, profileNames); // Fetch details const profiles = await Promise.all( profileNames.map(name => this.getProfile(service, name)) ); return profiles.filter((p): p is TrashQualityProfile => p !== null).map(p => ({ name: p.name, description: p.trash_description, })); } - src/trash-client.ts:259-273 (helper)Helper: TrashClient.getProfile() - fetches a specific quality profile JSON from TRaSH Guides repo, used by listProfiles to get details for each profile
async getProfile(service: TrashService, profileName: string): Promise<TrashQualityProfile | null> { const key = `${service}/${profileName}`; const cached = cache.getProfile(key); if (cached) return cached; try { const profile = await fetchJSON<TrashQualityProfile>( `${TRASH_BASE_URL}/${service}/quality-profiles/${profileName}.json` ); cache.setProfile(key, profile); return profile; } catch { return null; } }