> ## Documentation Index
> Fetch the complete documentation index at: https://docs.westhetics.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Ferramentas

> As 41 ferramentas que o MCP da Westhetics oferece, o que cada uma faz, quem pode usar e o que pedir para o assistente usá-la.

O assistente escolhe a ferramenta sozinho a partir do seu pedido. Esta página é para quem quer saber exatamente o que ele pode fazer, ou para quem desenvolve um agente sobre o MCP.

* **Pessoa (OAuth)**: os perfis que veem a ferramenta. A permissão de verdade é a do sistema: a recepção não lê respostas de anamnese, mesmo que peça.
* **App (chave)**: o escopo que libera a ferramenta quando a conexão é feita com a chave de um app. "Só pessoa" não aparece para app.
* **Tipo**: *lê* não muda nada; *escreve* muda a clínica; *destrutiva* cancela ou remove (o cliente pede confirmação); *manda à paciente* envia WhatsApp ou e-mail de verdade, e o cliente pede a sua confirmação antes; *age fora da Westhetics* chama o sistema do integrador (o teste do webhook).

As descrições abaixo são as que o assistente lê, palavra por palavra.

## Conexão e o dia

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `whoami` Quem sou eu na Westhetics | Mostra quem está conectado (a pessoa e o perfil, ou o app e as permissões) e em qual clínica esta conexão opera. Use para confirmar a conexão antes de outras ferramentas. | todos os perfis | qualquer app | lê |
| `list_pending_items` Pendências da clínica | O que está pendente agora, do mais urgente ao menos: procedimento feito sem assinatura, link vencido, anamnese que pede atenção, documento esperando a clínica assinar. Use para "o que eu preciso resolver hoje?". | todos os perfis | só pessoa | lê |
| `get_today` Agenda do dia | Os atendimentos do dia, por horário, com o que falta em cada um. Sem date, hoje no fuso da clínica. | todos os perfis | só pessoa | lê |

Peça assim: "O que está pendente hoje?" · "Como está a agenda de amanhã?" · "Em que clínica você está conectado?".

## Pacientes

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `search_patients` Buscar pacientes | Procura fichas de paciente da clínica pelo nome, CPF, e-mail, RG ou WhatsApp. Use sempre antes de cadastrar, para não duplicar. Exemplo: search="amanda ribeiro" ou search="11987654321". Sem busca, devolve as fichas em ordem de atualização (use updatedSince para ver o que mudou). | todos os perfis | `patients:read` | lê |
| `get_patient` Ler a ficha da paciente | O cadastro inteiro de uma paciente pelo id (o id vem de search\_patients). | todos os perfis | `patients:read` | lê |
| `create_patient` Cadastrar paciente | Cria a ficha da paciente. Nome, WhatsApp e e-mail são obrigatórios, e quem tem menos de 18 anos vem com o responsável legal; o CPF é conferido. Procure antes com search\_patients: CPF repetido volta como recusa com a ficha que já existe. Exemplo: name="Amanda Ribeiro Costa", whatsapp="11987654321", email="[amanda@email.com](mailto:amanda@email.com)". | todos os perfis | `patients:write` | escreve |
| `update_patient` Editar a ficha da paciente | Muda só os campos enviados da ficha (o resto fica como está). Exemplo: patientId e email="[novo@email.com](mailto:novo@email.com)". | todos os perfis | `patients:write` | escreve |

Peça assim: "Procure a Amanda Ribeiro" · "Cadastre a Júlia Prado, 21 99876-5432" · "Atualize o e-mail da Amanda para [amanda@novo.com](mailto:amanda@novo.com)".

## Anamneses

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `list_anamneses` Listar anamneses | As anamneses da clínica, sem as respostas: emitida, em preenchimento, respondida, vencida ou cancelada. Use patientId para as de uma paciente. Exemplo: patientId e status="completed". | todos os perfis | `anamneses:read` | lê |
| `get_anamnesis` Ler a anamnese | O status, a validade do link, o protocolo e o hash de uma anamnese, sem as respostas. | todos os perfis | `anamneses:read` | lê |
| `send_anamnesis` Enviar anamnese | Envia a anamnese para a paciente responder no celular, válida por 7 dias. Manda mensagem de verdade: confirme a paciente e o canal antes. Com channel="link", só gera o endereço (devolvido em link.url). Uma anamnese aberta por paciente: se já houver, use resend\_anamnesis. | todos os perfis | `anamneses:write` | manda à paciente |
| `resend_anamnesis` Reenviar anamnese | Gera um link novo (o anterior deixa de valer) e manda de novo. O rascunho da paciente continua. Manda mensagem de verdade. | todos os perfis | `anamneses:write` | manda à paciente |
| `cancel_anamnesis` Cancelar anamnese | Cancela a anamnese que a paciente ainda não respondeu. O motivo é opcional: se a pessoa disser, mande; não invente um. | todos os perfis | `anamneses:write` | destrutiva |
| `get_anamnesis_answers` Ler as respostas da anamnese | As respostas da anamnese respondida, por bloco, com o que pede atenção antes do procedimento. É dado de saúde: só a gestora e o prestador responsável leem; mostre só o necessário a quem pediu. | prestador, gestora, Westhetics | `anamneses:answers` | lê |

Peça assim: "A Carla já respondeu a anamnese?" · "Mande a anamnese para a Amanda por e-mail" · "Me dê o link da anamnese da Júlia".

## Catálogo

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `list_procedures` Listar procedimentos | Os procedimentos ativos da clínica, com valor (amountCents, em centavos) e condição de pagamento. Use para achar o id antes de create\_appointment ou send\_anamnesis. Exemplo: search="labial". | todos os perfis | `catalog:read` | lê |
| `list_practitioners` Listar prestadores | Os prestadores ativos da clínica, com conselho e registro. O contrato pede o id do responsável. | todos os perfis | `catalog:read` | lê |
| `list_templates` Listar modelos de documento | Os modelos que a clínica usa: a anamnese e o contrato (inclusos) e os termos de consentimento, com os procedimentos ligados a cada termo. flow="standalone" para os documentos avulsos. | todos os perfis | `catalog:read` | lê |

Peça assim: "Quanto custa o preenchimento labial?" · "Quem são as prestadoras da clínica?".

## Contratos e assinaturas

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `list_appointments` Listar atendimentos | Os atendimentos com documentos gerados, com o status da assinatura de cada um (signature.status: awaiting\_patient, signed, expired…). Use patientId para os de uma paciente. | todos os perfis | `documents:read` | lê |
| `get_appointment` Ler o atendimento | Os procedimentos, o valor, os documentos e o status da assinatura de um atendimento. | todos os perfis | `documents:read` | lê |
| `create_appointment` Gerar contrato e termos | Gera o contrato, a anamnese respondida e os termos de consentimento de um procedimento, numa chamada. Peça antes os ids da paciente (search\_patients), dos procedimentos (list\_procedures) e do prestador (list\_practitioners), e se a paciente autoriza o uso de imagem. Sem templateIds, entram os termos ligados aos procedimentos. Faltou dado, a recusa lista cada pendência. Não envia nada: para assinatura, use send\_for\_signature. | todos os perfis | `documents:write` | escreve |
| `send_for_signature` Enviar para assinatura | Envia os documentos gerados do atendimento para a paciente assinar (a responsável, se menor). Manda mensagem de verdade: confirme a paciente e o canal antes. Sai em 10 segundos (sendsAt). | todos os perfis | `documents:write` | manda à paciente |
| `resend_signature` Reenviar o link de assinatura | Reenvia o link de assinatura; sem channels, pelos canais do envio. Manda mensagem de verdade. | todos os perfis | `documents:write` | manda à paciente |
| `cancel_signature` Cancelar o envio para assinatura | Cancela o envio para assinatura; o link deixa de valer e o cancelamento vale em 10 segundos (effectiveAt). Depois que a paciente assinou, só a gestora cancela, e a paciente recebe o aviso por e-mail: confirme com a pessoa antes. Pede o motivo (10 a 500 caracteres): pergunte à pessoa, não invente. | todos os perfis | `documents:write` | destrutiva · pode avisar a paciente |
| `get_document_file` Baixar o PDF do documento | Um endereço de 5 minutos para o PDF protegido do documento; assinado, o PDF assinado. | todos os perfis | `documents:read` | lê |

Peça assim: "Prepare o contrato da Amanda para preenchimento labial amanhã às 14h30" · "Mande para ela assinar pelo WhatsApp" · "Quem ainda não assinou?".

## Eventos

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `list_events` O que aconteceu na clínica | Os eventos dos últimos 30 dias: paciente cadastrada, anamnese respondida, contrato gerado, documento assinado, link vencido… Tipos: patient.created, patient.updated, patient.archived, patient.restored, patient.merged, anamnesis.sent, anamnesis.resent, anamnesis.completed, anamnesis.canceled, appointment.documents\_generated, appointment.canceled, signature\_request.sent, signature\_request.resent, signature\_request.viewed, signature\_request.signed, signature\_request.completed, signature\_request.declined, signature\_request.expired, signature\_request.canceled, signature\_request.delivery\_failed. Vêm dos mais recentes para os mais antigos (order="desc", o padrão aqui); use order="asc" para ler em ordem de acontecimento, e patientId para os de uma paciente. Para o detalhe, leia o recurso pelo id em data. | todos os perfis | qualquer app | lê |

Peça assim: "O que aconteceu hoje na clínica?" · "Quais contratos foram assinados esta semana?".

## Modelos de contrato e termo (só a equipe da Westhetics)

Quem é da equipe da Westhetics (perfil root) edita e publica os modelos de contrato, termo e anamnese pelo assistente, no padrão de legal design da Westhetics. Só pessoa, pelo OAuth: a chave de app não vê estas ferramentas, e a gestora da clínica também não. Toda edição e publicação entra no histórico do modelo, com quem e quando.

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `get_legal_design_guide` Ler o padrão dos documentos | O padrão dos contratos, termos e anamneses da Westhetics, para ler antes de escrever ou mudar um modelo: overview (o padrão em uma página, com os tipos, as diretivas e o ciclo do modelo), dialect (legal design e o dialeto Markdown, o documento inteiro), writing (as regras de escrita), variables (o catálogo de variáveis, com exemplo e obrigatoriedade) e publishing (o que publicar exige). Sem section, overview. | Westhetics | só pessoa | lê |
| `search_templates` Buscar modelos de contrato e termo | Os modelos da Westhetics (o catálogo global, não o de uma clínica), com a versão vigente, se há alteração por publicar e quantas clínicas usam cada um. filter: published (padrão), unpublished, review (sem revisão jurídica), archived ou all. | Westhetics | só pessoa | lê |
| `get_template` Ler o modelo | O modelo inteiro: tipo, categoria, público, a versão vigente, o rascunho (draft.markdown e draft.revision, a trava para salvar), os avisos do lint, os procedimentos ligados e quantas clínicas usam. | Westhetics | só pessoa | lê |
| `create_template` Criar modelo | Cria um modelo novo, sem versão publicada, com o rascunho inicial. Nada vale na clínica até publicar. | Westhetics | só pessoa | escreve |
| `update_template_draft` Salvar o rascunho do modelo | Salva o rascunho inteiro do modelo (o Markdown completo) com a revision lida em get\_template; se outra pessoa salvou antes, a recusa pede para ler de novo. Não publica nada. | Westhetics | só pessoa | escreve |
| `lint_template` Conferir o que a publicação exige | O que a publicação exigiria do texto, sem gravar nada: os erros que bloqueiam, os avisos, as variáveis usadas e os números do documento. | Westhetics | só pessoa | lê |
| `preview_template` Conferir o documento como a paciente lê | Uma exportação simples do documento para conferência: o Markdown com as variáveis resolvidas pelos exemplos do catálogo, como a paciente leria. variables sobrescreve um exemplo. Nada é gravado. | Westhetics | só pessoa | lê |
| `compare_template_versions` Comparar versões do modelo | O que mudou entre duas versões, ou entre a versão vigente e o rascunho: o resumo por cláusula e, com includeText, o texto linha a linha. | Westhetics | só pessoa | lê |
| `publish_template_version` Publicar versão do modelo | Publica o rascunho como a próxima versão, imutável, que passa a valer na hora em toda clínica com o modelo ativo. Exige quem revisou juridicamente e quando e, a partir da versão 2, a nota do que mudou e o bloco de cláusula atualizada. O assistente mostra a comparação e a conferência e espera o seu sim. | Westhetics | só pessoa | escreve |
| `list_template_versions` Listar versões do modelo | As versões publicadas, da mais nova para a mais antiga: número, rótulo, hash, quem publicou, a nota e a revisão jurídica. | Westhetics | só pessoa | lê |
| `get_template_version` Ler uma versão do modelo | O Markdown publicado de uma versão (number) ou da vigente. | Westhetics | só pessoa | lê |
| `get_template_history` Ler o histórico do modelo | O log de alterações do modelo: criado, rascunho alterado, publicado (com número, rótulo e nota), rascunho descartado, procedimento ligado ou desligado, arquivado, restaurado, com quem e quando. | Westhetics | só pessoa | lê |
| `discard_template_draft` Descartar o rascunho do modelo | Apaga o rascunho e volta à versão vigente. O assistente confirma antes: o texto do rascunho se perde. | Westhetics | só pessoa | destrutiva |

Peça assim: "Leia o padrão e me diga o que o termo de toxina precisa para ser publicado" · "Mude o prazo de retoque do TCLE de toxina para 15 dias, me mostre o que mudou e a conferência" · "Publique a versão: revisou a Helena Prado em 03/11".

## Webhooks (só com a chave do app)

| Ferramenta | O que faz | Pessoa (OAuth) | App (chave) | Tipo |
| - | - | - | - | - |
| `list_webhooks` Listar os webhooks do app | Os endereços que recebem os eventos deste app, com as entregas pendentes e com falha. | — | `webhooks:write` | lê |
| `create_webhook` Criar webhook | Cadastra um endereço https público que recebe os eventos do app (todos, ou os de events). Devolve o segredo whsec\_… que assina as entregas, no padrão Standard Webhooks. Até 5 por app. | — | `webhooks:write` | escreve |
| `delete_webhook` Remover webhook | Para de entregar neste endereço; as entregas na fila ficam como falha. | — | `webhooks:write` | destrutiva |
| `test_webhook` Testar webhook | Manda o evento webhook.test para o endereço no próximo minuto. Responda com 2xx para dar certo. | — | `webhooks:write` | age fora da Westhetics |

Peça assim: "Cadastre o webhook [https://hooks.exemplo.com/w](https://hooks.exemplo.com/w) para anamnesis.completed" · "Teste o webhook".

## Para quem desenvolve

* **Transporte**: Streamable HTTP, sem sessão, em `https://mcp.westhetics.io`.
* **Descoberta**: `tools/list` devolve só as ferramentas que a conexão pode usar (pelo perfil ou pelos escopos). `prompts/list`, os [prompts prontos](https://docs.westhetics.io/mcp/prompts.md).
* **Anotações**: cada ferramenta traz `readOnlyHint`, `destructiveHint`, `idempotentHint` e `openWorldHint`; as que agem fora da Westhetics (mandam mensagem à paciente, inclusive o cancelamento que avisa quem já assinou, ou chamam o webhook do integrador) vêm com `openWorldHint: true`.
* **Erros de regra** voltam como resultado com `isError: true` e a mesma mensagem que o painel mostraria, com cada campo do `422` numa linha, para o modelo corrigir e tentar de novo.
* **Mesmas regras da API**: cada ferramenta chama o mesmo núcleo da API pública v1. O que vale na [referência da API](https://docs.westhetics.io/api-reference/introducao.md) vale aqui.
* **Limite**: com a chave do app, as chamadas do MCP somam com as da API (100 por minuto).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.