# Ferramentas · Cursos

> Ferramentas MCP para cursos: listar e ver cursos com módulos e aulas, montar um curso inteiro com o produto que o vende, editar e excluir o curso, acrescentar, editar, mover e excluir módulos e aulas, e o lado do aluno: matrícula e progresso.

Montar e manter cursos: um curso inteiro numa chamada (espaço, módulos, aulas e o produto de venda), a capa e o status, e depois os módulos e as aulas: acrescentar, renomear, mudar de ordem, levar uma aula para outro módulo e excluir. Quem é aluno se matricula e marca o progresso pela conversa. O conteúdo de cada aula (texto, vídeo) ainda entra pelo painel.

Cada ferramenta traz um selo: <span class="tool-kind tool-kind-read">Só consulta</span> não muda nada, <span class="tool-kind tool-kind-write">Altera</span> cria ou muda algo na hora, e <span class="tool-kind tool-kind-confirm">Pede confirmação</span> só age depois do seu sim a um resumo. Ver [Dinheiro e confirmação](/mcp/dinheiro-e-confirmacao).

## Em resumo

| Ferramenta | O que faz | Papel mínimo | Tipo |
|---|---|---|---|
| [`list_courses`](#list-courses) | Cursos da comunidade | Qualquer | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`get_course`](#get-course) | Um curso com módulos e aulas | Qualquer | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`create_course`](#create-course) | Espaço, curso, módulos, aulas e o produto, de uma vez | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`update_course`](#update-course) | Edita um curso, a capa e o status | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`create_course_module`](#create-course-module) | Acrescenta um módulo a um curso | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`create_lesson`](#create-lesson) | Acrescenta uma aula a um módulo | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`update_course_module`](#update-course-module) | Renomeia um módulo ou muda a posição | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`update_lesson`](#update-lesson) | Muda uma aula, ou a leva para outro módulo | Administrador | <span class="tool-kind tool-kind-write">Altera</span> |
| [`delete_course_module`](#delete-course-module) | Exclui um módulo com as aulas | Administrador | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`delete_lesson`](#delete-lesson) | Exclui uma aula | Administrador | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`delete_course`](#delete-course) | Exclui um curso | Administrador | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`enroll_in_course`](#enroll-in-course) | Matricula você num curso publicado | Membro (não o financeiro) | <span class="tool-kind tool-kind-write">Altera</span> |
| [`complete_lesson`](#complete-lesson) | Registra o seu progresso numa aula | Membro (não o financeiro) | <span class="tool-kind tool-kind-write">Altera</span> |

## `list_courses`

<span class="tool-kind tool-kind-read">Só consulta</span>

**Listar cursos.** Os cursos da comunidade. *Papel mínimo: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space_id` | id | Não | Só os cursos de um espaço de cursos |

**Devolve:** os cursos, com id, slug, título, nível e status.

**Peça assim:** *"Que cursos já existem?"*

## `get_course`

<span class="tool-kind tool-kind-read">Só consulta</span>

**Ver curso com módulos e aulas.** Um curso com a estrutura completa. *Papel mínimo: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course` | texto | Sim | O id ou o slug do curso |

**Devolve:** o curso, os módulos (com o id que `create_lesson` pede) e as aulas de cada módulo.

**Peça assim:** *"Mostre a estrutura do curso Excel do Zero."*

## `create_course`

<span class="tool-kind tool-kind-write">Altera</span>

**Criar curso completo.** Espaço de Cursos → curso → módulos → aulas → (opcional) o produto que libera o espaço. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `title` | texto, até 255 | Sim | O título do curso |
| `description` | texto simples | Não | Sem formatação: marcas de Markdown são tiradas |
| `level` | `beginner`, `intermediate`, `advanced` | Não | Padrão: `beginner` |
| `space_id` | id | Não | Um espaço de Cursos que já existe |
| `section_id` | id | Não | Onde criar o espaço, se `space_id` não vier |
| `space_title` | texto | Não | Padrão: o título do curso |
| `icon` | um dos ícones da lista | Não | O ícone do espaço criado. Ver [Ícones](/mcp/ferramentas-comunidade#icones) |
| `image_url` | link | Não | A capa do curso. Ver [Imagens](/mcp/ferramentas#imagens) |
| `modules` | lista, até 30 | Não | Cada um com `title` (obrigatório) e `lessons` |
| `sale` | objeto | Não | O produto que vende o curso (veja abaixo) |
| `idempotency_key` | texto, até 100 | Não | |

Cada **módulo** tem `title` e `lessons`, uma lista de até 50, e cada **aula** tem `title` (obrigatório), `type` (`text`, `video`, `link`, `image`; padrão `text`) e `duration` (ex.: *12 min*).

A **venda** (e o **ingresso**, no `create_event`):

| Campo | Tipo | Descrição |
|---|---|---|
| `price` | número, em reais | Obrigatório |
| `title` | texto, de 3 a 255 | Padrão: o título do curso (ou *Ingresso — título do evento*) |
| `type` | `ONE_TIME`, `INSTALLMENT`, `SUBSCRIPTION` | Padrão: `ONE_TIME` (avulso) |
| `interval` | `MONTHLY`, `YEARLY` | Só em `SUBSCRIPTION` |
| `max_installments` | 1 a 12 | Até quantas vezes no cartão |
| `stock` | número | Quantidade à venda |
| `direct_link` | sim ou não | Vendável por link direto |
| `publish` | sim ou não | Pôr à venda já. Padrão: rascunho |

**Devolve:** o espaço (e se foi criado agora), o curso (id, título, slug, status), os módulos com as aulas, e o produto (id, título, preço, status), se houver.

**Peça assim:** *"Monte o curso Excel do Zero no espaço de cursos, com os módulos Fundamentos, Fórmulas e Tabelas dinâmicas, 3 aulas de vídeo em cada, e um produto de R$ 297 em até 10×, em rascunho."*

**Notas:** as aulas guardam título, tipo e duração; o conteúdo entra pelo painel. O produto libera o espaço do curso para quem compra.

## `update_course`

<span class="tool-kind tool-kind-write">Altera</span>

**Editar curso.** Muda título, descrição, nível, status (`draft`, `published`, `archived`) e a capa. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course` | id, slug ou link | Sim | |
| `title`, `description` | texto | Não | |
| `level` | `beginner`, `intermediate`, `advanced` | Não | |
| `status` | `draft`, `published`, `archived` | Não | |
| `image_url` ou `image_base64` | link ou arquivo | Não | A capa nova |

**Peça assim:** *"Publique o curso Excel do Zero e troque a capa por esta."*

**Notas:** módulos e aulas mudam com [`update_course_module`](#update-course-module), [`update_lesson`](#update-lesson) e as ferramentas de exclusão.

## `create_course_module`

<span class="tool-kind tool-kind-write">Altera</span>

**Adicionar módulo a um curso.** Acrescenta um módulo ao fim de um curso que já existe. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course_id` | id | Sim | De `list_courses` ou `create_course` |
| `title` | texto | Sim | |

**Devolve:** o módulo criado, com o id que `create_lesson` pede.

**Peça assim:** *"Acrescente o módulo Gráficos ao curso Excel do Zero."*

**Notas:** para renomear ou mudar a posição depois, [`update_course_module`](#update-course-module).

## `create_lesson`

<span class="tool-kind tool-kind-write">Altera</span>

**Adicionar aula a um módulo.** Acrescenta uma aula ao fim de um módulo. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `module_id` | id | Sim | De `get_course` |
| `title` | texto | Sim | |
| `type` | `text`, `video`, `link`, `image` | Não | Padrão: `text` |
| `duration` | texto | Não | Ex.: *12 min* |

**Devolve:** a aula criada.

**Peça assim:** *"No módulo Gráficos, crie as aulas Gráfico de linhas (8 min) e Gráfico de pizza (6 min), as duas de vídeo."*

**Notas:** a aula guarda título, tipo e duração. O conteúdo (o texto, o vídeo) ainda não é gravado pelo MCP: entra pelo painel.

## `update_course_module`

<span class="tool-kind tool-kind-write">Altera</span>

**Editar módulo do curso.** Renomeia um módulo ou muda a posição dele. Só o que for enviado muda. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `module_id` | id | Sim | De `get_course` |
| `title` | texto, até 255 | Não | |
| `order` | número, a partir de 0 | Não | A posição no curso |

**Peça assim:** *"Renomeie o módulo Fórmulas para Fórmulas essenciais e ponha ele em segundo."*

## `update_lesson`

<span class="tool-kind tool-kind-write">Altera</span>

**Editar aula.** Muda o título, o tipo, a duração ou a posição de uma aula, ou a leva para outro módulo do mesmo curso. Só o que for enviado muda. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `lesson_id` | id | Sim | De `get_course` |
| `title` | texto, até 255 | Não | |
| `type` | `text`, `video`, `link`, `image` | Não | |
| `duration` | texto | Não | Ex.: *12 min* |
| `order` | número, a partir de 0 | Não | A posição no módulo |
| `module_id` | id | Não | Leva a aula para este módulo (do mesmo curso). Sem `order`, ela vai para o fim |

**Peça assim:** *"Passe a aula Gráfico de pizza para o módulo Fundamentos, como última aula."*

**Notas:** o conteúdo da aula continua entrando pelo painel.

## `delete_course_module`

<span class="tool-kind tool-kind-confirm">Pede confirmação</span>

**Excluir módulo do curso.** Exclui um módulo e todas as aulas dele. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `module_id` | id | Sim | De `get_course` |
| `course` | id, slug ou link | Não | O curso, para o resumo mostrar o nome do módulo e das aulas |

**Notas:** o progresso de quem já assistiu fica guardado.

## `delete_lesson`

<span class="tool-kind tool-kind-confirm">Pede confirmação</span>

**Excluir aula.** *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `lesson_id` | id | Sim | De `get_course` |
| `course` | id, slug ou link | Não | O curso, para o resumo mostrar o nome da aula |

**Notas:** o progresso de quem já assistiu fica guardado.

## `delete_course`

<span class="tool-kind tool-kind-confirm">Pede confirmação</span>

**Excluir curso.** O curso é arquivado e sai do feed. *Papel mínimo: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course` | id, slug ou link | Sim | |

**Devolve:** na primeira chamada, o título, quantos módulos e quantas matrículas o curso tem, e o código de confirmação.

## `enroll_in_course`

<span class="tool-kind tool-kind-write">Altera</span>

**Matricular-se no curso.** Matricula você num curso publicado. *Papel: proprietário, administrador, moderador ou membro.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course` | id, slug ou link | Sim | |

**Peça assim:** *"Me matricule no curso Excel do Zero."*

## `complete_lesson`

<span class="tool-kind tool-kind-write">Altera</span>

**Registrar progresso na aula.** Marca uma aula como concluída, ou registra uma porcentagem, num curso em que você está matriculado. *Papel: proprietário, administrador, moderador ou membro.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `course` | id, slug ou link | Sim | |
| `lesson_id` | id | Sim | De `get_course` |
| `completed` | sim ou não | Não | Padrão sim |
| `progress_percent` | de 0 a 100 | Não | |

**Peça assim:** *"Marque como vista a aula Fórmulas básicas."*

## Relacionados

- [Ferramentas](/mcp/ferramentas)
- [Receitas](/mcp/receitas)
- [Dinheiro e confirmação](/mcp/dinheiro-e-confirmacao)
