Skip to main content
Glama

trakt_start_scrobbling

Start scrobbling your Plex media playback progress to Trakt.tv in real time.

Instructions

Enable real-time scrobbling to Trakt.tv

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ratingKeyYesPlex media rating key
titleYesMedia title
typeYesMedia type
progressYesCurrent progress percentage (0-100)
durationNoTotal duration in milliseconds

Implementation Reference

  • The main handler function that executes the trakt_start_scrobbling tool logic. It takes session data (ratingKey, title, type, progress, duration) and returns a success response indicating scrobbling capability was initialized.
    async traktStartScrobbling(sessionData: {
      ratingKey: string;
      title: string;
      type: 'movie' | 'episode';
      progress: number;
      duration?: number;
    }): Promise<Record<string, unknown>> {
      if (!this.isInitialized) {
        this.initializeTraktClient();
      }
    
      try {
        // This would integrate with real Plex session monitoring
        // For now, demonstrate the capability
        
        return {
          success: true,
          message: 'Scrobbling capability initialized',
          note: 'Real-time scrobbling requires integration with Plex webhook system',
          sessionData: {
            ratingKey: sessionData.ratingKey,
            title: sessionData.title,
            type: sessionData.type,
            progress: sessionData.progress
          }
        };
      } catch (error) {
        return {
          success: false,
          error: error instanceof Error ? error.message : 'Failed to start scrobbling'
        };
      }
    }
  • Input schema definition for the trakt_start_scrobbling tool, specifying the name, description, and input properties (ratingKey, title, type, progress, duration).
    {
      name: "trakt_start_scrobbling",
      description: "Enable real-time scrobbling to Trakt.tv",
      inputSchema: {
        type: "object" as const,
        properties: {
          ratingKey: { type: "string", description: "Plex media rating key" },
          title: { type: "string", description: "Media title" },
          type: { type: "string", enum: ["movie", "episode"], description: "Media type" },
          progress: { type: "number", description: "Current progress percentage (0-100)" },
          duration: { type: "number", description: "Total duration in milliseconds" },
        },
        required: ["ratingKey", "title", "type", "progress"],
      },
    },
  • Registration of the trakt_start_scrobbling tool in the Trakt tool registry, mapping it to the traktStartScrobbling function with argument extraction.
    registry.register("trakt_start_scrobbling", (args) =>
      traktFunctions.traktStartScrobbling({
        ratingKey: args.ratingKey as string,
        title: args.title as string,
        type: args.type as "movie" | "episode",
        progress: args.progress as number,
        duration: args.duration as number | undefined,
      }).then(wrapResponse)
    );
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so description must disclose behavior. It only says 'enable real-time scrobbling', but does not explain side effects, whether it starts a session, requires periodic updates, or sends data. No disclosure of error conditions or confirmation of operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. However, it may be too brief for a real-time feature, but conciseness is still high.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and no annotations, the description fails to provide high-level context like authentication requirements, return value, or error handling. Schema descriptions cover param details, but overall completeness is lacking for a real-time action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter described sufficiently. The description adds no extra meaning beyond schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool enables real-time scrobbling to Trakt.tv, using a specific verb and resource. It distinguishes from sibling tools like trakt_sync_to_trakt, which is a batch sync, and trakt_get_sync_status, which checks status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use scrobbling vs alternatives like trakt_sync_to_trakt, or prerequisites such as needing authentication via trakt_authenticate. The description lacks exclusions and context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/niavasha/plex-mcp-server'

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