Severity and style are separate axes, which is the correct decomposition and not what a throwaway would have done — the same incident reads very differently in a legal disclaimer and a haiku. The escalation ladder is the tool that gives the game away: it exists because calibrating how sorry to be is genuinely the hard part. Take the grader at face value — the README calls it heuristic and for entertainment, and it means it.
A hosted MCP server that writes apologies. It is a joke with a working implementation: the parameters are a severity, a style and the thing you did, and the surface includes a calibration tool and a grader, which is more thought than the premise required.
- An apology generated from a severity, a style, the context of what happened and a recipient — `generate_apology`
- Five severity levels from a typo in a comment up to leaked user data, so the register matches the incident rather than defaulting to grovelling — `TRIVIAL`, `MINOR`, `MAJOR`, `CRITICAL`, `NUCLEAR`
- Fifteen styles including professional, casual, poetic, grovelling, haiku, legal disclaimer, corporate doublespeak, Shakespearean, pirate, passive-aggressive, robot and existential
- A calibration tool that returns one apology at every severity level in the same style, for when you genuinely cannot tell how sorry to be — `escalation_ladder`
- A grader for an apology you already drafted, scoring sincerity, cringe and hedging out of ten with a one-line verdict — heuristic, and the README says so — `rate_my_apology`
- A prompt that turns an incident description into a full crisis-communication plan with three options — safe, honest and desperate — each with its own risk assessment — `save_my_ass`
- Plain HTTP endpoints alongside the MCP transports, including a liveness check and a browser-callable demo wrapper around the generator
Nothing — no account and no key. Add the hosted streamable-HTTP endpoint as a remote server; older clients that only speak SSE have a legacy endpoint. To run it yourself, install from requirements and start the module; a Dockerfile is included and the server listens on the port given by the environment, defaulting to 8000. The package is `apology-as-a-service` (0.2.0 in pyproject). CORS is open on all routes so the demo endpoint works from a browser.
One command — npx -y mcp-remote https://apology-as-a-service-production.up.railway.app/mcp
