Smartest-TV
Control your TV, play streaming content, manage multi-room audio, and get AI-powered recommendations — all from natural language or CLI commands.
🎬 Content Playback
tv_play— Play content by name on Netflix, YouTube, Spotify, Disney+, Prime Video, and more (auto-detects platform, supports specific seasons/episodes)tv_cast— Cast any Netflix, YouTube, or Spotify URL directly to your TVtv_next— Continue watching the next episode based on watch historytv_launch— Launch an app or deep-link with a known content IDtv_resolve— Resolve a content name to its platform ID without playing
🔍 Discovery & Recommendations
tv_whats_on— Browse trending content on Netflix and YouTubetv_recommend— Get personalized recommendations based on watch history and mood (chill, action, kids, random)
🎮 TV Control
tv_power— Turn the TV on or offtv_volume— Get/set volume, step up/down, or toggle mutetv_screen— Turn the screen on/off while audio continuestv_notify— Display a toast notification on the TV screentv_status— Get current TV state (app, volume, mute, model, firmware)
📋 Organization
tv_queue— Manage a play queue (add, show, play, skip, clear)tv_scene— Run or list scene presets (movie-night, kids, sleep, music)tv_history— View recent play history
🖥️ TV as Display
tv_display— Show messages, clocks, dashboards, photo slideshows, or embedded websites on the TV
🔊 Multi-Room Audio
tv_audio— Play music across multiple TVs with screens off, with per-room volume control (free Sonos alternative)
📺 Multi-TV Management
tv_sync— Play content on multiple TVs simultaneously (party mode)tv_list_tvs— List all configured TVs with detailstv_groups— List TV groups and their members for bulk control
📊 Intelligence & Analytics
tv_insights— Get viewing stats, screen time reports, and subscription value analysis
⚙️ Platform & Integrations
Supports LG webOS, Samsung Tizen, Android TV/Fire TV, and Roku
Integrates with Home Assistant (HACS), MCP clients (Claude, Cursor, GPT), cron, and shell scripts
Runs entirely on your local network — no telemetry or cloud sync
Enables searching and playing Apple TV+ content by name via HTML parsing, without requiring login.
Integrates with Crunchyroll for searching and playing anime content by name.
Allows playing Netflix content by name or URL, with support for season and episode selection, and deep-linking directly to playback.
Supports searching and playing content from Paramount+ by name via JustWatch API.
Allows playing Prime Video content by name via JustWatch API integration.
Enables multi-room audio playback, allowing music to be played across multiple TVs or rooms simultaneously.
Allows playing Spotify tracks or playlists by name or URL, and integrating with multi-room audio features.
Supports playing YouTube videos by name or URL, and queueing content for multi-room audio.
Pick up remote
Open Netflix app
Search for show
Pick the season
Pick the episode
Press play
~30 seconds
stv play netflix "Dark" s1e1~3 seconds
No TV? No problem. Without a TV configured, stv opens content directly in your browser. Netflix, YouTube, Spotify, Disney+ — just
pip install stvand go.
🛋 Vibe-code and chill
Vibe-coding at 2am. Claude writes your code. You tell it to put on a show. It does.
you: play frieren on the living room tv
claude: Playing Frieren s2e8 on Living Room. (3s)
you: bit quieter
claude: Volume → 18.
you: good night
claude: All 3 TVs off.Already installed stv? Just tell Claude:
# Option 1 — just talk (zero config)
"run stv play netflix Frieren s2e8"
# Option 2 — install the Skill for auto-trigger
clawhub install smartest-tv
# now "play Frieren", "good night", "next episode" just work mid-sessionAlso available as an MCP server (21 tools) for Claude Code, Codex, Antigravity, and other MCP clients.
Related MCP server: MCP Roku Control
🎯 Just type stv
No subcommand? You get a Now Playing card and three contextual next-actions based on your watch history — not a 30-command help dump.
$ stv "play dark on netflix" # natural language works
$ stv play "Frieren" # auto-detects platform
$ stv next # continue last show
$ stv stats # → insightsUnknown input? You get a friendly hint, not an error.
🎨 A CLI that looks like a product
Every command renders with Catppuccin Mocha colors, semantic icons, and real
visual hierarchy. Prefer another palette? Set STV_THEME=nord or STV_THEME=gruvbox.
--format json is always available when you need to pipe to jq.
✨ What it does
🎬 Play by name
stv play netflix "Dark" s1e1
stv play disney "Percy Jackson" s1e1
stv play prime "The Boys" s1e1
stv play "Frieren" s2e8 # auto-detects platformSay the name. stv finds the ID, opens the app, starts playback. Netflix and Apple TV+ resolve via HTML parsing. Disney+, Max, Prime, Hulu, Paramount+, Peacock, Crunchyroll, and every platform on JustWatch resolve via their API — no login, no API key. Skip the platform name and stv auto-detects where it's streaming in your region.
🔗 Cast any URL
stv cast https://youtu.be/dQw4w
stv cast https://netflix.com/watch/...
stv cast https://open.spotify.com/...Friend sends a link. Paste it. TV plays it.
🎵 Queue & party
stv queue add youtube "Gangnam Style"
stv queue add spotify "Blinding Lights"
stv queue playEveryone adds their pick. TV plays in order.
🎭 Scene presets
stv scene movie-night # volume 20, cinema
stv scene kids # volume 15, Cocomelon
stv scene sleep # rain sounds, auto-offOne command sets the vibe.
🔊 Multi-room audio
stv audio play "lo-fi beats"
stv audio volume kitchen 30
stv audio stopScreens off. Music everywhere.Free Sonos.
📺 TV as display
stv display message "Dinner!"
stv display clock
stv display dashboard "Temp:22°C"Dashboards, clocks, signage.$0/month.
📊 Watch intelligence
stv insights
stv screen-time
stv sub-value netflix --cost 17.99Is your Netflix worth $18/month?
🌐 Sync party
stv --all play youtube "lo-fi beats"
stv --group party play netflix "Wed..."
stv --all off # good nightEvery TV. At once. Even remote friends.
🤖 AI concierge
"Play something chill"
→ tv_recommend → tv_play
→ Playing The Queen's Gambit21 MCP tools. One sentence is enough.
🤖 Tell your AI to control your TV
stv is an MCP server. Claude, GPT, Cursor, or any MCP client can control your TV with natural language.
Setup (one line):
{
"mcpServers": {
"tv": {
"command": "uvx",
"args": ["stv"]
}
}
}Or via OpenClaw:
clawhub install smartest-tvThen just talk:
You: "I just got home, set up movie night"
Claude: 🎬 Movie night activated.
Volume → 20, cinema mode on.
Based on your history:
1. The Queen's Gambit (Netflix)
2. Ozark (Netflix)
3. Squid Game S2 (Netflix)
You: "Play 1, put a clock on kitchen TV"
Claude: ✓ Playing The Queen's Gambit
✓ Clock on kitchen TVCategory | Tool | What it does |
Play |
| Search + play by name |
| Cast any URL | |
| Continue watching | |
| Launch app with ID | |
| Get content ID only | |
Discover |
| Trending content |
| Personalized picks | |
Control |
| On/off |
| Get/set/step/mute | |
| Screen on/off | |
| Toast notification | |
| Current state | |
Organize |
| Play queue |
| Scene presets | |
| Watch history | |
Intelligence |
| Viewing stats |
| TV as display | |
| Multi-room audio | |
Multi-TV |
| Play on all TVs |
| List TVs | |
| TV groups |
📅 A day with stv
Time | What happens |
7am |
|
8am |
|
12pm | Friend sends Netflix link → |
5pm |
|
6:30pm |
|
7pm |
|
9pm |
|
10pm |
|
11:30pm |
|
🔥 Killer combos
🌙 Bedtime autopilot
stv audio play "rain" --rooms bedroom
stv scene sleep
stv --all offAmbient sound, screen off, auto-timer, every other TV killed.
🎧 Free Sonos
stv audio play "lo-fi beats"
stv audio volume kitchen 40
stv audio volume bedroom 15Every TV is a speaker. Per-room volume. Screens off.
💰 Subscription audit
stv sub-value netflix --cost 17.99
# → $8.50/hr — consider canceling
stv sub-value youtube --cost 13.99
# → $1.20/hr — good value⚙️ How it works
"Play Dark S1E1"
│
▼
┌─── Resolution ───┐
│ Cache → API → Web │ content_id
│ 0.1s 1s 3s │──────────────▶ 📺 TV plays it
└───────────────────┘ │
Deep link via
LG / Samsung / Roku / AndroidSay a name. stv resolves it to a content ID, deep-links into the app on your TV. No browser automation, no API keys, no cloud dependency. Results are cached so repeat plays are instant.
📦 Install
pip install stv # LG webOS (default)
pip install "stv[samsung]" # Samsung Tizen
pip install "stv[android]" # Android TV / Fire TV
pip install "stv[all]" # Everythingstv setup # auto-discover + pair your TVSupports LG webOS · Samsung Tizen · Android TV / Fire TV · Roku
Home Assistant (HACS)
Add as a custom repository (default listing in review: hacs/default#6907):
HACS → ⋮ (top right) → Custom repositories
URL: https://github.com/Hybirdss/smartest-tv
Category: Integration → Add
Then: Install → Restart HA
Settings → Integrations → Add → "Smartest TV" → auto-discovers your TVsAndroid TV / Fire TV: the setup flow shows a 6-digit PIN on the TV —
enter it in the pairing form to finish. In HA OS / HA Container set
STV_CONFIG_DIR=/config/smartest-tv so pairing survives container
rebuilds. See docs/integrations/home-assistant.md.
Then use in automations:
service: media_player.play_media
target:
entity_id: media_player.living_room
data:
media_content_type: stv
media_content_id: "netflix:Frieren:s2e8"This does what HA's built-in media_player.play_media can't: resolve a show by name and deep-link into the streaming app. Power, volume, and playback controls also work as standard HA media player entities.
🔌 Works with
Integration | How |
Home Assistant | HACS custom integration → |
Claude Code / Cursor | Add MCP config → |
OpenClaw |
|
cron |
|
Shell scripts |
|
Any MCP client | 21 tools, stdio or HTTP ( |
📚 Docs
Setup for any TV brand | |
play, cast, queue, resolve | |
movie-night, kids, sleep, custom | |
Multi-TV, remote watch party | |
10 powerful feature combos | |
MCP for Claude, Cursor, OpenClaw | |
Every command and option | |
All 21 tools with parameters |
🔓 Open source
Every line of stv is on GitHub — the CLI, resolvers (Netflix, Apple TV+, YouTube, Spotify, Disney+, Max, Prime Video, Paramount+, Hulu, Peacock, Crunchyroll, and more via JustWatch), all 4 TV drivers (LG, Samsung, Roku, Android), cache, sync engine, scenes, and all 253 tests. Streaming availability data powered by JustWatch.
🔒 Privacy
stv runs on your local network. No telemetry, no analytics, no cloud
sync, no phoning home about what you watch. There is no posthog, no
amplitude, no sentry, no mixpanel — grep the source.
One exception — community cache contribution. When you play content that isn't in the local cache, stv resolves it (via web parsing) and submits the resolved ID to a shared community cache so the next user gets an instant lookup. This is the same pattern as Wikipedia or a package mirror — many small contributions, anonymous.
What's sent (background HTTPS, fire-and-forget, never blocks playback):
Platform name (
netflix/youtube/spotify)Content slug (e.g.
frieren)Resolved content ID (Netflix title ID, YouTube video ID, Spotify URI)
What's not sent:
Your name, email, or any user identifier
Your IP address (the CDN sees a connection IP per standard HTTP, but the client never reads or transmits it)
Your watch history or play timestamps
Your TV's IP address or hardware info
Anything about how often or when you use stv
To disable cache contribution entirely:
export STV_NO_CONTRIBUTE=1Source: src/smartest_tv/cache.py — search for _contribute.
🤝 Contributing
211 tests. No TV needed to run them.
pip install -e ".[dev]"
python -m pytest tests/ -vSamsung, Roku, and Android TV drivers need real-world testing. If you have one, your feedback matters.
Cache Contributions · Driver Development
Available Tools
23 toolstv_audioTv AudioC
Multi-room audio mode — play music with screens off.
Actions: play, stop, volume.
| Name | Required | Description | Default |
|---|---|---|---|
| room | No | Single room name (for "volume" action). | |
| query | No | Music to play (required for "play"). Defaults to YouTube. | |
| rooms | No | List of room/TV names. Omit for all TVs. | |
| action | Yes | "play", "stop", or "volume". | |
| volume | No | Volume level (for "volume" action). | |
| platform | No | "youtube" or "spotify" (for "play"). | youtube |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses one useful trait — that playback happens with screens off, i.e., audio-only mode — but says nothing about what 'stop' affects, whether it interrupts existing sessions, permission requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the mode and capability, with an efficient action summary. No filler, though the action list mostly duplicates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema is fully documented, so return values and parameter meanings need not be restated. However, for a six-parameter multi-room tool sitting among many tv_* siblings, the missing usage routing guidance leaves the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (room, query, rooms, action, volume, platform) are already documented in the schema. The description only restates the action values, adding no format, default, or interaction detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific mode ('Multi-room audio mode — play music with screens off') plus the supported actions, so an agent understands the resource and capability. The 'screens off' framing implicitly differentiates it from tv_play/tv_volume, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists actions but never says when to use tv_audio versus tv_play or tv_volume, nor when to avoid it. Given the presence of dedicated tv_play and tv_volume siblings, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_castTv CastB
Cast a Netflix/YouTube/Spotify URL to the TV.
Paste any streaming URL. stv parses the platform and content ID automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Any Netflix, YouTube, or Spotify URL. | |
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one useful trait (automatic platform/content-ID parsing), but says nothing about whether casting interrupts current playback, what happens with an unsupported URL, or whether the TV must be powered on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action. The second sentence ('Paste any streaming URL') partially restates the platform list already given in sentence one, a minor redundancy but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and both parameters are covered by the schema. What is missing is prerequisite state (target TV selection, current playback impact) and differentiation from the many playback siblings, which matters for a mutation-style tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema (url formats, tv_name default). The description adds no syntax or format detail beyond restating that a streaming URL is accepted, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (cast) and resource (Netflix/YouTube/Spotify URL) plus the target (TV), so the action is unambiguous. It does not distinguish itself from close siblings like tv_play or tv_launch, which an agent would likely confuse this with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Paste any streaming URL' implies the trigger condition, but there is no explicit when-to-use guidance and no mention of alternatives such as tv_play or tv_launch. Usage must be inferred from the tool name and enum-free parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_displayTv DisplayB
Turn the TV into a display — show dashboards, messages, clocks, or any URL.
The TV becomes a smart display. HTML is generated and served locally, then opened in the TV's browser.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Content-specific data: - message: {"text": "Hello!", "bg": "#000", "color": "#fff"} - clock: {"format": "24h"} or {"format": "12h"} - dashboard: {"title": "Home", "cards": [{"label": "Temp", "value": "22°C"}]} - photo: {"urls": ["http://..."], "interval": 5} - iframe: {"url": "https://...", "fullscreen": true} - custom: {"html": "<div>...</div>"} | |
| port | No | Local server port (default 8765). | |
| tv_name | No | Target TV. Omit for default. | |
| content_type | Yes | "message", "clock", "dashboard", "photo", "iframe", or "custom". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that HTML is generated, served locally, and opened in the TV's browser, but it does not cover permissions, persistence, whether existing TV content is replaced, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences. The primary purpose is front-loaded, followed by a compact explanation of the underlying mechanism, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema is rich, an output schema exists, and the tool has only four parameters, the description is nearly complete for invocation. It explains the mechanism and content types, but its lack of routing guidance among many TV siblings leaves a small contextual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters in detail, including content-type-specific data shapes. The description adds only the general notion of showing any URL and does not add meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and resource: turning the TV into a display that shows dashboards, messages, clocks, or URLs. It is clearly more than a restatement of the tool name, but it does not explicitly distinguish itself from related siblings such as tv_screen, tv_notify, or tv_cast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for showing content on a TV, but provides no explicit when-to-use guidance, prerequisites, or alternatives. With many sibling tools available, an agent is left to infer when tv_display is preferred over tv_screen, tv_notify, or tv_launch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_groupsTv GroupsA
List all TV groups and their members.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden, and 'List all' usefully signals an unfiltered, read-only enumeration. However, it says nothing about permissions, pagination, or whether the result can be large, which is the kind of context the description would need to add for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that fully covers what the tool returns, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and no input parameters, the description need not explain return values, and its scope statement is sufficient to call the tool. A brief note on how it relates to tv_list_tvs would have closed the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to clarify beyond the fact that no filtering arguments exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('TV groups and their members'), so an agent immediately knows what comes back. It is not explicitly contrasted with similar siblings like tv_list_tvs, but the group-centric scope is self-evident from the phrasing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as tv_list_tvs or tv_status. Usage is only implied by the tool name; no context, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_historyTv HistoryC
Show recent play history.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Show' weakly implies a read-only operation, but the description never states the recency window ('recent' is undefined), whether history is per-user or per-device, or any pagination/ordering behavior. This is a meaningful gap for a history-listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no wasted words. It is efficient, though the brevity comes at the cost of the substantive detail scored elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the tool has only one optional parameter, keeping complexity low. However, with no annotations and no definition of what 'recent' means or how history is scoped, the description is thinner than the minimum needed to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter 'limit' is undocumented in both schema and description. The description adds no meaning to the parameter (e.g., max items, ordering interaction), leaving the agent to guess its semantics from the name and default alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and resource ('recent play history'), so the agent knows this retrieves past playback data rather than current state (tv_state/tv_status) or upcoming content (tv_whats_on). No explicit sibling differentiation is offered, but the resource is distinct enough to select correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus related tools such as tv_state, tv_status, or tv_whats_on, and no mention of prerequisites. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_insightsTv InsightsB
Get viewing insights, screen time, or subscription value analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | "day", "week", or "month". | week |
| report_type | No | "full" (formatted report), "screen_time", or "sub_value:platform:cost" (e.g. "sub_value:netflix:17.99"). | full |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. 'Get' implies a read-only operation, but the description does not state permissions, side effects, rate limits, or whether data is cached or live. More context is needed for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler, and the core purpose is front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with two optional parameters, full schema descriptions, and an output schema, so the description need not explain return values. However, it is incomplete for routing among 22 sibling tools and lacks behavioral context in the absence of annotations. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the two optional parameters are fully documented in the schema itself. The description mentions 'screen time' and 'subscription value analysis', which loosely correspond to report_type values, but adds no syntax or format details beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and names three specific report types ('viewing insights', 'screen time', 'subscription value analysis'), so the purpose is immediately clear. It does not, however, differentiate this tool from sibling tools like tv_history or tv_recommend, which could overlap in some contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and no alternatives. It only states what the tool returns; an agent must infer usage context from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_launchTv LaunchA
Launch an app, optionally with a deep link.
Use tv_play instead if you have a content name (not ID). Use this when you already have the exact content ID.
| Name | Required | Description | Default |
|---|---|---|---|
| app | Yes | App name (netflix, youtube, spotify) or raw app ID. | |
| tv_name | No | Target TV name. Omit for default TV. | |
| content_id | No | Platform-specific content ID for deep linking. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says what the tool does but does not disclose permissions, TV state requirements, whether launching replaces current playback, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, front-loaded lines with no filler. Each sentence contributes either the core action or the key routing alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter launch tool with full schema coverage and an output schema, the description covers purpose, key parameters, and sibling routing adequately. The main remaining gap is behavioral context, which is less critical here because return values are handled by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents app, tv_name, and content_id. The description adds only the deep-link/content-ID usage distinction, which the schema also covers, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: launch an app, optionally with a deep link. It also explicitly distinguishes this tool from the sibling tv_play by contrasting exact content ID use against content-name use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit routing guidance: use tv_play when you have a content name, and use tv_launch when you have the exact content ID. This covers when to use this tool and when to choose the primary alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_list_tvsTv List TvsA
List all configured TVs with name, platform, IP, and default status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a safe, read-only enumeration and names the returned fields, but adds nothing about ordering, scoping, or side effects. For a zero-parameter listing tool the risk surface is small, so this is adequate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action, scope, and returned fields all appear in one clause. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail does not need to live in the description, and the tool has no inputs to explain. The only shortfall is the absence of routing guidance against the many sibling TV tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (configured TVs) and enumerates the fields returned (name, platform, IP, default status). The purpose is unambiguous, though it does not explicitly contrast itself with sibling read tools like tv_status or tv_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus alternatives such as tv_status or tv_state, nor any prerequisites or exclusions. The agent must infer that this is the discovery/enumeration call from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_nextTv NextB
Play the next episode. Continues from watch history.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Show name. Omit to continue the most recent Netflix show. | |
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. 'Continues from watch history' is useful context, but it does not disclose side effects such as changing TV playback state, required permissions, behavior when no history exists, or error conditions for an action tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The primary action is front-loaded, followed immediately by the key continuation rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has no required parameters, and includes an output schema, so return values need not be explained. Still, as an action tool with no annotations, the description leaves behavioral gaps around side effects and prerequisite conditions that a more complete definition would cover.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the 'query' and 'tv_name' parameters are already fully documented with defaults and omission behavior. The description adds no additional parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Play the next episode.' It also explains the continuation logic via watch history, which helps distinguish it from a generic play command. However, it does not explicitly contrast itself with siblings like tv_play or tv_whats_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when continuing a series, but offers no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as tv_play or tv_queue. The agent is left to infer that this is for resuming episodic content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_notifyTv NotifyB
Show a toast notification on the TV screen.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Text to display. | |
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Toast' implies a transient, non-blocking overlay, but the description never says whether it interrupts playback, how long it persists, whether it requires an active session, or what happens if the named TV is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; every word earns its place and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the schema covers both parameters. Still, for a display-action tool with no annotations, the description is minimal and omits any statement of side effects, target requirements, or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'message' and 'tv_name' (including the omit-for-default behavior) are already fully documented in the schema. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (show) and a specific resource (toast notification on the TV screen), which is more distinctive than the generic names of siblings like tv_display or tv_screen. However, it never differentiates itself from those siblings explicitly, so an agent must infer the distinction from the word 'toast' alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of tv_display, tv_screen, or tv_scene, nor any stated preconditions (e.g., TV must be on/connected). The single sentence gives no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_playTv PlayB
Find content by name and play it on TV.
This is the primary tool. Resolves the content ID automatically, then deep-links into the app on your TV.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Content name (e.g. "Stranger Things", "baby shark", "Ye White Lines"). | |
| season | No | Season number (Netflix series only). | |
| episode | No | Episode number (Netflix series only). | |
| tv_name | No | Target TV name. Omit for default TV. | |
| platform | Yes | "netflix", "youtube", or "spotify". | |
| title_id | No | Netflix title ID if already known (skips search). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it does disclose two real behaviors: automatic content-ID resolution and deep-linking into the TV app. However, it omits prerequisites (must the TV be on/paired?), failure modes, and ambiguity handling when a name matches multiple titles, which matters for a 6-param playback tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and immediately followed by the key behavioral note. Efficient, though the 'primary tool' line is slightly self-referential rather than instructive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the schema fully documents parameters. What is missing is the operational context a playback tool needs: TV state prerequisites, auth/pairing requirements, and what happens when the query is ambiguous. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented, including platform values and Netflix-only season/episode. The description only hints at title_id's role by noting the ID is resolved automatically; it adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: find content by name and play it on TV. It also self-declares as the primary tool and distinguishes itself via auto-resolution and deep-linking. It never names the siblings it is not (tv_launch, tv_cast, tv_resolve), so differentiation is partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Calling itself 'the primary tool' implies preferred usage, but there is no explicit when-to-use versus when-not, and no alternative is named (e.g. tv_resolve for lookup-only, tv_cast for casting). Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_powerTv PowerB
Turn TV on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | True = turn on, False = turn off. | |
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about idempotency, behavior when the TV is already on/off, error conditions, or permissions. For a state-changing tool with zero annotation coverage this is a significant gap, partially offset by the presence of an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single five-word sentence with zero waste and the core action front-loaded. Appropriately sized for a trivial toggle tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, 100% schema coverage, an output schema, and low operational complexity, the definition is nearly complete. Only minor behavioral notes (already-on/off handling, idempotency) are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters ('on' and 'tv_name') are fully documented in the schema including the default-TV behavior. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Turn TV on or off'), so an agent immediately knows it toggles power. It does not, however, differentiate itself from related siblings like tv_state or tv_status that could also be confused with power control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as tv_state (check state first) or tv_scene. Usage is only faintly implied by the verb, leaving routing decisions to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_queueTv QueueC
Manage the play queue. Actions: add, show, play, skip, clear.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Required for "add". Content name. | |
| action | Yes | "add", "show", "play", "skip", or "clear". | |
| season | No | For "add" — Netflix season number. | |
| episode | No | For "add" — Netflix episode number. | |
| tv_name | No | For "play" — target TV. | |
| platform | No | Required for "add". netflix/youtube/spotify. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, and it discloses almost nothing: it does not say whether 'clear' destroys the whole queue, whether 'add' requires a resolve step first, whether 'play' targets a TV and what happens if tv_name is omitted, or whether any action has side effects outside the queue. For a multi-action mutation tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and resource, no filler. It is arguably over-terse for a five-action tool, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, five distinct actions, an output schema, and zero annotations, the description should explain per-action behavior and risk (especially 'clear'). It leaves the agent to infer semantics of each action entirely from the schema, which is inadequate for a mutating queue tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (query, season, episode, tv_name, platform) is already documented in the schema, including action-conditional requirements. The description adds no format, default, or conditional detail beyond the schema baseline, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Manage') plus resource ('the play queue') and enumerates the five supported actions, so an agent knows this is the queue-control tool. It does not differentiate itself from near-neighbors like tv_play or tv_next, which could also relate to advancing playback, leaving some ambiguity about which tool owns 'skip'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the action values but gives no guidance on when to choose tv_queue over tv_play, tv_next, or tv_cast, nor any prerequisites or ordering context. The action names are already present in the 'action' schema field, so the list adds no routing information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_recommendTv RecommendB
Get personalized recommendations based on watch history + trending.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | "chill", "action", "kids", "random", or omit for auto. | |
| limit | No | Number of recommendations (default 5). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It conveys a read-only retrieval implied by 'Get' and explains what drives the results (watch history + trending), but says nothing about side effects, permissions, or rate limits. Barely adequate rather than informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the two parameters are schema-documented. However, given the many overlapping siblings, the definition is thin on routing and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'mood' (with its enumerated values) and 'limit' are already fully documented in the schema. The description adds no meaning beyond that, which lands at the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Get) and resource (personalized recommendations) and discloses the data sources (watch history + trending). It does not distinguish itself from plausible siblings such as tv_whats_on or tv_insights, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. An agent cannot tell from this text alone whether to reach for tv_recommend versus tv_whats_on, tv_history, or tv_insights.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_resolveTv ResolveA
Resolve a content name to its platform ID without playing.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Content name. | |
| season | No | Season number (Netflix). | |
| episode | No | Episode number (Netflix). | |
| platform | Yes | netflix, youtube, or spotify. | |
| title_id | No | Netflix title ID if known. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the key behavioral trait that resolving does not trigger playback, but says nothing about caching, network lookups, failure modes, or auth requirements. It covers the most important side-effect question and little else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and ends with the key scoping qualifier. Zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and schema coverage is full, so return values and parameter details need not be restated. The description covers purpose and the primary behavioral distinction, though with no annotations it could say more about permissions or lookup behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (query, season, episode, platform, title_id) is already documented in the schema. The description adds no syntax or format detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve) and resource (content name to platform ID) and immediately distinguishes itself from the tempting sibling tv_play via 'without playing'. An agent can tell this apart from tv_play/tv_launch without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without playing' implies the use case and steers the agent away from tv_play, but there is no explicit when-to-use statement or named alternative. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_sceneTv SceneB
Run or list scene presets. Built-in: movie-night, kids, sleep, music.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Scene name (required for "run"). | |
| action | No | "list" or "run". | list |
| tv_name | No | Target TV (for "run"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Run' implies a state mutation on a device, yet the description never says whether running a scene changes device state, whether it is reversible, whether it requires an active TV connection, or how failure is reported. The preset list is the only added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core capability ('Run or list scene presets') is front-loaded before the enumeration of built-ins. Nothing wastes the agent's context budget.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. However, for a tool with a state-mutating 'run' action and no annotations, the description leaves an agent guessing about side effects, prerequisites for targeting a TV, and whether 'run' is destructive. It is minimally viable but thin given the mutation risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains that name is required for 'run' and tv_name targets a TV. The description adds real value by enumerating the built-in preset names (movie-night, kids, sleep, music), which are valid values an agent could not get from the schema. That nudges it just above a bare baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair and resource: 'Run or list scene presets.' This is clear and actionable, and the sibling list contains no other scene-related tool, so it is reasonably distinguishable. It stops short of explicitly contrasting with neighbors, but the resource noun does the disambiguating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the 'list' vs 'run' pair and the schema's default of 'list' tell the agent the two modes exist, but there is no explicit when-to-use guidance, no prerequisites (e.g., must a TV be selected first), and no exclusions or alternatives named. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_screenTv ScreenB
Turn screen on or off (audio continues when off).
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | True = screen on, False = screen off (audio continues). | |
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose one valuable trait: audio continues when the screen is off. Beyond that it says nothing about required auth, idempotency, or whether the change persists, and the audio note is duplicated in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the core action front-loaded and zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the toggle behavior is covered. The description falls short on sibling disambiguation and any operational context (auth, persistence), which matters for a device-control tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (on, tv_name) are already fully documented in the schema. The description adds no additional parameter meaning, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (turn on/off) and resource (screen), so the agent knows exactly what the tool does. However, it offers no differentiation from closely named siblings like tv_power, tv_display, or tv_state, leaving the agent to guess which controls the screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, despite several plausible overlapping siblings (tv_power, tv_display). The agent must infer usage purely from the verb phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_stateTv StateA
Get unified live TV state: playback, volume, input, power.
Returns a single snapshot for agent branching. Fields the target driver cannot supply are returned as None.
| Name | Required | Description | Default |
|---|---|---|---|
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It usefully notes the snapshot semantics and that unsupported fields return None, which is real behavioral value, but it omits whether this is strictly read-only, whether it has side effects, latency/polling characteristics, or prerequisites such as the TV being powered on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose before the usage note and edge-case behavior in three tight sentences with no filler. Well structured, though the middle sentence is slightly redundant with the first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values beyond the None-fallback nuance it already gives. For a simple one-param snapshot read tool it is essentially complete, missing only minor read-only/side-effect reassurance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, where the schema already documents 'Target TV name. Omit for default TV.' The description adds nothing beyond the schema, which is the expected baseline at this coverage level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Get) and resource (TV state) and enumerates the four dimensions captured (playback, volume, input, power). The word 'unified' hints at why this differs from single-dimension siblings like tv_volume or tv_power, but it never names tv_status or any sibling explicitly, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Returns a single snapshot for agent branching' implies a use case (consolidated state for decision-making) but gives no explicit when/when-not guidance and does not route the agent away from alternatives like tv_status or tv_state_watch. Usage is inferable but not prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_state_watchTv State WatchA
Stream tv_state snapshots via progress notifications.
Emits count progress updates spaced interval seconds apart,
then returns the final snapshot. Default is 1 minute of watching.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of snapshots to emit (default 12). | |
| tv_name | No | Target TV name. Omit for default TV. | |
| interval | No | Seconds between snapshots (default 5). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does useful work: it discloses the non-obvious streaming behavior (count progress notifications at interval spacing, final snapshot returned last), which an agent could not guess from the schema. It omits error/cancellation behavior and any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the core action and mechanism, with no filler. Every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the streaming semantics and defaults are covered. For a no-annotation streaming tool it is nearly complete, though it lacks any note on interruption/auth behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by explaining how count and interval compose into the default watch duration (12 x 5s = 1 minute). That relationship is not derivable from the individual parameter descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (stream/watch) plus resource (tv_state snapshots) and the delivery mechanism (progress notifications), which cleanly separates it from the sibling tv_state single-snapshot tool. It stops short of explicitly naming tv_state as the alternative, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Default is 1 minute of watching' line implies this is for time-boxed observation, but there is no explicit when-to-use vs. tv_state or tv_status, no conditions, and no exclusions. Usage must be inferred from the streaming mechanics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_statusTv StatusB
Get TV status: current app, volume, mute, model, firmware.
| Name | Required | Description | Default |
|---|---|---|---|
| tv_name | No | Target TV name. Omit for default TV. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. 'Get' strongly implies a non-mutating read, and listing the returned fields gives useful context, but it says nothing about permission requirements, whether the call is cached/polled, or freshness of the data. Adequate but thin for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the payload fields compactly enumerated. No filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and the one optional parameter is fully documented in the schema. The main gap is the absence of any routing guidance relative to the many overlapping tv_state-family siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents 'Target TV name. Omit for default TV.' The description adds no further parameter meaning, so the baseline 3 for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('TV status') and enumerates the returned fields (current app, volume, mute, model, firmware), which makes the tool's scope concrete. It does not, however, differentiate itself from near-neighbors such as tv_state or tv_state_watch, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no indication of when to call this tool versus alternatives like tv_state, tv_state_watch, or tv_insights, all of which plausibly overlap with status retrieval. No preconditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_syncTv SyncB
Play content on multiple TVs simultaneously (party mode).
Resolves once, launches on all targets via asyncio.gather.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | TV group name (e.g. "party"). | |
| query | Yes | Content name. | |
| season | No | Netflix season number. | |
| episode | No | Netflix episode number. | |
| platform | Yes | netflix, youtube, or spotify. | |
| title_id | No | Netflix title ID if known. | |
| tv_names | No | List of TV names. Or use group. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose a real trait beyond the schema — "Resolves once, launches on all targets via asyncio.gather" signals parallel fire-and-forget dispatch rather than waiting for playback confirmation. However, it says nothing about partial-failure behavior, per-TV errors, permissions, or whether playback state is verified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core capability and with zero padding. The asyncio.gather detail is mildly implementation-flavored but does convey parallel dispatch semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema covers all parameters. Still missing for a 7-param broadcast tool with no annotations: whether group and tv_names are mutually exclusive in practice, and what happens when one TV fails while others succeed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters (including the group-vs-tv_names hint). The description adds no parameter meaning beyond that — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and multi-target scope: "Play content on multiple TVs simultaneously (party mode)." The multi-TV scope clearly distinguishes it from single-target siblings like tv_play and tv_cast, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "multiple TVs simultaneously (party mode)" implies the usage context, but there is no explicit when-to-use versus tv_play/tv_launch, and no stated prerequisites or exclusions. Usage must be inferred from the scope wording alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_volumeTv VolumeA
Get or set volume, step up/down, or toggle mute. All in one tool.
No args: returns current volume + mute status
level=25: set volume to 25
direction="up"/"down": step volume
mute=True/False/None: mute, unmute, or toggle
| Name | Required | Description | Default |
|---|---|---|---|
| mute | No | True=mute, False=unmute, None=toggle. | |
| level | No | Volume level 0-100. | |
| tv_name | No | Target TV name. Omit for default TV. | |
| direction | No | "up" or "down" for one step. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and discloses the key modes: a no-arg read returns current volume and mute status, while level/direction/mute perform mutations. It does not cover edge cases like argument conflicts, error behavior, or required permissions, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded, bulleted, and free of filler. Every sentence maps directly to an invocation mode.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the multi-mode behavior of a 4-optional-parameter tool and output schema exists to cover return values. It does not specify precedence when multiple optional arguments are supplied together, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds useful mode examples such as level=25, direction="up"/"down", and mute=True/False/None. It omits tv_name, which is fully covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (volume/mute) and the exact operations available: get, set, step up/down, and toggle mute. It clearly separates this tool from siblings like tv_audio and tv_display by focusing only on volume and mute behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bullet list gives explicit usage patterns for no args, level, direction, and mute, which tells the agent when each mode applies. It does not explicitly name alternatives or exclusions among sibling TV tools, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tv_whats_onTv Whats OnC
Show trending content on Netflix and/or YouTube.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results per platform (default 10). | |
| platform | No | "netflix", "youtube", or omit for both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, yet it says nothing about whether this is a read-only fetch, how fresh the trending data is, region/locale behavior, or whether it triggers any network/account side effects. For a zero-annotation tool this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, which is appropriate for a simple query tool. It is arguably slightly too thin given the lack of any usage or behavioral framing, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the parameter set is fully covered by the schema. However, the absence of annotations means the description should have supplied the read-only/behavioral context it omits, leaving the definition only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already fully documented in the schema, making 3 the baseline. The description's 'Netflix and/or YouTube' does loosely reinforce the platform parameter's omit-for-both semantics, but adds no syntax or limit detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Show') and resource ('trending content') scoped to two named platforms, so an agent immediately understands the operation. It does not, however, distinguish itself from the nearby sibling tv_recommend, which plausibly offers overlapping recommendation-style functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as tv_recommend or tv_history. The only routing signal is implicit in the platform parameter, so the agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
v1.0.2- Added
tv_audio - Added
tv_cast - Added
tv_display - Added
tv_groups - Added
tv_history - Added
tv_insights - Added
tv_launch - Added
tv_list_tvs - Added
tv_next - Added
tv_notify - Added
tv_play - Added
tv_power - Added
tv_queue - Added
tv_recommend - Added
tv_resolve - Added
tv_scene - Added
tv_screen - Added
tv_state - Added
tv_state_watch - Added
tv_status - Added
tv_sync - Added
tv_volume - Added
tv_whats_on
21 tool updates
v0.3.0- Removed
tv_audio - Removed
tv_cast - Removed
tv_display - Removed
tv_groups - Removed
tv_history - Removed
tv_insights - Removed
tv_launch - Removed
tv_list_tvs - Removed
tv_next - Removed
tv_notify - Removed
tv_play - Removed
tv_power - Removed
tv_queue - Removed
tv_recommend - Removed
tv_resolve - Removed
tv_scene - Removed
tv_screen - Removed
tv_status - Removed
tv_sync - Removed
tv_volume - Removed
tv_whats_on
21 tool updates
v0.1.0- First observed
tv_audio - First observed
tv_cast - First observed
tv_display - First observed
tv_groups - First observed
tv_history - First observed
tv_insights - First observed
tv_launch - First observed
tv_list_tvs - First observed
tv_next - First observed
tv_notify - First observed
tv_play - First observed
tv_power - First observed
tv_queue - First observed
tv_recommend - First observed
tv_resolve - First observed
tv_scene - First observed
tv_screen - First observed
tv_status - First observed
tv_sync - First observed
tv_volume - First observed
tv_whats_on
TDQS
Scored across 23 tools
Most tools target distinct tasks, and descriptions help separate close cases like tv_play vs tv_launch vs tv_cast. However, tv_status vs tv_state, tv_volume vs tv_audio's volume action, and tv_power vs tv_screen have overlapping surface area that could occasionally cause misselection.
All tools use a predictable tv_snake_case convention, such as tv_play, tv_queue, tv_volume, and tv_state_watch. The only variation is noun-only vs verb-noun names, but the prefix and separators are consistent throughout.
23 tools is heavy for a smart TV control server, landing in the 16-25 range where discoverability and selection cost rise. The feature breadth is real, but some controls could likely be consolidated.
The server covers power, volume, playback, casting, queue, history, recommendations, scenes, groups, multi-room audio, and display modes. Notable gaps remain around explicit pause/resume/stop-current-playback and input/source switching.
Maintenance
Related MCP Connectors
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
Manage digital signage screens, playlists and media from your AI assistant.
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to control TVs on a local network through natural language commands. It currently supports Roku devices, allowing users to launch apps, manage playback, and navigate menus.5-
- FlicenseAqualityDmaintenanceEnables AI assistants to control Roku TVs on the local network via natural language commands.6-
- AlicenseNot gradedqualityDmaintenanceEnables control of TV and air conditioner through natural language commands via Cursor or Claude Desktop.MIT
- AlicenseNot gradedqualityBmaintenanceTurns AI assistants like Claude and ChatGPT into a remote control for LG webOS smart TVs, enabling power control, volume, app launching, input switching, and more, all locally without cloud APIs.1MIT