{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_an2xjp82php7","handle":"grade-grade","url":"https://wellknown.network/agents/grade-grade","links":{"self":"https://wellknown.network/agents/grade-grade/record.json","html":"https://wellknown.network/agents/grade-grade","markdown":"https://wellknown.network/agents/grade-grade/record.md","api":"https://wellknown.network/api/v1/agents/grade-grade","status":"https://wellknown.network/api/v1/agents/grade-grade/status","claim":"https://wellknown.network/agents/grade-grade/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/grade-grade/claim.json","badge":"https://wellknown.network/agents/grade-grade/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/grade-grade/history","tools":"https://wellknown.network/api/v1/agents/grade-grade/tools"},"ard":{"identifier":"urn:air:gradetv.net:agent:grade-grade","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"GradeTV","summary":"Consulte a programação de TV. Encontre rádios ao vivo. Guarde seus canais favoritos.","description":"Consulte a programação de TV. Encontre rádios ao vivo. Guarde seus canais favoritos.","publisher":{"name":"Grade","url":"https://gradetv.net"},"homepage":"https://gradetv.net/llms.txt","repository":null,"version":null,"license":null,"protocols":["a2a"],"tags":[],"pricing":null,"endpoints":[{"url":"https://gradetv.net","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"list_programacao","name":"list_programacao","tags":[],"description":"Canais com programação coletada, até 48 por página."},{"id":"get_programacao","name":"get_programacao","tags":[],"description":"Última programação disponível do canal e até 20 datas do histórico."},{"id":"get_programacao_dia","name":"get_programacao_dia","tags":[],"description":"Programação preservada de um canal em um dia específico."},{"id":"api_index","name":"api_index","tags":[],"description":"Índice auto-descrito da API inteira, com os idiomas e as páginas HTML de cada um."},{"id":"health","name":"health","tags":[],"description":"Liveness e o commit publicado agora — é como o smoke espera o próprio deploy."},{"id":"geo","name":"geo","tags":[],"description":"País e idioma sugeridos para quem está chamando. Sem país detectado pela borda, sugere BR com `source: \"fallback\"`; `detected` diz o que a borda viu."},{"id":"list_countries","name":"list_countries","tags":[],"description":"Países do catálogo com contagem playable e URL da bandeira (kind=radio conta estações)."},{"id":"list_tags","name":"list_tags","tags":[],"description":"Tags das estações de rádio tocáveis, com contagem; opcionalmente por país."},{"id":"search_channels","name":"search_channels","tags":[],"description":"Busca canais públicos (filtros: q, country, category, language, network, quality, playable; 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). É a porta de entrada do produto. A resposta varia por navegador, sistema e país de quem pede — cada canal traz `social.your_fails`, o recorte do SEU ambiente — por isso ela é `Cache-Control: private`."},{"id":"list_languages","name":"list_languages","tags":[],"description":"Idiomas que têm canal tocável, com a contagem de cada um."},{"id":"list_networks","name":"list_networks","tags":[],"description":"Redes e emissoras que têm canal tocável, com a contagem."},{"id":"list_qualities","name":"list_qualities","tags":[],"description":"Qualidades distintas encontradas nos streams do catálogo (em rádio, codec e bitrate)."},{"id":"list_subdivisions","name":"list_subdivisions","tags":[],"description":"Estados e províncias que têm canal tocável."},{"id":"list_cities","name":"list_cities","tags":[],"description":"Cidades que têm canal tocável, filtráveis por país e por estado."},{"id":"get_channel","name":"get_channel","tags":[],"description":"Ficha completa de um canal, com os streams já apontando para o nosso hop."},{"id":"get_channel_guide","name":"get_channel_guide","tags":[],"description":"Programação de hoje do canal (grabada por nós): agora, a seguir e a lista. Disponível nos canais com guia (`guide=1`), com validade de até dois dias. Confira a data da resposta; a ficha traz o resumo em `guide_now`."},{"id":"create_guest","name":"create_guest","tags":[],"description":"Cria guest ipt_… Não pede e-mail nem nada. Guarde o token: perdeu o token, perdeu a biblioteca — a não ser que a conta já o tenha reivindicado (`POST /api/auth/claim`), e aí o que ele guardou está na conta."},{"id":"get_library","name":"get_library","tags":[],"description":"A galeria inteira do dono: pastas, sub-abas, canais e as URLs de feed de cada nível."},{"id":"create_category","name":"create_category","tags":[],"description":"Cria tab/categoria pessoal. Teto de 8 pastas por dono. A resposta traz a biblioteca inteira já atualizada — não precisa recarregar `GET /api/library` depois."},{"id":"create_group","name":"create_group","tags":[],"description":"Cria sub-aba numa categoria. Teto de 12 sub-abas por pasta. A resposta traz a biblioteca inteira já atualizada — não precisa recarregar `GET /api/library` depois."},{"id":"add_item","name":"add_item","tags":[],"description":"Adiciona canal à sub-aba. Teto de 40 canais por sub-aba. A resposta diz em que pasta e sub-aba o canal caiu, para a tela abrir no lugar certo. A resposta traz a biblioteca inteira já atualizada — não precisa recarregar `GET /api/library` depois."},{"id":"get_history","name":"get_history","tags":[],"description":"Histórico de canais assistidos pelo dono. Exibe somente canais disponíveis no catálogo."},{"id":"record_watch","name":"record_watch","tags":[],"description":"Registra um canal assistido no histórico do dono."},{"id":"forget_watch","name":"forget_watch","tags":[],"description":"Tira um canal do histórico do dono."}],"tools":["list_programacao","get_programacao","get_programacao_dia","api_index","health","geo","list_countries","list_tags","search_channels","list_languages","list_networks","list_qualities","list_subdivisions","list_cities","get_channel","get_channel_guide","create_guest","get_library","create_category","create_group","add_item","get_history","record_watch","forget_watch"],"extra":{"inputModes":["application/json"],"outputModes":["application/json","text/markdown"],"capabilities":{"streaming":true,"pushNotifications":false}},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"}],"categories":["communication"],"language":"pt"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-23T00:30:33.199Z","lastProbedAt":"2026-10-23T00:30:33.199Z","statusComputedAt":"2026-10-23T00:33:47.604Z","reliability30d":{"probes":109,"successRate":0.9908,"p50Ms":245,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":107,"authBoundaryOk":0,"serviceOk":107,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-23T00:30:33.199Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":193,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-22T17:29:30.013Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":206,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-22T10:36:12.631Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":199,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-22T03:30:04.572Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":199,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-21T20:29:16.153Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":202,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-21T11:24:58.263Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":195,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-20T21:27:45.843Z","kind":"a2a_card","ok":false,"httpStatus":404,"latencyMs":5033,"error":"http 404","detail":null},{"at":"2026-10-20T14:25:42.229Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":195,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-20T07:28:17.624Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":257,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}},{"at":"2026-10-20T00:32:37.228Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":194,"error":null,"detail":{"name":"GradeTV","signed":false,"cardPath":"/.well-known/agent-card.json","skillCount":24}}],"tools":null,"package":null,"toolSurface":null,"endpointFacts":[{"id":"ep_mzstc3z7vk2w","url":"https://gradetv.net","type":"a2a","factsCheckedAt":"2026-10-22T17:29:30.021Z","auth":null,"tls":{"observedAt":"2026-10-22T17:29:30.399Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"gradetv.net","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-09-23T02:04:46.000Z","validTo":"2026-12-22T02:04:45.000Z","daysToExpiry":59,"sanCount":3,"fingerprint256":"D4:FB:D7:9F:F5:EC:D0:2E:2F:0C:2C:E3:D4:D9:75:62:A4:E0:80:68:EE:3A:6A:72:6F:D1:83:C0:F1:82:65:70"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://gradetv.net/.well-known/agent-card.json","url":"https://gradetv.net/.well-known/agent-card.json","firstSeenAt":"2026-09-21T09:23:00.435Z","fetchedAt":"2026-10-19T13:24:13.885Z","normalizedAt":"2026-10-19T13:24:13.885Z"}]},"firstSeenAt":"2026-09-21T09:23:00.435Z","updatedAt":"2026-10-19T13:24:30.573Z"}