MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Other

GradeTV

Read collected TV schedules by channel and date. Free daily reads; paid multi-day responses.

Checks passed
14 / 22

0 failed · 8 not measured

Median response
911 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
46

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 911 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name GradeTV.

  • Pass
    Lists tools

    tools/list returned 46 tools.

  • Pass
    Current protocol

    Negotiated 2025-06-18. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 911 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 911 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    88 of 88 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-10T16:19:45.578722Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using GradeTV

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http gradetv https://gradetv.net/mcp

Capabilities

Tools 46

add_favorite

Marks a channel as a favorite. A repeat does not add up: the public counter counts people, not clicks.

Discovered
add_item

Adds a channel to a tab. 40 channels at most per tab. The response tells the folder and the tab where the channel went, so the screen opens in the right place. The response has the whole updated library, so you do not need to reload `GET /api/library`.

Discovered
api_index

The index of the whole API, with the languages and the HTML pages of each language.

Discovered
channel_health

The community health of the channel: the success rate, the failure reasons and the affected environments. It tells 'the channel is off the air' from 'the channel is blocked in your country'. `geo` tells whether it is a regional restriction or a general failure (with the countries), `regions[]` has the success and the failure by country, `latency[]` has the opening speed measured at the hop by country, and `pra_voce` sums it up for the country of the caller. Without community reports (`POST /api/play-report`), the panel is empty.

Discovered
chat_history

The last messages in the room of a channel (without WebSocket).

Discovered
chat_pass

Buys or confirms the monthly chat pass: $0.10 per 30 days, through x402 or credit. A pass that is already valid returns 200 without charging again: you can call it before writing, with no risk of paying twice. The pass belongs to the person who speaks in the chat: the `X-Guest-Token` guest (the one the WebSocket recognizes in `hello`); without a guest, the account session, which speaks only over HTTP. It stays in the global purchase record (`direito`).

Discovered
chat_send

Sends a message to the room of a channel by HTTP. The speaker is the guest (`X-Guest-Token`), the same one that the WebSocket recognizes; without a guest, the account session.

Discovered
clear_history

Clears the whole history of the owner at once.

Discovered
contact

Write to the people behind the product: a question, or a sponsorship/partnership/advertising proposal. Free, no captcha and no payment; one message every 10 s per network (one that arrives sooner waits its turn). One route for a question and for a sponsorship, partnership or ad proposal (`tipo`, with the placements of `GET /api/partners`). No captcha, no account, no payment. One message every 10 seconds per network: one that arrives sooner waits its turn and then goes out — no error. The message reaches the team by e-mail, with `email` as the reply address. For voice, send multipart/form-data: `dados` is this JSON (up to 32 KiB), and `audio` is one WebM, Ogg or M4A audio file (up to 2 MB). Audio can replace message. The browser records up to two minutes. Audio is attached to the owner's e-mail.

Discovered
create_category

Creates a personal folder (category). 8 folders at most per owner. The response has the whole updated library, so you do not need to reload `GET /api/library`.

Discovered
create_group

Creates a tab in a folder. 12 tabs at most per folder. The response has the whole updated library, so you do not need to reload `GET /api/library`.

Discovered
create_guest

Creates a guest `ipt_…`. It asks for no e-mail and no other data. Keep the token: if you lose the token, you lose the library, unless an account already claimed it (`POST /api/auth/claim`). Then the account keeps what the token saved.

Discovered
delete_comment

Deletes a comment of the owner. The 404 is on purpose: the API does not confirm that a comment with that id exists when it is not yours.

Discovered
forget_watch

Removes a channel from the owner's history.

Discovered
geo

The country and the language suggested for the caller. When the edge detects no country, it suggests BR with `source: "fallback"`; `detected` tells what the edge saw.

Discovered
get_api_x402_programacao_by_slug

The last seven days of the channel's schedule in one call, for an agent, paid per call, with no account. Select the title or category across collected days and receive calendar events with absolute times. You do not need to merge daily records and write a calendar exporter. Only collected dates are returned. This is metadata, not a video archive, a broadcast license or a guarantee that a channel plays.

Discovered
get_api_x402_programacao_by_slug_by_dia

Seven days of the channel's schedule that end on the requested day, for an agent, paid per call, with no account. Up to seven collected days of the channel in one response, without an account or pass. The programa parameter selects by title or category and ignores case and accents. agenda=1 adds agenda_ics, ready to import, with UTC times and unique events. The resumo field gives the days consulted and the showings. The agenda is a file, not a subscription to updates. The free daily reading keeps the same data. A missing channel, day or program, and unavailable history, are not charged. When delivery is available, an unpaid request receives 402, and a paid request receives the result and cobranca.

Discovered
get_channel

The full record of a channel, with the streams that already point to our hop.

Discovered
get_channel_guide

Today's TV guide of the channel (recorded by us): now, next and the list. It is available for the channels with a guide (`guide=1`) and is valid for up to two days. Check the date of the response; the channel record has the summary in `guide_now`.

Discovered
get_history

The channels that the owner watched. It shows only the channels that are available in the catalog.

Discovered
get_library

The whole library of the owner: folders, tabs, channels and the feed URLs of each level.

Discovered
get_programacao

The last TV guide available for the channel and up to 20 dates of its history.

Discovered
get_programacao_dia

The stored TV guide of a channel on one day. We collect and organize the available schedules. Read the channel and date you need instead of building an EPG collection process. Check available dates. The schedule is metadata; it does not provide a video archive or broadcast rights.

Discovered
health

Liveness and the commit that is published now. The smoke test waits for its own deploy here.

Discovered
legacy_stream

Public metadata: the official site of the channel, the stream URL to copy into another player, and the legacy HTTP player. The legacy_url button opens http://legacy.gradetv.net/legacy?stream=ID, with no port in the address. The standalone page accepts lang=pt/en/es/fr/de/hu and theme=light/dark. Playlists go through the HTTPS hop, and the media comes directly from the origin. It does not remove an access refusal or a CORS requirement. It is one indexed read: it does not fetch the origin and does not write to the database.

Discovered
list_cities

The cities that have a playable channel. You can filter them by country and by state.

Discovered
list_comments

The community comments about a channel. When the call has a credential, each of your comments has `mine: true`; this is how the interface knows what you can delete.

Discovered
list_countries

The countries in the catalog, with the playable count and the flag URL (`kind=radio` counts stations).

Discovered
list_favorites

The favorites of the owner. It shows only the channels that are available in the catalog.

Discovered
list_languages

The languages that have a playable channel, with the count of each language.

Discovered
list_networks

The networks and broadcasters that have a playable channel, with the count.

Discovered
list_programacao

Channels with a collected TV guide, up to 48 per page.

Discovered
list_qualities

The different qualities found in the catalog streams (for radio, the codec and the bitrate).

Discovered
list_subdivisions

The states and provinces that have a playable channel.

Discovered
list_tags

The tags of the playable radio stations, with the count, optionally by country.

Discovered
me

The session account (the cookie that the MCP client passes on): the e-mail and the size of the account library. `user.id` is the account id, and the account owns the library when there is a session.

Discovered
play_reports

The raw reports of a channel, with the address. Operator only (METRICS_TOKEN). Use it to investigate one channel. In the current reports, the `ip` field has an identifier calculated from the network and a secret value. The retention period is in `retention_days`. The public panel does not return this identifier.

Discovered
post_comment

Comments on a channel (20 per hour at most per owner). Without `author`, the server makes a nickname that stays the same for the same owner, so the person does not get a different name for each message.

Discovered
pricing

Prices in force, gallery caps and the full x402 configuration. It is the number IN FORCE: read it from here before you spend a call, instead of assuming the price of the documentation. With a credential, it also tells whether the chat pass of the person who speaks in the chat (the guest; without one, the account) is active. `prices.abuso_24h_usd` is the price of the gate for an empty UA/curl, off today.

Discovered
producer_services

Authorized broadcast offer on request: information and contacts for producers. It does not turn on streams; it only gives information and collects interest. To present a project, use contact.form_url in the browser, contact.email by e-mail, or POST /api/contact.

Discovered
record_watch

Records a watched channel in the owner's history.

Discovered
remove_favorite

Removes the channel from the favorites and gives the point back to the public counter.

Discovered
report_play

Reports whether a channel played (ok=true) or not (ok=false with code). The browser and the system come from the User-Agent, and the country comes from the request data; the body cannot change them. The first report of a result on a day returns 201. It counts once per owner, channel, day and result; a repeat returns 200 with `reason: ja_relatado_hoje`. The reports help to compare results in `GET /api/channels/:id/health`, but they do not confirm the cause of a failure.

Discovered
search_channels

Searches public channels (filters: q, country, category, language, network, quality, playable; kind=radio for radio stations, tag for a radio tag; sort=score orders by the health that a third party measures, sort=votes by the radio votes; online=1 returns only channels seen online in the last 48 h). This is the main entry point of the product. The response changes with the browser, the system and the country of the caller: each channel has `social.your_fails`, the result for YOUR environment, so the response is `Cache-Control: private`.

Discovered
tv_pass

Buy a TV pass for 2 devices: 0.10 USDC for 30 days, 0.29 for 90 or 0.99 for 365. No automatic renewal. A 402 uses x402 on Base; repeat the same call with PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1). The shared ledger records the attempt, payment and entitlement. The code identifies the TV device, with the network as fallback. A verified payer account groups its devices. A full account receives an authorization code before payment. Reusing the receipt does not buy another pass.

Discovered
tv_state

Checks the TV device's activation by its six-digit code. The network is the fallback for clients without a playback cookie or UUID.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected911 ms46