accueil / serveurs / Recherche & Web / eu.madeinro/rotv-mcp
eu.madeinro/rotv-mcp
serveur MCP (Model Context Protocol) · rotv-mcp 3.3.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que eu.madeinro/rotv-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « eu.madeinro/rotv-mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 14 outils
- tv_check_freshness≈ 356 tokens
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).
Paramètres, retour & exemple (1)
Paramètressource· string · optionnel · all | epg | streaming
Optional filter for which source to report
Exemple d'appel{"name": "tv_check_freshness", "arguments": {"source": "all"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"now_utc": "texte", "sources": {}, "summary": "texte", "freshness": {}, "asked_at_utc": "texte", "overall_stale": true}} - tv_compare_options≈ 516 tokens
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.
Paramètres, retour & exemple (4)
Paramètresmood· string · optionnelprefer· array · optionneloptions· array · requis
Array of 2-5 titles (string) or { title, channel? } objects to compareupcoming_window_hours· integer · optionnel
Exemple d'appel{"name": "tv_compare_options", "arguments": {"options": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mood": "texte", "winner": "texte", "options": [], "freshness": {}, "asked_at_utc": "texte", "mood_label_ro": "texte"}} - tv_concierge≈ 1563 tokens
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".
Paramètres, retour & exemple (11)
Paramètresmood· string · optionnel
obosit | vesel | concentrat | romantic | familie | captivant (RO/EN aliases accepted)prefer· array · optionnelwindow· object · optionnel
Explicit window. Skips lookahead.sources· array · optionnelmin_rating· number · optionnel
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.allow_pauses· boolean · optionnelrisk_aversion· string · optionnel · low | high
low = 3 alternatives, high = noneduration_hours· number · optionnel
Shorthand when window is absent; starts at now.exclude_keywords· array · optionnelmax_alternatives· integer · optionnelexclude_categories· array · optionnel
Anti-noise filter (default: all four).
Exemple d'appel{"name": "tv_concierge", "arguments": {"mood": "texte", "prefer": [], "window": {}, "sources": [], "min_rating": 1, "allow_pauses": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "reason": "texte", "window": {}, "context": "texte", "decision": {}, "freshness": {}, "lookahead": "texte", "reasoning": [], "anti_noise": {}, "alternatives": [], "asked_at_utc": "texte", "sources_used": []}} - tv_explain_recommendation≈ 566 tokens
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.
Paramètres, retour & exemple (4)
Paramètrestitle· string · requis
Program title to explainchannel· string · optionnel
Optional channel id/name/alias to disambiguatecontext· object · optionnelstart_utc· string · optionnel
Optional ISO start time to disambiguate
Exemple d'appel{"name": "tv_explain_recommendation", "arguments": {"title": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "reason": "texte", "context": "texte", "subject": {}, "freshness": {}, "confidence": "texte", "fresh_status": "texte", "sources_used": [], "streaming_xref": "texte", "score_breakdown": "texte", "extracted_genres": [], "alternatives_not_picked": []}} - tv_find_for_couple≈ 819 tokens
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.
Paramètres, retour & exemple (7)
Paramètreslimit· integer · optionnelfairness· string · optionnel · strict | averageperson_a· object · requis
Preferences for person Aperson_b· object · requis
Preferences for person Bmin_score· number · optionneltimeframe· string · optionnelinclude_streaming_xref· boolean · optionnel
Exemple d'appel{"name": "tv_find_for_couple", "arguments": {"person_a": {}, "person_b": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"count": 1, "items": [], "window": {}, "degraded": true, "fairness": "texte", "person_a": {}, "person_b": "texte", "freshness": {}, "min_score": 1, "asked_at_utc": "texte", "timeframe_label": "texte", "threshold_relaxed": true}} - tv_get_prime_time≈ 564 tokens
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.
Paramètres, retour & exemple (3)
Paramètresdate· string · optionnel
today | tomorrow | YYYY-MM-DD (interpreted in Europe/Bucharest)scope· string · optionnel · main | allexclude_news· boolean · optionnel
Exemple d'appel{"name": "tv_get_prime_time", "arguments": {"date": "texte", "scope": "main", "exclude_news": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"date": "texte", "count": 1, "scope": "texte", "window": {}, "channels": [], "asked_at_utc": "texte", "exclude_news": true, "generated_at": "texte", "window_local": "texte"}} - tv_get_title_details≈ 622 tokens
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?".
Paramètres, retour & exemple (3)
Paramètrestitle· string · requis
Title to look up (case/diacritic-insensitive)include_streaming· boolean · optionnel
Also look up the title in Netflix / HBO Max / Prime Video / Disney+ / Apple TV+ catalog for Romaniaupcoming_window_hours· integer · optionnel
How far ahead (hours) to scan TV airings
Exemple d'appel{"name": "tv_get_title_details", "arguments": {"title": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"summary": "texte", "streaming": [], "tv_airings": [], "title_query": "texte", "asked_at_utc": "texte", "streaming_count": 1, "tv_airings_count": 1, "upcoming_window_hours": 1}} - tv_important_today≈ 489 tokens
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?".
Paramètres, retour & exemple (3)
Paramètresdate· string · optionnel
Day to scan, YYYY-MM-DD in Europe/Bucharest. Default: today.limit· integer · optionnel
Max number of events to returnmin_tier· integer · optionnel
1 = only major events (World Cup, Euro, Champions League, finals); 2 = also notable ones (national-team matches, knockout games)
Exemple d'appel{"name": "tv_important_today", "arguments": {"date": "texte", "limit": 1, "min_tier": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"date": "texte", "hint": "texte", "count": 1, "events": [], "min_tier": 1, "asked_at_utc": "texte", "generated_at": "texte"}} - tv_now_on_tv≈ 582 tokens
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.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Max number of items to returnscope· string · optionnel · main | all
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)category· string · optionnel
Filter by channel category: Generaliste | Știri | Sport | Filme & Seriale | Documentare | Copii | Muzică | Alteleexclude_news· boolean · optionnel
Drop channels whose category is "Știri" (Romanian news channels)
Exemple d'appel{"name": "tv_now_on_tv", "arguments": {"limit": 1, "scope": "main", "category": "texte", "exclude_news": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"count": 1, "items": [], "scope": "texte", "asked_at_utc": "texte", "generated_at": "texte"}} - tv_plan_evening≈ 682 tokens
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.
Paramètres, retour & exemple (7)
Paramètresmood· string · optionnelstart· string · optionnel
Start time: "now" | "HH:MM" (Europe/Bucharest) | ISO instantprefer· array · optionnelmax_gap_min· integer · optionnelduration_min· integer · optionnelmax_segments· integer · optionnelallow_channel_switch· boolean · optionnel
Exemple d'appel{"name": "tv_plan_evening", "arguments": {"mood": "texte", "start": "texte", "prefer": [], "max_gap_min": 1, "duration_min": 1, "max_segments": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "mood": "texte", "plan": [], "reason": "texte", "totals": {}, "end_utc": "texte", "freshness": {}, "start_utc": "texte", "alternatives": [], "asked_at_utc": "texte", "mood_label_ro": "texte", "duration_budget_min": 1}} - tv_recommend_by_mood≈ 610 tokens
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.
Paramètres, retour & exemple (7)
Paramètresmood· string · requis
Mood: obosit | vesel | concentrat | romantic | familie | captivant (also accepts tired, happy, focused, family, thrilling, etc.)limit· integer · optionnelprefer· array · optionnel
Additional channel-category preferences (additive boost)timeframe· string · optionnel
now | tonight | primetime | tomorrow | weekend | today | YYYY-MM-DD | ISO range "A/B"dislike_genres· array · optionneldislike_keywords· array · optionnelinclude_streaming_xref· boolean · optionnel
Exemple d'appel{"name": "tv_recommend_by_mood", "arguments": {"mood": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"mood": "texte", "count": 1, "items": [], "window": {}, "freshness": {}, "asked_at_utc": "texte", "generated_at": "texte", "mood_label_ro": "texte", "timeframe_label": "texte"}} - tv_recommend_today≈ 692 tokens
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ă".
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnelprefer· array · optionnel
Preferred categories for ranking boosttimeframe· string · optionnel
now | tonight | primetime | tomorrow | weekend | today | YYYY-MM-DD | ISO range "A/B"exclude_news· boolean · optionnel
Drop news channels and news programs
Exemple d'appel{"name": "tv_recommend_today", "arguments": {"limit": 1, "prefer": [], "timeframe": "texte", "exclude_news": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"count": 1, "items": [], "prefer": [], "window": {}, "asked_at_utc": "texte", "exclude_news": true, "generated_at": "texte", "timeframe_label": "texte"}} - tv_search_program≈ 698 tokens
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".
Paramètres, retour & exemple (6)
Paramètreslimit· integer · optionnelquery· string · optionnel
Free text to match against program title (case/diacritic-insensitive)channel· string · optionnel
Channel id, display name, or alias (e.g. "PRO TV", "tv-pro-tv", "HBO")category· string · optionnel
Channel category: Generaliste | Știri | Sport | Filme & Seriale | Documentare | Copii | Muzică | Alteletimeframe· string · optionnel
Natural time reference: now | tonight | tomorrow | weekend | primetime | today | YYYY-MM-DD | ISO instant | ISO range "A/B"exclude_news· boolean · optionnel
Exemple d'appel{"name": "tv_search_program", "arguments": {"limit": 1, "query": "texte", "channel": "texte", "category": "texte", "timeframe": "texte", "exclude_news": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"count": 1, "items": [], "window": {}, "asked_at_utc": "texte", "generated_at": "texte", "timeframe_label": "texte"}} - tv_tonight_card≈ 482 tokens
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).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "tv_tonight_card", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"date": "texte", "rail": {}, "stats": "texte", "decision": "texte", "page_url": "texte", "generated_at": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».