Skip to main content
Glama

trash_get_naming

Retrieve TRaSH Guides naming conventions for Radarr or Sonarr to organize media files for Plex, Emby, Jellyfin, or standard setups.

Instructions

Get TRaSH Guides recommended naming conventions for your media server (Plex, Emby, Jellyfin, or standard)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
serviceYesWhich service
mediaServerYesWhich media server you use

Implementation Reference

  • Tool schema definition for 'trash_get_naming', specifying input parameters service (radarr/sonarr) and mediaServer (plex/emby/jellyfin/standard). Part of TOOLS array registration.
    name: "trash_get_naming", description: "Get TRaSH Guides recommended naming conventions for your media server (Plex, Emby, Jellyfin, or standard)", inputSchema: { type: "object" as const, properties: { service: { type: "string", enum: ["radarr", "sonarr"], description: "Which service", }, mediaServer: { type: "string", enum: ["plex", "emby", "jellyfin", "standard"], description: "Which media server you use", }, }, required: ["service", "mediaServer"], },
  • MCP server handler for 'trash_get_naming' tool call. Extracts arguments, fetches data via trashClient.getNaming(service), maps media server variants, formats and returns recommended naming conventions.
    case "trash_get_naming": { const { service, mediaServer } = args as { service: TrashService; mediaServer: string }; const naming = await trashClient.getNaming(service); if (!naming) { return { content: [{ type: "text", text: JSON.stringify({ error: `Could not fetch naming conventions for ${service}` }, null, 2), }], isError: true, }; } // Map media server to naming key const serverMap: Record<string, { folder: string; file: string }> = { plex: { folder: 'plex-imdb', file: 'plex-imdb' }, emby: { folder: 'emby-imdb', file: 'emby-imdb' }, jellyfin: { folder: 'jellyfin-imdb', file: 'jellyfin-imdb' }, standard: { folder: 'default', file: 'standard' }, }; const keys = serverMap[mediaServer] || serverMap.standard; return { content: [{ type: "text", text: JSON.stringify({ service, mediaServer, recommended: { folder: naming.folder[keys.folder] || naming.folder.default, file: naming.file[keys.file] || naming.file.standard, ...(naming.season && { season: naming.season[keys.folder] || naming.season.default }), ...(naming.series && { series: naming.series[keys.folder] || naming.series.default }), }, allFolderOptions: Object.keys(naming.folder), allFileOptions: Object.keys(naming.file), }, null, 2), }], }; }
  • Core implementation of trashClient.getNaming(service): checks cache, fetches naming JSON from TRaSH Guides GitHub repo if needed, caches and returns TrashNaming data.
    async getNaming(service: TrashService): Promise<TrashNaming | null> { const cached = cache.getNaming(service); if (cached) return cached; try { const naming = await fetchJSON<TrashNaming>( `${TRASH_BASE_URL}/${service}/naming/${service}-naming.json` ); cache.setNaming(service, naming); return naming; } catch { return null; } }
  • src/index.ts:750-752 (registration)
    Registration of all tools (including trash_get_naming) via ListToolsRequestSchema handler returning the TOOLS array.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: TOOLS }; });
  • Singleton export of TrashClient instance used by the handler.
    export const trashClient = new TrashClient();

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/aplaceforallmystuff/mcp-arr'

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