Skip to main content
Glama

tautulli_stream_resolution

Analyze streaming resolution differences between source quality and client delivery to identify playback quality issues in your media library.

Instructions

Get source vs delivered resolution analysis — shows what quality your library serves and what clients actually receive.

Args: days: Time range in days (default 30).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNo

Implementation Reference

  • The handler implementation for the tautulli_stream_resolution tool, which fetches stream resolution data from Tautulli and returns a formatted string.
    async def tautulli_stream_resolution(days: int = 30) -> str:
        """Get source vs delivered resolution analysis — shows what quality your library serves and what clients actually receive.
    
        Args:
            days: Time range in days (default 30).
        """
        days = _clamp_days(days)
        source = await _api("get_plays_by_source_resolution", time_range=str(days))
        stream = await _api("get_plays_by_stream_resolution", time_range=str(days))
    
        source_rows = _chart_totals(source)
        stream_rows = _chart_totals(stream)
    
        if not source_rows:
            return f"No resolution data for the last {days} days."
    
        lines = [f"Resolution analysis (last {days} days):\n"]
    
        # Source resolution
        lines.append("Source (file quality):")
        for r in source_rows:
            if r["total"] == 0:
                continue
            dp = r.get("Direct Play", 0)
            tc = r.get("Transcode", 0)
            ds = r.get("Direct Stream", 0)
            lines.append(f"  • {r['name']}: {r['total']} plays (DP:{dp}, DS:{ds}, TC:{tc})")
    
        # Stream resolution
        lines.append("\nDelivered (what clients received):")
        for r in stream_rows:
            if r["total"] == 0:
                continue
            dp = r.get("Direct Play", 0)
            tc = r.get("Transcode", 0)
            ds = r.get("Direct Stream", 0)
            lines.append(f"  • {r['name']}: {r['total']} plays (DP:{dp}, DS:{ds}, TC:{tc})")
    
        # Quick insight: 4K source vs stream
        src_4k = next((r["total"] for r in source_rows if r["name"] == "4k"), 0)
        str_4k = next((r["total"] for r in stream_rows if r["name"] == "4k"), 0)
        if src_4k > 0 and str_4k < src_4k:
            downgraded = src_4k - str_4k
            lines.append(f"\nNote: {downgraded} of {src_4k} 4K source plays were transcoded to lower resolution.")
    
        return "\n".join(lines)
  • tautulli.py:521-521 (registration)
    Registration of the tautulli_stream_resolution tool using the @mcp.tool() decorator.
    @mcp.tool()

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/lodordev/mcp-tautulli'

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