Skip to main content
Glama

Tonight's picks — visual card (MCP Apps)

tv_tonight_card
Read-onlyIdempotent

The daily "what is worth watching tonight?" card: one main decision (importance-scored major event, or a deterministic prime-time film fallback) plus one pick per vertical — TV, streaming (official Netflix RO top 10), theater (a stage performance happening TODAY, else an online play; a future date only when nothing is on tonight, labelled as the next performance), cinema (box office ∩ today's real screenings, else one of today's most-screened films) — and measured stats. Same data as the tv.madeinro.eu homepage hero, regenerated at every EPG refresh. date_is_today compares date with the current calendar date in Romania: false means the card still carries the previous day's picks (not regenerated since local midnight); freshness.stale is then true and freshness.warning says so. In MCP Apps-capable hosts this renders as an interactive card (ui://rotv/tonight-card).

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
dateYes
railYes
statsYes
decisionYes
page_urlYes
freshnessYes
generated_atYes
date_is_todayYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / date_is_today
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / freshness / properties / picks_age_min
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / freshness / properties / warning
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / freshness / required
      Previous value: -[
      -  "stale"
      -]New value: +[
      +  "stale",
      +  "picks_age_min",
      +  "warning"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "generated_at",
      -  "date",
      -  "decision",
      -  "rail",
      -  "stats",
      -  "page_url",
      -  "freshness"
      -]New value: +[
      +  "generated_at",
      +  "date",
      +  "date_is_today",
      +  "decision",
      +  "rail",
      +  "stats",
      +  "page_url",
      +  "freshness"
      +]
  2. Changed2 schema fields changed
    • addedOutput schema / properties / freshness
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "epg_age_min": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "stale": {
      +      "type": "boolean"
      +    },
      +    "streaming_age_min": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "stale"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "generated_at",
      -  "date",
      -  "decision",
      -  "rail",
      -  "stats",
      -  "page_url"
      -]New value: +[
      +  "generated_at",
      +  "date",
      +  "decision",
      +  "rail",
      +  "stats",
      +  "page_url",
      +  "freshness"
      +]
  3. Added

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (readOnly/idempotent/non-destructive), it discloses regeneration cadence at EPG refresh, the meaning of `date_is_today` and the resulting `freshness.stale`/`freshness.warning` flags, and that rendering becomes an interactive card only in MCP Apps hosts. That is exactly the kind of staleness and host-dependency behavior an agent cannot get from structured fields.

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

Conciseness4/5

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

Purpose is front-loaded and every clause carries real information, but the middle sentence is a single sprawling construction with deeply nested parentheticals (theater/cinema fallback chains) that slows parsing. Content earns its place; formatting could be tighter.

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

Completeness5/5

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

Zero params, an output schema, and full annotations mean the description only needs to cover behavior — and it does: composition rules, refresh timing, staleness signaling, and host capability requirements. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing to disambiguate; baseline 4 applies. The description instead spends its space on output semantics, which is the right allocation here.

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

Purpose4/5

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

The description states a concrete deliverable — a daily card with one importance-scored main decision plus one pick per vertical (TV, streaming, theater, cinema) — so an agent knows exactly what it returns. It does not, however, contrast itself with near-neighbours like tv_recommend_today or tv_important_today, which likely overlap in scope.

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

Usage Guidelines3/5

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

The 'what is worth watching tonight' framing implies the use case, and the staleness rule gives a calling condition, but there is no explicit when-to-use/when-not guidance and no named alternative among the 13 siblings. An agent must infer whether to call this or tv_recommend_today / tv_important_today.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources