Automated architecture sanity check: 19 rule-cited checks, verdict report. Paid runs US$99.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List the architecture checks the Sanity Check runs (families, plain-language descriptions), what is NOT assessed, pricing, and how run credits work. Free.
This tool takes no arguments.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http sanity-check https://sanity.aimlds.org/mcp
List the architecture checks the Sanity Check runs (families, plain-language descriptions), what is NOT assessed, pricing, and how run credits work. Free.
No arguments.
{
"type": "object",
"properties": {}
}Check payment state without spending anything: pass 'credit' (a web run-credit id from Stripe checkout) to see its status, or 'api_key' to see its run-credit balance. Free.
| Argument | Type | Description |
|---|---|---|
| credit | string | A run-credit id (Stripe checkout session id). |
| api_key | string | An API key created at POST /api/v1/keys. |
{
"type": "object",
"properties": {
"credit": {
"type": "string",
"description": "A run-credit id (Stripe checkout session id)."
},
"api_key": {
"type": "string",
"description": "An API key created at POST /api/v1/keys."
}
}
}Run the full Technical Architecture Sanity Check on YOUR intake and return the verdict summary + report links (PDF/DOCX/HTML/Markdown/JSON). Costs ONE run credit: pass 'credit' (a web run-credit id) or 'api_key' (a key with balance). The intake is the SanityCheckIntakeV1 object (sections a-g; schema at https://sanity.aimlds.org/api/v1/intake-schema). Never include credentials in an intake — credential-shaped values are refused.
| Argument | Type | Description |
|---|---|---|
| credit | string | |
| intake* | object | SanityCheckIntakeV1 — sections a (context), b (architecture), c (spend bands), d (data flows), e (AI), f (security posture), g (pain). |
| api_key | string |
{
"type": "object",
"required": [
"intake"
],
"properties": {
"credit": {
"type": "string"
},
"intake": {
"type": "object",
"description": "SanityCheckIntakeV1 — sections a (context), b (architecture), c (spend bands), d (data flows), e (AI), f (security posture), g (pain)."
},
"api_key": {
"type": "string"
}
}
}Run the published sample intake (a fictional fintech with deliberately weak answers) live through the same checker and return its verdict + top findings. Free preview — this is the sample, not your architecture.
No arguments.
{
"type": "object",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.