TMS (Telegram Media Server)
Control Telegram Media Server downloads over REST: add URLs/torrents, list status, delete, and search via Prowlarr.
Rank
62
Safety
84
Downloads
1.9k
Updated
Oct 10, 2026
Version
1.0.9
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.9K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.0.9release · observed Jun 12, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17ffbz4aw2cdt3eknwspg9gps83wzag:tms- Install using `clawhub skill install s17ffbz4aw2cdt3eknwspg9gps83wzag:tms` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/nikitadmitryuk/tms before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-nikitadmitryuk-tms/snapshot"
Documentation
CLAWHUB
143,548 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: tms
version: "1.0.9"
description: "Control Telegram Media Server downloads over REST: add URLs/torrents, list status, delete, and search via Prowlarr."
homepage: https://github.com/NikitaDmitryuk/telegram-media-server/tree/main/openclaw-skill-tms
user-invocable: false
metadata: {"openclaw":{"requires":{"env":[]},"primaryEnv":"TMS_API_KEY"}}
---
# TMS (Telegram Media Server) API skill
Use this skill when the user wants to add downloads, check download status, remove a download, or search for torrents via the TMS backend. All requests go to the TMS REST API.
**How to use:** This skill is not a `/tms` slash command. The agent must make HTTP requests (GET/POST/DELETE) to the TMS endpoints. Prefer OpenClaw's HTTP/web request capability when available; do not use shell commands or `curl` unless HTTP tooling is unavailable. The **full API contract** (paths, request/response schemas, examples) is included in this document below, so there is no need to fetch any URL to get the API spec.
## Base URL and authentication
- **Base URL:** Use env `TMS_API_URL` if set; otherwise, when TMS and OpenClaw run on the **same host**, use **`http://127.0.0.1:8080`** (TMS default API listen). Do not add a trailing slash. All endpoint paths in the spec use the prefix `/api/v1` — e.g. `GET /health` means **`GET {BaseURL}/api/v1/health`**.
- **Authentication:** If env `TMS_API_KEY` is configured, always send every API request with `Authorization: Bearer <TMS_API_KEY>` or header `X-API-Key: <TMS_API_KEY>`. If a request returns 401, retry once with the configured `TMS_API_KEY`; do not ask the user to reveal the key. Only omit auth when `TMS_API_KEY` is truly absent and TMS is explicitly configured to allow unauthenticated localhost requests.
## Operations (summary)
1. **Health check** — `GET {BaseURL}/api/v1/health` — returns `{"status":"ok"}` if the API is up.
2. **List downloads** — `GET {BaseURL}/api/v1/downloads` — returns a JSON array of queued, active, and completed/library items with `id`, `title`, `status` (queued, downloading, converting, completed, failed, stopped), `progress`, `conversion_progress`, `error` (if failed), `position_in_queue` (if queued). Empty state is `[]`. Snapshot is best-effort.
3. **Add download** — `POST {BaseURL}/api/v1/downloads` with JSON body that includes **exactly one** of `url` or `torrent_base64`, plus optional `title`.
- **`url`:** video URL (yt-dlp), magnet (`magnet:...`), HTTPS URL to a `.torrent` file, or (when Prowlarr is on TMS) Prowlarr proxy download URL. Prefer **magnet** from search results when adding a torrent.
- **`torrent_base64`:** standard Base64 encoding of a `.torrent` file’s raw bytes (no extra HTTP fetch by TMS). Use when the agent has the torrent file content (e.g. user upload, read from disk in workspace) but no public HTTPS URL. Body size limit applies (~1 MiB JSON).
Optional `title` overrides the display name. Response: `201` with `{"id": <number>, "title": "<string>"}`. Use `id` for delREADME.md
# OpenClaw skill: TMS (Telegram Media Server) This skill teaches OpenClaw to use the **Telegram Media Server (TMS)** REST API: add downloads by URL (video, magnet, .torrent URL) or by embedding a `.torrent` as Base64 (`torrent_base64`), list downloads, delete a download, and search torrents. You need a running TMS instance; this skill only sends HTTP requests to it. ## What is Telegram Media Server? **Telegram Media Server** is a Telegram bot that accepts links to streaming video or torrent files, downloads them (via yt-dlp and aria2), and can distribute content on your local network via a DLNA server (e.g. minidlna). It supports yt-dlp–compatible video URLs, magnet links, and .torrent files, with optional Prowlarr integration for torrent search. This **OpenClaw skill** talks to the same TMS backend over its REST API. Instead of using the Telegram bot, you can ask your OpenClaw agent to add downloads, list status, remove a download, or search torrents — all via natural language in chat. The default API URL is `http://127.0.0.1:8080` for same-host installs. If `TMS_API_KEY` is configured, the agent must use it on every request; the key should live in OpenClaw skill env or `apiKey`, not in chat. The skill does not install any code or run binaries. **Install Telegram Media Server** (required before using this skill): - **Repository:** [github.com/NikitaDmitryuk/telegram-media-server](https://github.com/NikitaDmitryuk/telegram-media-server) - Clone, build, and configure as described in the project [README](https://github.com/NikitaDmitryuk/telegram-media-server#readme). The TMS REST API is enabled by default. Ansible installs generate `TMS_API_KEY` by default. Put that key in OpenClaw skill env or `skills.entries.tms.apiKey`; do not ask users to paste it into chat. Ensure the API listen address (`TMS_API_LISTEN`) is reachable from where OpenClaw runs. ## What it does The skill lets your OpenClaw agent talk to a running TMS instance over its REST API. The agent can: - **Add downloads** — by video URL (yt-dlp), magnet link, .torrent URL, or `torrent_base64` (raw `.torrent` file encoded in standard Base64 when no fetchable URL exists). - **List downloads** — see queued, active, and completed/library items with status, progress, and errors. - **Delete a download** — remove by ID everywhere: queue/active state, library DB, files, and qBittorrent when applicable. - **Search torrents** — when TMS has Prowlarr configured, search indexers and add results as downloads. All requests use the TMS API base URL and API key you configure. The skill does not emulate the Telegram bot; it uses the same backend via HTTP. ## Requirements - A running **Telegram Media Server** with the API enabled (`TMS_API_ENABLED=true`) and network access from the machine where OpenClaw runs. If TMS has `TMS_API_KEY` set, OpenClaw must send it on every request, even for same-host installs. Ansible-generated TMS installs set this key by default. - **Environment variables** for
screenshots/README.md
# Screenshots for ClawHub
Place 3–5 PNG screenshots here for the ClawHub listing (1920×1080 or 1280×720). Suggested content:
1. **Hero** — OpenClaw chat: user asks to add a download or list downloads; agent response with result.
2. **Config** — Fragment of `openclaw.json` showing `skills.entries.tms` with `TMS_API_URL` and `TMS_API_KEY`.
3. **Output** — Example of list/download status or search results in chat.
4. **Optional** — TMS Swagger UI (`{TMS_API_URL}/api/v1/docs`) or API response.
When publishing, attach these files to the skill listing on ClawHub._meta.json
{
"ownerId": "kn7enxxqb6yh0dz1fwkha7eb4581nvym",
"slug": "tms",
"version": "1.0.9",
"publishedAt": 1781222521375
}CHANGELOG.md
# Changelog
All notable changes to this skill are documented here.
## [1.0.9] - Require configured TMS API key usage
- **Authentication guidance:** clarified that when `TMS_API_KEY` is configured, the agent must send it on every TMS API request, including same-host installs.
- **Agent behavior:** instructed agents to retry 401 responses with the configured key and not ask users to paste secrets into chat.
- **Docs:** removed misleading same-host/no-key guidance for Ansible-generated installs, which create an API key by default.
## [1.0.8] - OpenClaw metadata and delete/list semantics
- **OpenClaw metadata:** shortened the frontmatter description, added homepage, set `user-invocable: false`, and changed `metadata.openclaw.primaryEnv` to `TMS_API_KEY`.
- **API semantics:** documented that `GET /downloads` includes queued, active, and completed/library items, and that `DELETE /downloads/{id}` removes the item everywhere.
- **ClawHub docs:** updated install/publish commands to the current `openclaw skills install` and `clawhub skill publish` flows.
## [1.0.7] - Add download via torrent_base64
- **POST /downloads:** Documented `torrent_base64` (standard Base64 of a `.torrent` file) as an alternative to `url`. Exactly one of `url` or `torrent_base64` must be sent; optional `title` unchanged. Inline OpenAPI in SKILL.md updated to match `openapi-llm.yaml`.
## [1.0.6] - Inline API spec (no fetch required)
- **Full API contract in SKILL.md:** The complete OpenAPI spec (paths, schemas, examples) is now embedded in the skill document. The agent no longer needs to request `{base_url}/api/v1/openapi-llm.yaml` to use the TMS API — all information for building and invoking API calls is available immediately. Base URL and authentication rules are stated explicitly; full URL for each endpoint is `{BaseURL}/api/v1/...`.
## [1.0.4] - Optional TMS_API_URL (default for same-host)
- **TMS_API_URL is optional:** When agent and TMS run on the same host, default base URL is `http://127.0.0.1:8080` (TMS default API listen). No env vars are required for same-host; skill metadata `requires.env` is now `[]`.
## [1.0.3] - Optional API key, clearer spec URL
- **TMS_API_KEY is optional:** When TMS and OpenClaw run on the same host, requests from localhost are accepted without a key; only `TMS_API_URL` was required (now also optional).
- **OpenAPI spec for agents:** SKILL.md now states exactly where to get the API contract: `{base_url}/api/v1/openapi-llm.yaml` (with default for same-host).
## [1.0.2] - Version bump
- Version bump (1.0.1 was already released).
## [1.0.1] - Webhook auth for OpenClaw
- **Webhook:** TMS now supports optional `TMS_WEBHOOK_TOKEN`; when set, TMS sends `Authorization: Bearer <token>` when calling `TMS_WEBHOOK_URL`, so OpenClaw gateway hooks can authenticate the request. Skill README and SKILL.md updated with webhook setup (URL + token, hooks mapping).
## [1.0.0] - Initial release
- TMS REST API skill: add downloads (video URL, magnet, AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/nikitadmitryuk/skills/tms",
"sourceUrl": "https://clawhub.ai/nikitadmitryuk/skills/tms",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T00:07:06.645Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-nikitadmitryuk-tms/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-nikitadmitryuk-tms/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T00:07:06.645Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.9K downloads",
"href": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceUrl": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T00:07:06.645Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.0.9",
"href": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceUrl": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-12T00:02:01.375Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-nikitadmitryuk-tms/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-nikitadmitryuk-tms/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.0.9",
"description": "Require configured TMS API key usage and document localhost access",
"href": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceUrl": "https://clawhub.ai/nikitadmitryuk/tms",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-06-12T00:02:01.375Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
