# info.title
Sinthoma — superfície pública para agentes (Conector MCP)

# info.summary
Descoberta, metadados OAuth e transporte MCP somente leitura.

# info.description
Superfície pública do Sinthoma para agentes de IA. O produto é um prontuário clínico para psicólogos; o acesso de agentes ao dado clínico existe apenas via MCP (Conector), sempre autenticado, somente leitura, com consentimento do paciente e auditoria. Este documento descreve a descoberta e o transporte — e nunca cataloga as APIs internas do aplicativo autenticado. Documentação para humanas: /conector; índice para agentes: /llms.txt.

# tags[].description
Transporte Streamable HTTP do Conector (autenticado).

# tags[].description
Metadados públicos: OAuth e server card MCP.

# paths./api/mcp.post.summary
Endpoint MCP (Streamable HTTP, JSON-RPC 2.0) — autenticado.

# paths./api/mcp.post.description
Transporte Streamable HTTP do servidor MCP do Conector Sinthoma, em modo stateless. Autenticação: token pessoal `sinth_…` (Bearer) ou OAuth 2.0 (fluxo por consentimento; metadados em /.well-known/oauth-authorization-server). A descoberta das ferramentas é feita pelo próprio protocolo: chame `initialize`, depois `tools/list` e `tools/call`. Cada ferramenta exige o escopo indicado em components.schemas.FerramentasMcp e tem quota por token (429 quando esgotada). Toda leitura é auditada; nada escreve no prontuário.

# paths./api/mcp.post.responses.200.description
Resposta JSON-RPC 2.0 (ou stream SSE para respostas longas). O campo `result` segue o protocolo MCP; em `tools/call`, erros de negócio vêm como `isError: true` dentro do resultado, não como status HTTP.

# paths./api/mcp.post.responses.401.description
Sem credencial ou credencial inválida. O header WWW-Authenticate aponta os metadados do recurso (RFC 9728) em /.well-known/oauth-protected-resource. O corpo segue o RFC 6750 (formato OAuth), não o envelope JSON-RPC — o erro acontece antes de a requisição chegar ao servidor MCP.

# paths./api/mcp.post.responses.403.description
Credencial válida sem o escopo exigido pela ferramenta, ou recusa por falta de consentimento do paciente para uso de IA (a recusa é registrada). Mesmo formato OAuth do 401 (RFC 6750).

# paths./api/mcp.post.responses.429.description
Limite de chamadas do token atingido (quota e rate limit por token). Aguarde e tente de novo; não é erro.

# paths./.well-known/oauth-protected-resource.get.summary
Metadados do recurso protegido (RFC 9728).

# paths./.well-known/oauth-protected-resource.get.description
Descreve o recurso /api/mcp: escopos, métodos de bearer suportados e onde está o servidor de autorização. Público, sem autenticação.

# paths./.well-known/oauth-protected-resource.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./.well-known/oauth-protected-resource.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./.well-known/oauth-protected-resource/api/mcp.get.summary
Metadados do recurso protegido com o sufixo do caminho (RFC 9728 §3.1).

# paths./.well-known/oauth-protected-resource/api/mcp.get.description
Mesmo documento do endereço raiz, no formato derivado que insere o caminho do recurso depois de .well-known. Servimos os dois.

# paths./.well-known/oauth-protected-resource/api/mcp.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./.well-known/oauth-protected-resource/api/mcp.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./.well-known/oauth-authorization-server.get.summary
Metadados do servidor de autorização (RFC 8414).

# paths./.well-known/oauth-authorization-server.get.description
Endpoints authorize/token/register, PKCE S256 obrigatório e escopos suportados. Público, sem autenticação.

# paths./.well-known/oauth-authorization-server.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./.well-known/oauth-authorization-server.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./.well-known/mcp.get.summary
Server card MCP por descoberta de domínio.

# paths./.well-known/mcp.get.description
Card público do servidor MCP do Conector: nome, descrição, versão e endereço remoto. Não exige autenticação.

# paths./.well-known/mcp.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./.well-known/mcp.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./mcp/server-card.get.summary
Server card MCP (endereço canônico do card).

# paths./mcp/server-card.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./mcp/server-card.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./openapi.json.get.summary
Este documento (OpenAPI 3.1 da superfície pública).

# paths./openapi.json.get.description
Servido em application/vnd.oai.openapi+json. Público, sem autenticação, estático e determinístico. O documento é auto-descritivo: lista exatamente o que é contrato público — e o que NÃO é (as APIs internas do aplicativo autenticado ficam de fora de propósito).

# paths./openapi.json.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./openapi.json.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./v1/openapi.json.get.description
Mesmo conteudo de /openapi.json, sob o caminho da versao 1. Fixe este endereco se voce quer a garantia de que a forma nao muda sem aviso.

# paths./v1/openapi.json.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./v1/openapi.json.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# paths./v1/mcp/server-card.get.description
Mesmo conteudo de /mcp/server-card, sob o caminho da versao 1. Fixe este endereco para garantir que a forma nao muda sem aviso.

# paths./v1/mcp/server-card.get.responses.405.description
Método não suportado. A rota responde apenas a GET, HEAD e OPTIONS. O corpo segue o RFC 9457 (application/problem+json) e o header Allow lista o que é aceito.

# paths./v1/mcp/server-card.get.responses.405.headers.Allow.description
Métodos que o recurso aceita (sempre "GET, HEAD, OPTIONS" aqui).

# components.securitySchemes.token_pessoal.description
Token pessoal do Conector (`sinth_…`), criado pela própria profissional em Configurações → Conector dentro do Sinthoma. Não há criação via API: a emissão é self-service dentro do produto, por design (auditoria e revogação).

# components.securitySchemes.oauth2.description
OAuth 2.0 com PKCE (S256) e consentimento do profissional. Registro de cliente em /oauth/register (RFC 7591); metadados completos em /.well-known/oauth-authorization-server.

# components.securitySchemes.oauth2.flows.authorizationCode.scopes.pacientes:ler
Ver a lista dos seus pacientes — nome, data da última sessão e total de sessões.

# components.securitySchemes.oauth2.flows.authorizationCode.scopes.sessoes:ler
Ler trechos literais do que você escreveu nos registros de um paciente específico.

# components.securitySchemes.oauth2.flows.authorizationCode.scopes.preparo:ler
Gerar a preparação de sessão de um paciente (usa análise de IA).

# components.securitySchemes.oauth2.flows.authorizationCode.scopes.offline_access
Continuar conectado sem você precisar entrar de novo a cada uso.

# components.schemas.RequisicaoJsonRpc.properties.id.description
Id da requisição (número ou string). Ausente em notificações.

# components.schemas.RequisicaoJsonRpc.properties.params.description
Parâmetros do método. Em tools/call: { name, arguments } com os nomes e esquemas em components.schemas.FerramentasMcp.

# components.schemas.ErroOAuth.description
Corpo do 401/403 na ENTRADA do endpoint MCP, antes de a requisição chegar ao servidor MCP: o formato é o do OAuth 2.0 Bearer (RFC 6750 §3) — e NÃO o envelope JSON-RPC. O formato é contrato: consumidores OAuth dependem dele para interpretar o desafio junto com o header WWW-Authenticate. Não carrega stack trace, caminho de arquivo ou detalhe de infraestrutura — por design.

# components.schemas.ErroOAuth.properties.error.description
Código do erro OAuth; `invalid_token` para credencial ausente ou inválida.

# components.schemas.Problema.description
Corpo `application/problem+json` dos erros das rotas de descoberta — hoje, o 405 de método não suportado. Nunca carrega stack trace, caminho de arquivo ou detalhe de infraestrutura.

# components.schemas.Problema.properties.type.description
URI que identifica o tipo do problema; aponta a documentação em /developers.

# components.schemas.Problema.properties.status.description
O mesmo código de status HTTP da resposta.

# components.schemas.Problema.properties.detail.description
Explicação legível específica desta ocorrência.

# components.schemas.Problema.properties.instance.description
Caminho da requisição que gerou o problema.

# components.schemas.FerramentasMcp.description
As três ferramentas MCP (todas somente leitura). O esquema executável é o inputSchema devolvido por tools/list; aqui está o nível já documentado ao usuário. Conteúdo de resposta é texto para o assistente, com o trecho do prontuário da própria profissional.

# components.schemas.FerramentasMcp.properties.listar_pacientes_recentes.description
Lista os pacientes do profissional ordenados pela sessão mais recente. Devolve apenas nome, data da última sessão e total de sessões — nunca CPF, telefone, e-mail ou dado de cobrança.

# components.schemas.FerramentasMcp.properties.buscar_registros_do_paciente.description
Busca um termo nos registros de UM paciente e devolve TRECHOS LITERAIS do que o profissional escreveu, com a sessão e a data de origem. Não resume e não interpreta. Exige consentimento de uso de IA do paciente.

# components.schemas.FerramentasMcp.properties.buscar_registros_do_paciente.properties.termo.description
Palavra ou expressão a procurar. Busca literal, sem curingas.

# components.schemas.FerramentasMcp.properties.preparar_sessao.description
Monta o briefing de preparação para a próxima sessão de um paciente, usando o mesmo mecanismo que o aplicativo já usa. Exige consentimento de uso de IA.

# components.schemas.MetadadosRecursoProtegido.properties.bearer_methods_supported.description
Sempre ["header"]: token no cabeçalho Authorization.

# components.schemas.MetadadosRecursoProtegido.properties.authorization_servers.description
Aponta para a origem, que publica o metadado RFC 8414.

# components.schemas.MetadadosServidorAutorizacao.properties.registration_endpoint.description
Registro dinâmico de cliente (RFC 7591).