Ferramentas MCP para a vida acadêmica na USP — bandejão do RUCard, prazos e material do e-Disciplinas, catálogo do JupiterWeb. Projeto não-oficial, sem vínculo com a Universidade de São Paulo.
16 tools with complete schemas and descriptions, but significant quality gaps. Tool names lack action verbs (disciplina, requisitos, bandejao instead of get_discipline, get_prerequisites, get_menu). Descriptions are verbose (200-400+ chars) and include example values that LLMs may reuse literally. Parameters are well-typed with enums where appropriate, but descriptions often lack constraint details. Output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Two write tools (salvar_rascunho, entregar) have confirmation patterns but lack explicit dry-run documentation. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Tarefas e questionários vencidos que você ainda não entregou no e-Disciplinas (Moodle da USP). Use para 'o que está vencido', 'o que eu perdi'. Traz quanto tempo faz que venceu.
Avisos e anúncios das disciplinas do e-Disciplinas (Moodle da USP): o que o professor postou no quadro de avisos. Use para 'tem algum aviso em PTC3314', 'o que o professor disse'. Traz data e conteúdo.
Baixa um arquivo do e-Disciplinas (Moodle da USP) e devolve o conteúdo em base64. Use para 'baixa esse PDF', 'qual é o conteúdo do arquivo'. Funciona com qualquer arquivo que o professor disponibilizou ou que você anexou numa entrega.
Cardápio dos bandejões da USP na Cidade Universitária — Central, Prefeitura (PUSP-CB), Física e Químicas. Diz o que tem no almoço e no jantar de um dia, com calorias, preço de aluno, horário e a opção do dia (marcada como vegetariana quando o RU marca), nos quatro restaurantes de uma vez, para comparar onde vale a pena comer. Com dia='semana' traz os sete dias numa chamada só. Use para 'o que tem no bandejão hoje', 'o que tem na sexta?', 'que dia tem lasanha essa semana?', 'vale a pena almoçar na Prefeitura?', 'que horas fecha o jantar', 'o das Químicas abre no sábado?'. LIMITES: só a semana corrente (não há cardápio de outra semana, nem passada nem futura); não há cardápio de café da manhã publicado, só o horário; e nada de saldo, extrato ou recarga do cartão.
Tool names lack action verbs. 'disciplina', 'requisitos', 'bandejao' do not start with get_, list_, or search_. LLMs cannot infer intent from names alone and must read full descriptions to disambiguate.
Descriptions include example values (PTC3314, MAT2454, MAT2455) that LLMs may reuse literally in real calls. Use enum constraints or format declarations instead.
No output schemas documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. E.g., disciplina returns name/credits/hours but structure is not declared.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Diagnóstico de uma disciplina no e-Disciplinas (Moodle da USP): quantas tarefas tem, quantas você entregou, quantas estão vencidas, quantas faltam, e o mesmo para questionários. Use para 'como está meu desempenho em PTC3314', 'quantas tarefas faltam', 'tem algo vencido'. Não traz notas nem feedback do professor.
Ficha de uma disciplina no catálogo público do JupiterWeb (USP), pela sigla: nome, créditos e carga horária sempre, e sob pedido ementa, objetivos, programa, bibliografia e avaliação. Use para 'quantos créditos tem PTC3314', 'qual a ementa de MAT2454', 'o que cai em PME3344' (programa), 'como é a avaliação'. Por padrão vem só nome, créditos e ementa — peça as outras partes em `secoes`. Para pré-requisito use a ferramenta `requisitos`. NÃO traz horário de aula, sala nem vagas, e não busca por nome: precisa da sigla.
Lista todas as disciplinas em que você está matriculado no e-Disciplinas (Moodle da USP). Use para 'quais são minhas disciplinas', 'em quantas disciplinas estou'. Traz sigla, nome e período.
ENVIA uma entrega para correção no e-Disciplinas (Moodle da USP) — o botão de entregar, com tudo o que ele significa. Use para 'entrega o EP1', 'manda o EC-1 para correção'. Isto NÃO tem como ser desfeito por este servidor: depois de enviada, a entrega está com o professor. Funciona em DUAS chamadas: a primeira não escreve nada e devolve um plano — estado atual, prazo, arquivos anexados, o que muda — com um código; a segunda, repetindo o código, é que envia. Se alguma coisa mudar no e-Disciplinas entre uma e outra (arquivo novo, prazo prorrogado, entrega já enviada), o código não confere e a resposta traz o plano novo em vez de enviar. Recusa, e diz por quê: entrega de grupo, entrega travada, entrega já enviada, envio não permitido pelo site, e entrega sem nenhum arquivo anexado. NÃO anexa arquivo — para ver o que já está anexado, use `ja_entreguei`.
O que você já entregou em cada disciplina do e-Disciplinas (Moodle da USP): tarefas e questionários respondidos, com data, nota e feedback do professor quando houver. Use para 'o que eu já entreguei em PTC3314', 'qual foi minha nota no EP1', 'o que o professor respondeu'. Não traz o que ainda falta entregar: use `o_que_vence` para isso.
Material de aula das disciplinas do e-Disciplinas (Moodle da USP): arquivos, links, textos e vídeos que o professor disponibilizou. Use para 'qual é o material da aula', 'tem algum PDF', 'onde está o vídeo da aula'. Traz nome, tipo (arquivo, link, texto, vídeo) e tamanho quando aplicável.
Notas de todas as disciplinas do e-Disciplinas (Moodle da USP): média, notas de cada avaliação, e o que falta ser avaliado. Use para 'qual é minha nota em PTC3314', 'qual foi minha nota no EP1', 'qual é a média'. Não traz feedback do professor: use `ja_entreguei` para isso.
O que mudou no e-Disciplinas (Moodle da USP) desde a última vez que você consultou: avisos novos, material novo, tarefas novas, prazos alterados. Use para 'o que mudou em PTC3314', 'tem algo novo'. Traz data e tipo de mudança.
Lista o que tem prazo de entrega em breve nas disciplinas do e-Disciplinas (Moodle da USP): tarefas e questionários que vencem dentro de uma janela de dias a partir de agora. Use para responder perguntas como 'o que eu tenho para entregar', 'o que vence essa semana' ou 'tem alguma tarefa vencendo'. Diz o que vence e quando, não se já foi feito: para isso, `ja_entreguei` (tarefa) e `questionarios` (questionário).
Questionários das disciplinas do e-Disciplinas (Moodle da USP): o que você respondeu, o que falta responder, prazos e notas. Use para 'quais são os questionários de PTC3314', 'qual foi minha nota no questionário', 'tem algum questionário vencido'. Não traz as perguntas do questionário, só metadados.
O que é preciso ter cursado antes de uma disciplina da USP, pela sigla. A resposta vem POR CURRÍCULO, porque a exigência depende do currículo e não só da disciplina: a mesma matéria pode ser requisito duro num curso e 'fraco' (dá para matricular devendo) em outro, ou correquisito (cursa junto). Use para 'o que preciso ter feito antes de PTC3314', 'posso pegar essas duas juntas', 'dá pra me matricular devendo'. NÃO traz horário, sala nem vagas, e não sabe em que currículo você está — ela mostra todos e diz qual é curso de ingresso.
Salva o TEXTO do rascunho de uma entrega no e-Disciplinas (Moodle da USP), sem enviar para correção. Use para 'salva isso como rascunho no EP1', 'guarda esse texto na entrega'. Rascunho salvo NÃO é entrega feita: o professor não recebe nada até você usar `entregar`. Funciona em DUAS chamadas: a primeira não escreve nada e devolve um plano do que mudaria com um código; a segunda, repetindo o código, é que grava. Se alguma coisa mudar no e-Disciplinas entre uma e outra, o código não confere e a resposta traz o plano novo. Só entrega de TEXTO online: entrega por arquivo é recusada com esse motivo, porque este servidor não sobe arquivo. Entrega de grupo também é recusada.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like 'entregar' (IRREVERSIBLE) and 'salvar_rascunho' (WRITE) lack explicit risk markers that guide agent behavior.
Error handling lacks recovery guidance. No categorization of errors as retryable, user-fixable, or fatal. E.g., 'discipline not found' should suggest search_disciplines() or list available options.