Free live TV guide (hdtilt.com)
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One channel's programmes for the next N hours (negative start for catch-up).
Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg
Saved playlist name; defaults to the current one
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http hdtilt https://hdtilt.com/mcp
One channel's programmes for the next N hours (negative start for catch-up).
| Argument | Type | Description |
|---|---|---|
| hours | number | |
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| channel* | string | |
| playlist | string | Saved playlist name; defaults to the current one |
| fromHours | number |
{
"type": "object",
"required": [
"channel"
],
"properties": {
"hours": {
"type": "number",
"default": 12
},
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"channel": {
"type": "string"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
},
"fromHours": {
"type": "number",
"default": 0
}
}
}Subtitles for a film or an episode, from OpenSubtitles. Give a title (a provider name like "EN - Film (1999) 4K" is cleaned up) or a tmdbId; for an episode add season and episode (title/tmdbId are then the show). Best match first; fetch one with fetch_subtitle.
| Argument | Type | Description |
|---|---|---|
| year | number | |
| limit | number | |
| title | string | |
| season | number | |
| tmdbId | number | The film, or for an episode the show |
| episode | number | |
| languages | string | Comma-separated codes, e.g. "en,fr" |
{
"type": "object",
"properties": {
"year": {
"type": "number"
},
"limit": {
"type": "number",
"default": 20
},
"title": {
"type": "string"
},
"season": {
"type": "number"
},
"tmdbId": {
"type": "number",
"description": "The film, or for an episode the show"
},
"episode": {
"type": "number"
},
"languages": {
"type": "string",
"default": "en",
"description": "Comma-separated codes, e.g. \"en,fr\""
}
}
}Channels, optionally filtered by group or a search (name or number).
| Argument | Type | Description |
|---|---|---|
| group | string | |
| limit | number | |
| query | string | |
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| playlist | string | Saved playlist name; defaults to the current one |
{
"type": "object",
"properties": {
"group": {
"type": "string"
},
"limit": {
"type": "number",
"default": 50
},
"query": {
"type": "string"
},
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
}
}
}Channel groups (categories) with counts.
| Argument | Type | Description |
|---|---|---|
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| playlist | string | Saved playlist name; defaults to the current one |
{
"type": "object",
"properties": {
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
}
}
}Films and series on an Xtream line (or an M3U's /movie/ and /series/ entries): with nothing else, the categories; with category, its titles; with query, a search of every title; with seriesId, that show's episodes. Films and episodes come with their stream URL.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| limit | number | |
| query | string | Words that must all be in the title |
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| category | string | Category id from the category list |
| playlist | string | Saved playlist name; defaults to the current one |
| seriesId | number | A show's seriesId, for its episodes |
{
"type": "object",
"properties": {
"kind": {
"enum": [
"movie",
"series"
],
"type": "string",
"default": "movie"
},
"limit": {
"type": "number",
"default": 50
},
"query": {
"type": "string",
"description": "Words that must all be in the title"
},
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"category": {
"type": "string",
"description": "Category id from the category list"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
},
"seriesId": {
"type": "number",
"description": "A show's seriesId, for its episodes"
}
}
}The playable URL for a channel, or for a past programme when the channel has catch-up.
| Argument | Type | Description |
|---|---|---|
| at | string | ISO time inside a past programme, for catch-up |
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| channel* | string | |
| playlist | string | Saved playlist name; defaults to the current one |
{
"type": "object",
"required": [
"channel"
],
"properties": {
"at": {
"type": "string",
"description": "ISO time inside a past programme, for catch-up"
},
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"channel": {
"type": "string"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
}
}
}What is on now and next, from the guide, for matching channels.
| Argument | Type | Description |
|---|---|---|
| group | string | |
| limit | number | |
| query | string | |
| source | object | Use this playlist instead of a saved one: {type:"m3u", url} or {type:"xtream", server, username, password}; optional epg |
| playlist | string | Saved playlist name; defaults to the current one |
{
"type": "object",
"properties": {
"group": {
"type": "string"
},
"limit": {
"type": "number",
"default": 25
},
"query": {
"type": "string"
},
"source": {
"type": "object",
"description": "Use this playlist instead of a saved one: {type:\"m3u\", url} or {type:\"xtream\", server, username, password}; optional epg"
},
"playlist": {
"type": "string",
"description": "Saved playlist name; defaults to the current one"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.