APOLOGY-AS-A-SERVICE

Um servidor MCP ao vivo que fornece comunicação de crise sensível ao contexto para agentes de IA.

Documentação

Apology-as-a-Service (AaaS)

"Porque, às vezes, 'foi mal' simplesmente não é suficiente."

🟢 Endpoints ativos:

  • Streamable HTTP (MCP atual): https://apology-as-a-service-production.up.railway.app/mcp
  • SSE (legado, mantido para clientes antigos): https://apology-as-a-service-production.up.railway.app/sse
  • Demonstração HTTP rápida: https://apology-as-a-service-production.up.railway.app/demo

Um servidor Model Context Protocol (MCP) que fornece pedidos de desculpas altamente sofisticados e sensíveis ao contexto para agentes de IA. Seja porque você quebrou o build, esqueceu um aniversário ou acidentalmente apagou o banco de dados de produção, o AaaS tem a solução.

Recursos

Ferramentas

generate_apology(severity, style, context, recipient="Client")

O original. Gera o pedido de desculpas perfeito para qualquer situação.

Níveis de Gravidade

  • TRIVIAL — pequenos inconvenientes ("erro de digitação em comentário")
  • MINOR — erros perceptíveis ("quebrou o build de desenvolvimento")
  • MAJOR — problemas significativos ("perdeu um prazo")
  • CRITICAL — ações que limitam a carreira ("derrubou a tabela de produção")
  • NUCLEAR — ameaças existenciais ("vazou todos os dados de usuários")

Estilos

  • PROFESSIONAL — linguagem corporativa para a empresa moderna
  • CASUAL — energia de "foi mal, mano" para threads do Slack
  • POETIC — arrependimento shakespeariano para a alma dramática
  • GROVELING — implorando por perdão quando você realmente estragou tudo
  • HAIKU — 5-7-5 sílabas de puro remorso
  • LEGAL_DISCLAIMER — "sem admitir culpa ou responsabilidade..."
  • CORPORATE_DOUBLESPEAK — "erros foram cometidos, aprendizados foram capturados"
  • SHAKESPEAREAN — "Até tu, banco de produção? Então cai, minha carreira."
  • PIRATE — "Argh, o banco de dados está no fundo do baú de Davy Jones."
  • PASSIVE_AGGRESSIVE — "Desculpe pela interrupção. Eu sinalizei esse risco há três semanas, mas claro, vamos todos agir como se estivéssemos surpresos."
  • GEN_Z — "o banco de produção está destruído e a culpa é minha. focado, não me percebam."
  • VIKING — "Ragnarök chegou cedo para o banco de dados, e fui eu quem soltou o lobo."
  • ROBOT — "ERRO: backups não encontrados. ERRO: dignidade não encontrada. Pedido de desculpas: encontrado e oferecido na amplitude máxima."
  • EXISTENTIAL — "Nietzsche me avisou sobre o abismo. Ele nunca mencionou que tinha uma instrução DROP TABLE."
  • SOAP_OPERA — "Não foi um hacker. Não foi azar. Fui eu, o de confiança, o tempo todo."

escalation_ladder(context, style="PROFESSIONAL", recipient="Client")

Retorna um pedido de desculpas em todos os níveis de gravidade no estilo fornecido. Útil quando você não tem certeza de quão seriamente deve se desculpar — calibre lendo-os lado a lado.

rate_my_apology(text)

Avalia qualquer pedido de desculpas em três eixos: sinceridade, vergonha alheia e evasão (cada um de 0 a 10), além de um veredito de uma linha. Apenas heurístico — para entretenimento.

Prompts

save_my_ass(incident_description)

Gera um plano completo de comunicação de crise com três opções (Seguro, Honesto, Desesperado), incluindo avaliação de risco para cada uma.

Endpoints HTTP

CaminhoFinalidade
/Página inicial com lista de endpoints
/healthVerificação de atividade em JSON ({"status": "ok"})
/demoWrapper HTTP simples em torno de generate_apology (parâmetros de consulta)
/mcpTransporte MCP Streamable HTTP (especificação atual)
/sseTransporte MCP SSE (legado, mantido para clientes antigos)

CORS está aberto em todas as rotas para que o endpoint /demo possa ser chamado a partir de um navegador.

Uso

Desenvolvimento local

pip install -r requirements.txt
python -m src.server

Configuração do cliente

Claude Desktop / Claude Code (MCP remoto via Streamable HTTP):

{
  "mcpServers": {
    "apology-service": {
      "url": "https://apology-as-a-service-production.up.railway.app/mcp"
    }
  }
}

Clientes antigos que só falam SSE podem apontar para /sse.

Implantação (Railway / Docker)

Um Dockerfile e um .dockerignore estão incluídos. Envie para um repositório conectado ao Railway; o servidor escuta em $PORT (padrão 8000).

Exemplos de prompts

  • "Acabei de apagar acidentalmente o banco de dados de produção. Gere um pedido de desculpas em haiku." → generate_apology(severity=CRITICAL, style=HAIKU, context="the production database")

  • "Me dê a escada completa de escalada para ter perdido a demonstração, em pirata." → escalation_ladder(context="missing the demo", style=PIRATE)

  • "Avalie este pedido de desculpas que rascunhei: 'Desculpa, acho. Coisas acontecem.'" → rate_my_apology(text="Sorry I guess. Things happen.")

  • "Esqueci meu aniversário de casamento. Me ajude a salvar meu casamento!" → save_my_ass(incident_description="forgot anniversary")

Exemplo de saída

Entrada: severity="CRITICAL", style="SHAKESPEAREAN", context="the main database"

Saída:

Caro Cliente,

Pelos céus, o banco de dados principal está destruído! Que ato trágico minhas próprias mãos cometeram!

Atenciosamente, [Seu Nome]


Criado por Gustav Christensen — Dezembro de 2025