{
  "name": "Grade",
  "description": "Encontre TV e rádio, abra um canal e guarde seus favoritos para voltar. Pastas e M3U para o VLC. Projetos de produtores com direitos sob consulta.",
  "url": "https://gradetv.net",
  "provider": {
    "organization": "Grade",
    "url": "https://gradetv.net",
    "email": "contato@gradetv.net"
  },
  "documentationUrl": "https://gradetv.net/llms.txt",
  "protocol": "mcp",
  "protocolUrl": "https://modelcontextprotocol.io",
  "interfaces": [
    {
      "transport": "streamable-http",
      "url": "https://gradetv.net/mcp"
    }
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "authentication": "none"
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/markdown"
  ],
  "skills": [
    {
      "id": "api_index",
      "name": "api_index",
      "description": "Descobre a API Grade.",
      "endpoint": "GET /api/"
    },
    {
      "id": "health",
      "name": "health",
      "description": "Liveness.",
      "endpoint": "GET /api/health"
    },
    {
      "id": "geo",
      "name": "geo",
      "description": "País sugerido pelo Cloudflare para a UI (fallback BR).",
      "endpoint": "GET /api/geo"
    },
    {
      "id": "list_countries",
      "name": "list_countries",
      "description": "Países do catálogo com contagem playable e URL da bandeira (kind=radio conta estações).",
      "endpoint": "GET /api/countries"
    },
    {
      "id": "list_tags",
      "name": "list_tags",
      "description": "Tags das estações de rádio tocáveis (Radio Browser), com contagem; opcionalmente por país.",
      "endpoint": "GET /api/tags"
    },
    {
      "id": "search_channels",
      "name": "search_channels",
      "description": "Busca canais públicos (filtros: q, country, category, language, network, quality, playable, nsfw; kind=radio para estações de rádio, tag para tag de rádio; sort=score ordena pela saúde medida por terceiro, sort=votes pelos votos da rádio; online=1 só quem foi visto online nas últimas 48 h).",
      "endpoint": "GET /api/channels"
    },
    {
      "id": "list_languages",
      "name": "list_languages",
      "description": "Idiomas do catálogo tocável.",
      "endpoint": "GET /api/languages"
    },
    {
      "id": "list_networks",
      "name": "list_networks",
      "description": "Redes (network) do catálogo tocável.",
      "endpoint": "GET /api/networks"
    },
    {
      "id": "list_qualities",
      "name": "list_qualities",
      "description": "Qualidades distintas dos streams.",
      "endpoint": "GET /api/qualities"
    },
    {
      "id": "list_subdivisions",
      "name": "list_subdivisions",
      "description": "Estados/subdivisões com canal tocável.",
      "endpoint": "GET /api/subdivisions"
    },
    {
      "id": "list_cities",
      "name": "list_cities",
      "description": "Cidades com canal tocável.",
      "endpoint": "GET /api/cities"
    },
    {
      "id": "get_channel",
      "name": "get_channel",
      "description": "Detalhe de um canal e seus streams.",
      "endpoint": "GET /api/channels/:id"
    },
    {
      "id": "get_channel_guide",
      "name": "get_channel_guide",
      "description": "Programação de hoje do canal (grabada por nós): agora, a seguir e a lista.",
      "endpoint": "GET /api/channels/:id/guia"
    },
    {
      "id": "create_guest",
      "name": "create_guest",
      "description": "Cria guest ipt_…",
      "endpoint": "POST /api/guest"
    },
    {
      "id": "mint_key",
      "name": "mint_key",
      "description": "Gera API key iptk_… (texto 1×).",
      "endpoint": "POST /api/keys"
    },
    {
      "id": "get_library",
      "name": "get_library",
      "description": "Árvore organizada do dono + URLs de feed.",
      "endpoint": "GET /api/library"
    },
    {
      "id": "create_category",
      "name": "create_category",
      "description": "Cria tab/categoria pessoal.",
      "endpoint": "POST /api/categories"
    },
    {
      "id": "create_group",
      "name": "create_group",
      "description": "Cria sub-aba numa categoria.",
      "endpoint": "POST /api/groups"
    },
    {
      "id": "add_item",
      "name": "add_item",
      "description": "Adiciona canal à sub-aba.",
      "endpoint": "POST /api/items"
    },
    {
      "id": "get_history",
      "name": "get_history",
      "description": "Histórico de canais assistidos pelo dono.",
      "endpoint": "GET /api/history"
    },
    {
      "id": "record_watch",
      "name": "record_watch",
      "description": "Registra um canal assistido no histórico do dono.",
      "endpoint": "POST /api/history"
    },
    {
      "id": "forget_watch",
      "name": "forget_watch",
      "description": "Tira um canal do histórico do dono.",
      "endpoint": "DELETE /api/history/:channel_id"
    },
    {
      "id": "clear_history",
      "name": "clear_history",
      "description": "Limpa o histórico inteiro do dono.",
      "endpoint": "DELETE /api/history"
    },
    {
      "id": "legacy_stream",
      "name": "legacy_stream",
      "description": "Metadados públicos: site oficial do canal, URL da transmissão para copiar em outro player e player legado HTTP. Recusa adulto e bloqueados.",
      "endpoint": "GET /api/legacy/:id"
    }
  ],
  "discovery": {
    "openapi": "https://gradetv.net/openapi.json",
    "llms": "https://gradetv.net/llms.txt",
    "okf": "https://gradetv.net/okf/index.md",
    "numbers": "https://gradetv.net/api/vitrine",
    "partnerships": "https://gradetv.net/api/partners",
    "api_catalog": "https://gradetv.net/.well-known/api-catalog",
    "x402": "https://gradetv.net/.well-known/x402",
    "pricing": "https://gradetv.net/pricing",
    "docs": "https://gradetv.net/docs"
  },
  "updated": "2026-09-10"
}