# Ferramentas · Suporte

> Ferramentas MCP do módulo Suporte (coworking): abrir chamado com fotos, listar a fila e os meus chamados, triar, atribuir, resolver, nota interna, cancelar, reabrir, fotos e prazos, mais a configuração de quem responde e do prazo por categoria.

O módulo [Suporte](/espacos/suporte) pelo assistente: o residente abre e acompanha chamados (com fotos), a equipe faz a triagem da fila, responde, escreve notas internas e resolve, e o administrador configura quem responde e os prazos. Os papéis são os da tela: o assistente nunca faz mais do que a pessoa conectada faria.

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 |
|---|---|---|---|
| [`get_support_space_settings`](#get-support-space-settings) | Como o espaço funciona: limites, prazos e, para a equipe, quem responde | Qualquer | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`get_support_overview`](#get-support-overview) | A fila em números | Moderador ou financeiro | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`list_support_tickets`](#list-support-tickets) | Toda a fila, com filtros e prazos | Moderador ou financeiro | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`list_my_support_tickets`](#list-my-support-tickets) | Os seus chamados | Qualquer | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`get_support_ticket`](#get-support-ticket) | Um chamado com a conversa e as fotos | Qualquer (o residente lê os seus) | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`get_support_resource_open_count`](#get-support-resource-open-count) | Quantos chamados abertos um item tem | Qualquer | <span class="tool-kind tool-kind-read">Só consulta</span> |
| [`create_support_ticket`](#create-support-ticket) | Abre um chamado, com fotos | Qualquer | <span class="tool-kind tool-kind-write">Altera</span> |
| [`update_support_ticket`](#update-support-ticket) | Triagem: status, prioridade, categoria, responsável, local | Moderador ou financeiro, e responder a categoria | <span class="tool-kind tool-kind-write">Altera</span> |
| [`add_support_comment`](#add-support-comment) | Comenta, ou escreve uma nota interna | Qualquer (a nota, só quem responde) | <span class="tool-kind tool-kind-write">Altera</span> |
| [`cancel_support_ticket`](#cancel-support-ticket) | Cancela um chamado | Qualquer (o residente, o seu) | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`reopen_support_ticket`](#reopen-support-ticket) | Reabre um chamado | Qualquer (o residente, o seu resolvido) | <span class="tool-kind tool-kind-write">Altera</span> |
| [`add_support_photo`](#add-support-photo) | Anexa uma foto | Qualquer | <span class="tool-kind tool-kind-write">Altera</span> |
| [`replace_support_photo`](#replace-support-photo) | Troca uma foto por outra | Qualquer | <span class="tool-kind tool-kind-write">Altera</span> |
| [`remove_support_photo`](#remove-support-photo) | Remove uma foto | Qualquer | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`delete_support_comment`](#delete-support-comment) | Apaga uma mensagem da conversa | Administrador | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |
| [`delete_support_ticket`](#delete-support-ticket) | Apaga um chamado e as fotos | Administrador | <span class="tool-kind tool-kind-confirm">Pede confirmação</span> |

Por papel, o proprietário e o administrador veem as 16; o moderador e o financeiro, 14; o membro, 11. A equipe é o proprietário, o administrador, o moderador e o financeiro, mas **quem responde** (triar, atribuir, responder, anotar) é só quem está na seleção da categoria; **fora dela, a API recusa com um `403` traduzido** e o assistente conta isso. Ver [Quem responde](/espacos/suporte#quem-responde).

O espaço se cria com [`create_space`](/mcp/ferramentas-comunidade#create-space) e `module: "support"`; [`update_space`](/mcp/ferramentas-comunidade#update-space) muda só o que você mandar.

## A configuração do espaço

O argumento `support` de `create_space` e `update_space` aceita (o que você manda se junta ao que já existe):

| Campo | Tipo | Descrição |
|---|---|---|
| `allow_urgent_flag` | verdadeiro ou falso | O residente pode marcar "é urgente" (vira prioridade alta). Padrão: sim |
| `max_open_per_member` | 0 a 1000 | Chamados abertos por residente; 0 = sem limite. Padrão: 10 |
| `location_hint` | texto até 200 | A dica do campo "Local" |
| `default_assignee_id` | id ou `null` | Quem recebe os chamados novos |
| `responders` | objeto | Quem responde: `tags` (**nomes** de tag), `group_ids`, `profile_ids` e `by_category` (a seleção de cada categoria, que substitui a do espaço). Owner e admin sempre respondem; sem seleção, a equipe toda responde |
| `sla.enabled` | verdadeiro ou falso | Liga os prazos. Padrão: sim |
| `sla.business_hours` | `{days, start, end}` | Dias da semana (0 = domingo a 6 = sábado) e horário `HH:MM`, no fuso da comunidade. Padrão: seg a sex, 09:00 a 18:00. Sem feriados |
| `sla.categories` | por categoria | `first_response` e `resolution`, cada um com `value` (inteiro) e `unit` (`hours` ou `days`). Padrão: 4 horas e 1 dia |

As categorias são `FACILITIES`, `CLEANING`, `EQUIPMENT`, `INTERNET`, `ACCESS`, `BILLING` e `OTHER`; os tipos, `MAINTENANCE` e `REQUEST`; os status, `OPEN`, `IN_PROGRESS`, `WAITING_REQUESTER`, `RESOLVED` e `CANCELED`; as prioridades, `LOW`, `NORMAL`, `HIGH` e `URGENT`.

## `get_support_space_settings`

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

**Como o espaço funciona.** `allowUrgentFlag`, `maxOpenPerMember`, `locationHint`, `hasBookings` (se `resource_id` pode ser usado) e `sla`. A equipe recebe também `responders`, `defaultAssigneeId` e `canAnswerCategories` (as categorias que **você** responde); o residente nunca recebe `responders`. *Papel: qualquer com acesso ao espaço.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space` | id ou link | Sim | O espaço Suporte (`list_spaces`) |

## `get_support_overview`

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

**A fila em números:** `open`, `inProgress`, `waitingRequester`, `unassigned`, `mine`, `overdue` (prazo vencido, relógio rodando) e `total`. Sem `space`, soma todos os espaços de Suporte. *Papel: moderador ou financeiro.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space` | id ou link | Não | |

**Peça assim:** *"Como está a fila de chamados?"*

## `list_support_tickets`

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

**Toda a fila**, pela atividade mais recente ou pela prioridade. Com prazos ligados, cada chamado traz `sla` (`firstResponseDueAt`, `resolveDueAt`, `paused`, e as datas legíveis no fuso da comunidade) e, para a equipe, `sla.overdue`. Cada item diz o que você pode fazer (`canAnswer`, `canAssign`...). O residente usa `list_my_support_tickets`. *Papel: moderador ou financeiro.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space` | id ou link | Não | |
| `kind`, `status`, `priority`, `category` | valores acima | Não | Um valor de cada |
| `assignee_profile_id` | id | Não | Chamados desse responsável |
| `unassigned` | verdadeiro ou falso | Não | Sem responsável |
| `mine` | verdadeiro ou falso | Não | Atribuídos a você |
| `overdue` | verdadeiro ou falso | Não | Prazo vencido e relógio rodando (**Aguardando resposta** não conta) |
| `due_today` | verdadeiro ou falso | Não | O próximo prazo cai hoje; só em espaços com prazos |
| `requester_profile_id` | id | Não | Chamados dessa pessoa |
| `resource_id` | id | Não | Chamados desse item das Reservas |
| `q` | texto | Não | Número, `#42` ou parte do título |
| `sort` | `activity` ou `priority` | Não | |
| `page`, `limit` | números | Não | Paginação (até 100) |

**Peça assim:** *"Quais chamados estão atrasados ou vencem hoje?"*

## `list_my_support_tickets`

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

**Os chamados que você abriu**, do mais recente ao mais antigo. *Papel: qualquer com acesso ao espaço.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space` | id ou link | Não | |
| `kind`, `status`, `priority`, `category` | valores acima | Não | |
| `resource_id` | id | Não | |
| `q` | texto | Não | |
| `page`, `limit` | números | Não | |

## `get_support_ticket`

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

**Um chamado com a linha do tempo:** mensagens, histórico de mudanças, as notas internas (**só para a equipe**) e as fotos como links de curta duração. O residente lê os seus; a equipe lê todos, também fora da seleção de quem responde. Outro chamado: `404`. *Papel: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | De `list_support_tickets` ou `list_my_support_tickets` |

## `get_support_resource_open_count`

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

**O aviso de duplicado.** Só o número de chamados abertos de uma sala, mesa ou equipamento das Reservas, sem título nem autor, para avisar antes de abrir mais um. *Papel: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `resource_id` | id | Sim | De `list_booking_resources` |

## `create_support_ticket`

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

**Abrir um chamado**, com fotos. A equipe é avisada pela fila de e-mails. Quem responde a categoria pode ainda definir a `priority` e abrir **em nome de um residente** (`requester_profile_id`): o residente recebe um e-mail, então o assistente mostra antes quem vai recebê-lo. Acima do limite de chamados abertos do espaço, `409`; acima de 10 aberturas por hora, `429`. Repetir a chamada com o mesmo `client_request_id` devolve o mesmo chamado. *Papel: qualquer com acesso ao espaço.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `space` | id ou link | Sim | O espaço Suporte |
| `kind` | `MAINTENANCE` ou `REQUEST` | Sim | |
| `category` | categoria | Sim | |
| `title` | texto | Sim | Até 140 caracteres |
| `description` | texto | Sim | Até 10000 |
| `resource_id` | id | Não | Sala, mesa ou equipamento (`list_booking_resources`) |
| `location_text` | texto | Não | Até 120 caracteres; vale sem item |
| `urgent` | verdadeiro ou falso | Não | Vira prioridade alta, se o espaço permitir |
| `priority` | prioridade | Não | Só quem responde |
| `requester_profile_id` | id | Não | Só quem responde: abre em nome desse residente |
| `photos` | lista | Não | Até 5, cada uma com `image_url` ou `image_base64` (+ `image_type`) |
| `client_request_id` | texto | Não | Evita duplicar num toque repetido |

**Peça assim:** *"Abra um chamado de manutenção: o projetor da Sala 3 não liga, aqui está a foto."*

## `update_support_ticket`

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

**A triagem.** Só quem **responde a categoria** do chamado; fora dela, `403` traduzido. Mande só o que muda. `message` acompanha `RESOLVED` ou `WAITING_REQUESTER` como resposta pública, e o residente recebe e-mail; atribuir avisa o responsável. `RESOLVED` e `CANCELED` só voltam a `OPEN`. `URGENT` só se define aqui. Cada mudança entra na conversa. *Papel: moderador ou financeiro, e responder a categoria.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `status` | status | Não | |
| `priority` | prioridade | Não | |
| `kind`, `category` | valores | Não | A categoria só muda para uma que você também responde |
| `assignee_profile_id` | id ou `null` | Não | Precisa responder a categoria; `null` tira o responsável |
| `resource_id` | id ou `null` | Não | O item das Reservas |
| `location_text` | texto ou `null` | Não | |
| `title` | texto | Não | |
| `message` | texto | Não | Junto com `RESOLVED` ou `WAITING_REQUESTER` |

**Peça assim:** *"Atribua o chamado #42 ao Pedro e resolva dizendo que trocamos a lâmpada."*

## `add_support_comment`

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

**Comentar, com fotos.** O residente comenta nos seus (em **Aguardando resposta** volta a **Em andamento**; em um **Resolvido**, **reabre**); quem responde também, e o residente recebe e-mail (duas respostas em 10 minutos geram um e-mail só). Com `internal: true` é uma **nota interna**: só quem responde pode, o residente nunca a vê, e **não envia e-mail**. Comentário não se edita. *Papel: qualquer (a nota, só quem responde).*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `body` | texto | Sim | Até 10000 caracteres |
| `internal` | verdadeiro ou falso | Não | Nota interna |
| `photos` | lista | Não | Até 5, como em `create_support_ticket` |

**Peça assim:** *"No chamado #42, anote por dentro que o técnico vem na quinta."*

## `cancel_support_ticket`

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

**Cancelar um chamado aberto.** Vira **Cancelado**; nada é apagado. O residente cancela o seu enquanto não está resolvido; quem responde a categoria também (um duplicado, por exemplo). Resolvido ou já cancelado: `400`. *Papel: qualquer, nos limites acima.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |

**Devolve:** na primeira chamada, o resumo (número, título, status, residente) e o código de confirmação.

## `reopen_support_ticket`

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

**Reabrir.** O residente reabre o seu **Resolvido**, e a equipe é avisada; quem responde reabre também o **Cancelado**. Outro status: `400`. O prazo de resolução começa de novo. *Papel: qualquer, nos limites acima.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |

## `add_support_photo`

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

**Anexar uma foto** (JPEG, PNG ou WebP, até 20 MB), guardada em privado: só o residente e a equipe a abrem. Até 20 por chamado (`409` acima). O residente no seu; quem responde em qualquer um. *Papel: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `image_url` ou `image_base64` | link ou texto | Sim | A imagem; `image_base64` vai com `image_type` |

## `replace_support_photo`

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

**Trocar uma foto.** A nova é anexada primeiro; depois a antiga é removida e o arquivo apagado. O residente troca as fotos da abertura e dos seus comentários; quem responde, qualquer uma. *Papel: qualquer.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `photo_id` | id | Sim | De `get_support_ticket` |
| `image_url` ou `image_base64` | link ou texto | Sim | A imagem nova |

## `remove_support_photo`

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

**Remover uma foto** (o arquivo é apagado de vez). Quem responde remove qualquer uma; o residente, as da abertura e as dos seus comentários. *Papel: qualquer, nos limites acima.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `photo_id` | id | Sim | De `get_support_ticket` |

**Devolve:** na primeira chamada, o resumo e o código de confirmação.

## `delete_support_comment`

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

**Apagar uma mensagem da conversa**, com as fotos dela. As linhas do histórico não se apagam. *Papel: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |
| `comment_id` | id | Sim | De `get_support_ticket` |

## `delete_support_ticket`

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

**Apagar um chamado e as fotos dele**; nada é anonimizado nem guardado. Para encerrar um chamado de verdade use `update_support_ticket` (Resolvido) ou `cancel_support_ticket`. *Papel: administrador.*

| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| `ticket_id` | id | Sim | |

**Devolve:** na primeira chamada, o resumo (número, título, status, residente, fotos) e o código de confirmação.

## Relacionados

- [Suporte](/espacos/suporte)
- [Receitas](/mcp/receitas)
- [Reservas e Agendamento](/mcp/ferramentas-reservas)
- [Dinheiro e confirmação](/mcp/dinheiro-e-confirmacao)
