Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,542Letters: 14Defects: 1,324counted 1 min ago
teppi

Server definition

Hash
sha256:c656d609eb18d5620a41ad385c3f8a35d3c8e36ba7666f5c638b17919f9b7fce
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Reports the last-updated time of each underlying data source (EPG normalized, EPG homepage, streaming catalog), the age in minutes, the expected next refresh, and whether any source is stale (older than 1.5× the expected refresh interval).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "source": { "default": "all", "description": "Optional filter for which source to report", "enum": [ "all", "epg", "streaming" ], "type": "string" } }, "type": "object" }, "name": "tv_check_freshness", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "now_utc": { "type": "string" }, "overall_stale": { "type": "boolean" }, "sources": { "additionalProperties": true, "properties": {}, "type": "object" }, "summary": { "type": "string" } }, "required": [ "asked_at_utc", "now_utc", "sources", "overall_stale", "summary", "freshness" ], "type": "object" } }, { "description": "Compares 2-5 program titles by scoring each against the chosen mood, finding the next TV airing (next 48h by default) and looking each up in the streaming catalog. Returns side-by-side breakdown and a winner with reasoning.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "mood": { "type": "string" }, "options": { "description": "Array of 2-5 titles (string) or { title, channel? } objects to compare", "items": { "anyOf": [ { "type": "string" }, { "additionalProperties": false, "properties": { "channel": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title" ], "type": "object" } ] }, "maxItems": 5, "minItems": 2, "type": "array" }, "prefer": { "items": { "type": "string" }, "type": "array" }, "upcoming_window_hours": { "default": 48, "maximum": 72, "minimum": 1, "type": "integer" } }, "required": [ "options" ], "type": "object" }, "name": "tv_compare_options", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "mood": { "type": "string" }, "mood_label_ro": { "type": "string" }, "options": { "items": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "array" }, "winner": { "anyOf": [ { "additionalProperties": true, "properties": { "query": { "type": "string" }, "reason": { "type": "string" }, "total_score": { "type": "number" } }, "required": [ "query", "total_score", "reason" ], "type": "object" }, { "type": "null" } ] } }, "required": [ "asked_at_utc", "mood", "mood_label_ro", "options", "winner", "freshness" ], "type": "object" } }, { "description": "You have a window of free time — decide for me what to watch right now. Returns ONE primary decision (TV program OR streaming title) with confidence percentage, plus best_by_source when both TV and streaming were considered (the best TV airing in the window next to the best catalog title — present both to the user when gap_pct is small, since streaming is available any time and TV only now), full reasoning breakdown, and up to 3 diverse alternatives with explicit trade-offs (pros/cons, reason not picked). Picks across live Romanian TV EPG AND streaming catalog (Netflix, HBO Max, Disney+, Prime Video, Apple TV+, SkyShowtime). Built-in anti-noise filter automatically removes news, political talk, reality shows, talk-shows (NO manual filtering needed by the model). Built-in title dedup (handles ~46% duplicate-airing ratio in TV EPG). Built-in opportunity-cost lookahead (flags better options just outside the window). Event-aware: major broadcasts (World Cup / Euro / Champions League / finals) get an importance boost in ranking AND are always listed in the important_today field, even when the mood-based pick is something else — for questions like \"what is important today?\", prefer tv_important_today. PREFER THIS TOOL over tv_recommend_by_mood and tv_recommend_today whenever the user wants ONE answer / a single decision — those tools return ranked LISTS for browsing, this tool returns a DECISION. It returns exactly ONE pick and leaves the rest of the window as a pause: when the user wants the whole window FILLED with several programmes in sequence (\"plan my evening\", \"ce văd toată seara\", \"fă-mi un program pentru 20–24\", a TV window of 3+ hours), use tv_plan_evening instead. Routes any mood internally (obosit / vesel / concentrat / romantic / familie / captivant + EN aliases tired/happy/focused/romantic/family/thrilling). Trigger phrases: \"what should I do\", \"decide for me\", \"pick for me\", \"I have X hours\", \"ce să fac\", \"am 2 ore\", \"alege tu\", \"mood X durată Y\", \"o singură decizie\", \"fii consilierul meu\", \"what to watch\", \"concierge me\".", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "allow_pauses": { "default": true, "type": "boolean" }, "duration_hours": { "description": "Shorthand when window is absent; starts at now.", "maximum": 6, "minimum": 0.5, "type": "number" }, "exclude_categories": { "default": [ "politica", "reality", "talkshow", "stiri" ], "description": "Anti-noise filter (default: all four).", "items": { "enum": [ "politica", "reality", "talkshow", "stiri" ], "type": "string" }, "type": "array" }, "exclude_keywords": { "items": { "type": "string" }, "type": "array" }, "max_alternatives": { "default": 3, "maximum": 5, "minimum": 0, "type": "integer" }, "min_rating": { "default": 0, "description": "Hard minimum rating (0-10). When > 0, only titles with a MEASURED rating at or above it are eligible: streaming catalog rating, or the IMDb rating the TV guide declares. TV programmes without any rating (most sport, news, shows) are excluded, not waved through.", "maximum": 10, "minimum": 0, "type": "number" }, "mood": { "description": "obosit | vesel | concentrat | romantic | familie | captivant (RO/EN aliases accepted)", "type": "string" }, "prefer": { "items": { "type": "string" }, "type": "array" }, "risk_aversion": { "default": "low", "description": "low = 3 alternatives, high = none", "enum": [ "low", "high" ], "type": "string" }, "sources": { "default": [ "tv", "streaming" ], "items": { "enum": [ "tv", "streaming" ], "type": "string" }, "type": "array" }, "window": { "additionalProperties": false, "description": "Explicit window. Skips lookahead.", "properties": { "duration_min": { "default": 120, "maximum": 360, "minimum": 30, "type": "integer" }, "start": { "default": "now", "description": "\"now\" | \"HH:MM\" (Europe/Bucharest) | ISO instant", "type": "string" } }, "type": "object" } }, "type": "object" }, "name": "tv_concierge", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "alternatives": { "items": { "$ref": "#/properties/window" }, "type": "array" }, "anti_noise": { "additionalProperties": true, "properties": { "by_category": { "$ref": "#/properties/window" }, "enabled_categories": { "items": { "type": "string" }, "type": "array" }, "filtered_count": { "type": "number" } }, "required": [ "enabled_categories", "filtered_count", "by_category" ], "type": "object" }, "asked_at_utc": { "type": "string" }, "best_by_source": { "$ref": "#/properties/window" }, "context": { "$ref": "#/properties/window" }, "decision": { "additionalProperties": true, "properties": { "confidence_breakdown": { "anyOf": [ { "$ref": "#/properties/window" }, { "type": "null" } ] }, "confidence_label": { "type": "string" }, "confidence_pct": { "type": "number" }, "degraded": { "type": "boolean" }, "primary_kind": { "type": [ "string", "null" ] }, "primary_summary": { "type": "string" }, "primary_title": { "type": [ "string", "null" ] }, "segments": { "items": { "$ref": "#/properties/window" }, "type": "array" } }, "required": [ "degraded", "primary_kind", "primary_title", "segments", "confidence_pct", "confidence_label", "confidence_breakdown" ], "type": "object" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "important_today": { "items": { "$ref": "#/properties/window" }, "type": "array" }, "lookahead": { "$ref": "#/properties/window" }, "ok": { "type": "boolean" }, "reason": { "type": "string" }, "reasoning": { "items": { "type": "string" }, "type": "array" }, "sources_used": { "items": { "type": "string" }, "type": "array" }, "window": { "additionalProperties": true, "properties": {}, "type": "object" } }, "required": [ "ok", "asked_at_utc", "window", "context", "decision", "reasoning", "anti_noise", "alternatives", "lookahead", "sources_used", "freshness" ], "type": "object" } }, { "description": "Returns a full score breakdown for a specific program in a given mood/context: per-component value + reason, extracted genres, streaming cross-ref, freshness, sources used, and a list of alternatives that were not picked (with the specific reason each was dropped). Use to understand or debug a recommendation.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "channel": { "description": "Optional channel id/name/alias to disambiguate", "type": "string" }, "context": { "additionalProperties": false, "properties": { "mood": { "type": "string" }, "prefer": { "items": { "type": "string" }, "type": "array" }, "timeframe": { "type": "string" } }, "type": "object" }, "start_utc": { "description": "Optional ISO start time to disambiguate", "type": "string" }, "title": { "description": "Program title to explain", "maxLength": 200, "minLength": 2, "type": "string" } }, "required": [ "title" ], "type": "object" }, "name": "tv_explain_recommendation", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "alternatives_not_picked": { "items": { "$ref": "#/properties/subject" }, "type": "array" }, "confidence": { "type": "string" }, "context": { "$ref": "#/properties/subject" }, "extracted_genres": { "items": { "$ref": "#/properties/subject" }, "type": "array" }, "fresh_status": { "$ref": "#/properties/subject" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "ok": { "type": "boolean" }, "reason": { "type": "string" }, "score_breakdown": { "$ref": "#/properties/subject" }, "sources_used": { "items": { "type": "string" }, "type": "array" }, "streaming_xref": { "anyOf": [ { "$ref": "#/properties/subject" }, { "type": "null" } ] }, "subject": { "additionalProperties": true, "properties": {}, "type": "object" } }, "required": [ "ok", "freshness" ], "type": "object" } }, { "description": "Finds TV programs that satisfy two people with different moods/preferences. Default fairness=strict (min(scoreA,scoreB) >= threshold — no veto). If strict returns nothing it falls back in two declared steps: first fairness=average at the SAME min_score; only if that is still empty is min_score halved. The response always carries requested_fairness, requested_min_score, the effective fairness / min_score, threshold_relaxed and degraded — tell the user when their threshold was relaxed. Returns per-person score breakdown + compromise note when one side wins by >1.5 points.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "fairness": { "default": "strict", "enum": [ "strict", "average" ], "type": "string" }, "include_streaming_xref": { "default": true, "type": "boolean" }, "limit": { "default": 5, "maximum": 10, "minimum": 1, "type": "integer" }, "min_score": { "default": 1, "type": "number" }, "person_a": { "additionalProperties": false, "description": "Preferences for person A", "properties": { "dislike_genres": { "items": { "type": "string" }, "type": "array" }, "dislike_keywords": { "items": { "type": "string" }, "type": "array" }, "mood": { "type": "string" }, "prefer": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "person_b": { "additionalProperties": false, "description": "Preferences for person B", "properties": { "dislike_genres": { "$ref": "#/properties/person_a/properties/dislike_genres" }, "dislike_keywords": { "$ref": "#/properties/person_a/properties/dislike_keywords" }, "mood": { "$ref": "#/properties/person_a/properties/mood" }, "prefer": { "$ref": "#/properties/person_a/properties/prefer" } }, "type": "object" }, "timeframe": { "default": "tonight", "type": "string" } }, "required": [ "person_a", "person_b" ], "type": "object" }, "name": "tv_find_for_couple", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "degraded": { "type": "boolean" }, "fairness": { "type": "string" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "items": { "items": { "$ref": "#/properties/person_a" }, "type": "array" }, "min_score": { "type": "number" }, "person_a": { "additionalProperties": true, "properties": {}, "type": "object" }, "person_b": { "$ref": "#/properties/person_a" }, "requested_fairness": { "type": "string" }, "requested_min_score": { "type": "number" }, "threshold_relaxed": { "type": "boolean" }, "timeframe_label": { "type": "string" }, "window": { "additionalProperties": true, "properties": { "from_utc": { "type": "string" }, "to_utc": { "type": "string" } }, "required": [ "from_utc", "to_utc" ], "type": "object" } }, "required": [ "asked_at_utc", "timeframe_label", "window", "person_a", "person_b", "fairness", "min_score", "degraded", "count", "items", "freshness" ], "type": "object" } }, { "description": "Returns the prime-time lineup (20:00–23:00 Europe/Bucharest) for a given date, grouped by channel. Use for queries like \"what is on prime time tonight\" or \"tomorrow night TV\". By default, news channels are excluded.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "date": { "default": "today", "description": "today | tomorrow | YYYY-MM-DD (interpreted in Europe/Bucharest)", "type": "string" }, "exclude_news": { "default": true, "type": "boolean" }, "scope": { "default": "main", "enum": [ "main", "all" ], "type": "string" } }, "type": "object" }, "name": "tv_get_prime_time", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "channels": { "items": { "additionalProperties": true, "properties": { "channel_category": { "type": [ "string", "null" ] }, "channel_id": { "type": "string" }, "channel_name": { "type": "string" }, "programs": { "items": { "additionalProperties": true, "properties": { "category": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "duration_min": { "type": "number" }, "start_local": { "type": "string" }, "start_utc": { "type": "string" }, "stop_local": { "type": "string" }, "stop_utc": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title", "start_local", "start_utc", "stop_local", "stop_utc", "duration_min" ], "type": "object" }, "type": "array" } }, "required": [ "channel_id", "channel_name", "programs" ], "type": "object" }, "type": "array" }, "count": { "type": "number" }, "date": { "type": "string" }, "exclude_news": { "type": "boolean" }, "generated_at": { "type": [ "string", "null" ] }, "scope": { "type": "string" }, "window": { "additionalProperties": true, "properties": { "from_utc": { "type": "string" }, "to_utc": { "type": "string" } }, "required": [ "from_utc", "to_utc" ], "type": "object" }, "window_local": { "type": "string" } }, "required": [ "asked_at_utc", "date", "window_local", "window", "scope", "exclude_news", "count", "channels" ], "type": "object" } }, { "description": "Looks up a title across upcoming Romanian TV airings (next N hours, default 48) and the live streaming catalog for Romania (Netflix, HBO Max, Prime Video, Disney+, Apple TV+). Use for queries like \"is Avatar on Netflix?\", \"when does Game of Thrones air next?\".", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "include_streaming": { "default": true, "description": "Also look up the title in Netflix / HBO Max / Prime Video / Disney+ / Apple TV+ catalog for Romania", "type": "boolean" }, "title": { "description": "Title to look up (case/diacritic-insensitive)", "maxLength": 200, "minLength": 2, "type": "string" }, "upcoming_window_hours": { "default": 48, "description": "How far ahead (hours) to scan TV airings", "maximum": 72, "minimum": 1, "type": "integer" } }, "required": [ "title" ], "type": "object" }, "name": "tv_get_title_details", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "streaming": { "items": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "array" }, "streaming_count": { "type": "number" }, "summary": { "type": "string" }, "title_query": { "type": "string" }, "tv_airings": { "items": { "additionalProperties": true, "properties": { "channel_category": { "type": [ "string", "null" ] }, "channel_id": { "type": "string" }, "channel_name": { "type": "string" }, "program": { "additionalProperties": true, "properties": { "category": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "duration_min": { "type": "number" }, "start_local": { "type": "string" }, "start_utc": { "type": "string" }, "stop_local": { "type": "string" }, "stop_utc": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title", "start_local", "start_utc", "stop_local", "stop_utc", "duration_min" ], "type": "object" } }, "required": [ "channel_id", "channel_name", "program" ], "type": "object" }, "type": "array" }, "tv_airings_count": { "type": "number" }, "upcoming_window_hours": { "type": "number" } }, "required": [ "title_query", "asked_at_utc", "upcoming_window_hours", "tv_airings", "tv_airings_count", "streaming", "streaming_count", "summary" ], "type": "object" } }, { "description": "What actually matters on Romanian TV today: World Cup / Euro / Champions League matches, finals, knockout games, national-team fixtures. Detected from real EPG text (titles + descriptions) with quoted evidence — the EPG has no structured event metadata, so detection is keyword-based and honest about it. Each event carries live_status (live / replay / unknown) with the evidence it was derived from; unknown means the EPG does not say whether the broadcast is live. Use this FIRST for questions like \"what's important to watch today?\".", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "date": { "description": "Day to scan, YYYY-MM-DD in Europe/Bucharest. Default: today.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "limit": { "default": 10, "description": "Max number of events to return", "maximum": 25, "minimum": 1, "type": "integer" }, "min_tier": { "default": 2, "description": "1 = only major events (World Cup, Euro, Champions League, finals); 2 = also notable ones (national-team matches, knockout games)", "maximum": 2, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "tv_important_today", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "date": { "type": "string" }, "events": { "items": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "array" }, "generated_at": { "type": [ "string", "null" ] }, "hint": { "type": "string" }, "min_tier": { "type": "number" } }, "required": [ "asked_at_utc", "date", "min_tier", "count", "events", "hint" ], "type": "object" } }, { "description": "Returns the programs currently broadcasting on Romanian TV channels. Use this for \"What is on TV now?\" type questions. Default scope is the main channels; pass scope=\"all\" for every channel in the guide.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "category": { "description": "Filter by channel category: Generaliste | Știri | Sport | Filme & Seriale | Documentare | Copii | Muzică | Altele", "type": "string" }, "exclude_news": { "default": false, "description": "Drop channels whose category is \"Știri\" (Romanian news channels)", "type": "boolean" }, "limit": { "default": 15, "description": "Max number of items to return", "maximum": 50, "minimum": 1, "type": "integer" }, "scope": { "default": "main", "description": "main = the main Romanian channels (PRO TV, Antena 1, Kanal D, TVR 1/2, Digi 24, etc.); all = every channel in the guide (the live count is in tv_tonight_card stats.channelsMonitored)", "enum": [ "main", "all" ], "type": "string" } }, "type": "object" }, "name": "tv_now_on_tv", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "generated_at": { "type": [ "string", "null" ] }, "items": { "items": { "additionalProperties": true, "properties": { "channel_category": { "type": [ "string", "null" ] }, "channel_id": { "type": "string" }, "channel_name": { "type": "string" }, "program": { "additionalProperties": true, "properties": { "category": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "duration_min": { "type": "number" }, "start_local": { "type": "string" }, "start_utc": { "type": "string" }, "stop_local": { "type": "string" }, "stop_utc": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title", "start_local", "start_utc", "stop_local", "stop_utc", "duration_min" ], "type": "object" } }, "required": [ "channel_id", "channel_name", "program" ], "type": "object" }, "type": "array" }, "scope": { "type": "string" } }, "required": [ "asked_at_utc", "scope", "count", "items" ], "type": "object" } }, { "description": "Builds a TV watching plan that FILLS a window of time — either one long programme or 2-3 consecutive programmes with small gaps, ordered as a timeline. Use it when the user wants a schedule for the whole evening or a long window (3+ hours) rather than a single pick: \"plan my evening\", \"ce văd toată seara\", \"fă-mi un program pentru 20–24\". TV only (live Romanian EPG, no streaming titles); for ONE decision that may also be a streaming title, use tv_concierge. Accepts start time, duration budget, mood, and channel preferences. Output: ordered timeline + alternatives dropped + totals.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "allow_channel_switch": { "default": true, "type": "boolean" }, "duration_min": { "default": 180, "maximum": 360, "minimum": 30, "type": "integer" }, "max_gap_min": { "default": 10, "maximum": 30, "minimum": 0, "type": "integer" }, "max_segments": { "default": 3, "maximum": 3, "minimum": 1, "type": "integer" }, "mood": { "type": "string" }, "prefer": { "items": { "type": "string" }, "type": "array" }, "start": { "default": "20:00", "description": "Start time: \"now\" | \"HH:MM\" (Europe/Bucharest) | ISO instant", "type": "string" } }, "type": "object" }, "name": "tv_plan_evening", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "alternatives": { "items": { "$ref": "#/properties/plan/items" }, "type": "array" }, "asked_at_utc": { "type": "string" }, "duration_budget_min": { "type": "number" }, "end_utc": { "type": "string" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "mood": { "type": "string" }, "mood_label_ro": { "type": "string" }, "ok": { "type": "boolean" }, "plan": { "items": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "array" }, "reason": { "type": [ "string", "null" ] }, "start_utc": { "type": "string" }, "totals": { "additionalProperties": true, "properties": { "gap_min": { "type": "number" }, "segments": { "type": "number" }, "switches": { "type": "number" }, "total_filled_min": { "type": "number" } }, "required": [ "segments", "total_filled_min", "gap_min", "switches" ], "type": "object" } }, "required": [ "ok", "asked_at_utc", "start_utc", "end_utc", "duration_budget_min", "mood", "mood_label_ro", "plan", "totals", "alternatives", "freshness" ], "type": "object" } }, { "description": "Returns top-N Romanian TV programs ranked for a given mood (obosit/vesel/concentrat/romantic/familie/captivant — RO/EN aliases accepted). Combines: channel category, mood-fit (genre + duration + keywords), time proximity, and streaming cross-reference. Output includes mood_parts breakdown and freshness embedded.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "dislike_genres": { "items": { "type": "string" }, "type": "array" }, "dislike_keywords": { "items": { "type": "string" }, "type": "array" }, "include_streaming_xref": { "default": true, "type": "boolean" }, "limit": { "default": 5, "maximum": 10, "minimum": 1, "type": "integer" }, "mood": { "description": "Mood: obosit | vesel | concentrat | romantic | familie | captivant (also accepts tired, happy, focused, family, thrilling, etc.)", "maxLength": 40, "minLength": 2, "type": "string" }, "prefer": { "description": "Additional channel-category preferences (additive boost)", "items": { "type": "string" }, "type": "array" }, "timeframe": { "default": "tonight", "description": "now | tonight | primetime | tomorrow | weekend | today | YYYY-MM-DD | ISO range \"A/B\"", "type": "string" } }, "required": [ "mood" ], "type": "object" }, "name": "tv_recommend_by_mood", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "freshness": { "additionalProperties": true, "properties": { "epg_age_min": { "type": [ "number", "null" ] }, "stale": { "type": "boolean" }, "streaming_age_min": { "type": [ "number", "null" ] } }, "required": [ "stale" ], "type": "object" }, "generated_at": { "type": [ "string", "null" ] }, "items": { "items": { "additionalProperties": true, "properties": {}, "type": "object" }, "type": "array" }, "mood": { "type": "string" }, "mood_label_ro": { "type": "string" }, "timeframe_label": { "type": "string" }, "window": { "additionalProperties": true, "properties": { "from_utc": { "type": "string" }, "to_utc": { "type": "string" } }, "required": [ "from_utc", "to_utc" ], "type": "object" } }, "required": [ "asked_at_utc", "mood", "mood_label_ro", "timeframe_label", "window", "count", "items", "freshness" ], "type": "object" } }, { "description": "Returns up to N ranked program recommendations for a given timeframe. Uses a deterministic scorer that rewards films / documentaries / generalist channels, penalises news, and boosts programs starting within the next hour. Use for queries like \"recommend me something for tonight\", \"ce e bun la TV diseară\".", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "exclude_news": { "default": true, "description": "Drop news channels and news programs", "type": "boolean" }, "limit": { "default": 5, "maximum": 10, "minimum": 1, "type": "integer" }, "prefer": { "default": [ "filme", "documentare" ], "description": "Preferred categories for ranking boost", "items": { "enum": [ "filme", "seriale", "documentare", "sport", "copii", "muzica" ], "type": "string" }, "type": "array" }, "timeframe": { "default": "tonight", "description": "now | tonight | primetime | tomorrow | weekend | today | YYYY-MM-DD | ISO range \"A/B\"", "type": "string" } }, "type": "object" }, "name": "tv_recommend_today", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "exclude_news": { "type": "boolean" }, "generated_at": { "type": [ "string", "null" ] }, "items": { "items": { "additionalProperties": true, "properties": { "channel_category": { "type": [ "string", "null" ] }, "channel_id": { "type": "string" }, "channel_name": { "type": "string" }, "program": { "additionalProperties": true, "properties": { "category": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "duration_min": { "type": "number" }, "start_local": { "type": "string" }, "start_utc": { "type": "string" }, "stop_local": { "type": "string" }, "stop_utc": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title", "start_local", "start_utc", "stop_local", "stop_utc", "duration_min" ], "type": "object" }, "score": { "type": "number" }, "why_recommended": { "type": "string" } }, "required": [ "channel_id", "channel_name", "program", "score", "why_recommended" ], "type": "object" }, "type": "array" }, "prefer": { "items": { "type": "string" }, "type": "array" }, "timeframe_label": { "type": "string" }, "window": { "additionalProperties": true, "properties": { "from_utc": { "type": "string" }, "to_utc": { "type": "string" } }, "required": [ "from_utc", "to_utc" ], "type": "object" } }, "required": [ "asked_at_utc", "timeframe_label", "window", "prefer", "exclude_news", "count", "items" ], "type": "object" } }, { "description": "Search programs across all Romanian TV channels in the guide by free-text title, channel, category, and time window. Use for queries like \"documentaries on Discovery tomorrow\", \"football on Saturday\", \"what is on Antena 1 right now\". Time references accepted: now, tonight, tomorrow, weekend, primetime, today, YYYY-MM-DD, ISO instant, or ISO range \"A/B\".", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "category": { "description": "Channel category: Generaliste | Știri | Sport | Filme & Seriale | Documentare | Copii | Muzică | Altele", "type": "string" }, "channel": { "description": "Channel id, display name, or alias (e.g. \"PRO TV\", \"tv-pro-tv\", \"HBO\")", "type": "string" }, "exclude_news": { "default": false, "type": "boolean" }, "limit": { "default": 10, "maximum": 50, "minimum": 1, "type": "integer" }, "query": { "description": "Free text to match against program title (case/diacritic-insensitive)", "maxLength": 200, "minLength": 1, "type": "string" }, "timeframe": { "default": "now", "description": "Natural time reference: now | tonight | tomorrow | weekend | primetime | today | YYYY-MM-DD | ISO instant | ISO range \"A/B\"", "type": "string" } }, "type": "object" }, "name": "tv_search_program", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asked_at_utc": { "type": "string" }, "count": { "type": "number" }, "generated_at": { "type": [ "string", "null" ] }, "items": { "items": { "additionalProperties": true, "properties": { "channel_category": { "type": [ "string", "null" ] }, "channel_id": { "type": "string" }, "channel_name": { "type": "string" }, "match_reason": { "type": "string" }, "program": { "additionalProperties": true, "properties": { "category": { "type": [ "string", "null" ] }, "description": { "type": "string" }, "duration_min": { "type": "number" }, "start_local": { "type": "string" }, "start_utc": { "type": "string" }, "stop_local": { "type": "string" }, "stop_utc": { "type": "string" }, "title": { "type": "string" } }, "required": [ "title", "start_local", "start_utc", "stop_local", "stop_utc", "duration_min" ], "type": "object" } }, "required": [ "channel_id", "channel_name", "program" ], "type": "object" }, "type": "array" }, "timeframe_label": { "type": "string" }, "window": { "additionalProperties": true, "properties": { "from_utc": { "type": "string" }, "to_utc": { "type": "string" } }, "required": [ "from_utc", "to_utc" ], "type": "object" } }, "required": [ "asked_at_utc", "timeframe_label", "window", "count", "items" ], "type": "object" } }, { "description": "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 daily. In MCP Apps-capable hosts this renders as an interactive card (ui://rotv/tonight-card).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "tv_tonight_card", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "date": { "type": "string" }, "decision": { "anyOf": [ { "additionalProperties": true, "properties": {}, "type": "object" }, { "type": "null" } ] }, "generated_at": { "type": [ "string", "null" ] }, "page_url": { "type": "string" }, "rail": { "additionalProperties": false, "properties": { "cinema": { "anyOf": [ { "$ref": "#/properties/decision/anyOf/0" }, { "type": "null" } ] }, "streaming": { "anyOf": [ { "$ref": "#/properties/decision/anyOf/0" }, { "type": "null" } ] }, "teatru": { "anyOf": [ { "$ref": "#/properties/decision/anyOf/0" }, { "type": "null" } ] }, "tv": { "anyOf": [ { "$ref": "#/properties/decision/anyOf/0" }, { "type": "null" } ] } }, "type": "object" }, "stats": { "anyOf": [ { "$ref": "#/properties/decision/anyOf/0" }, { "type": "null" } ] } }, "required": [ "generated_at", "date", "decision", "rail", "stats", "page_url" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:c656d609eb18d5620a41ad385c3f8a35d3c8e36ba7666f5c638b17919f9b7fce | sha256sum