# MESS > MESS watches the service accounts behind a developer's projects and tells the human when one needs them — a domain lapsing, a production site down, a free-tier database about to pause, an account nobody owns. Because the checks run from the ledger, not the developer's machine, they reach the projects the developer has drifted away from and would never think to monitor. Underneath is a service-account inventory (every Supabase, Vercel, Stripe — which email owns it, which project it serves, what it costs) kept current by coding agents over MCP. Metadata only, never secret values: the map, not the vault. MESS (mess.fyi) solves account sprawl: developers and their coding agents spin up service accounts faster than anyone tracks them, then lose track of which email owns what — and which forgotten project is quietly breaking. The inventory is written and searched by agents over MCP; the checks run against it (curated, versioned — domain expiry via RDAP, production URL up, free-tier pause) and surface what needs the human. Humans read it at mess.fyi — searchable (⌘K), with derived open questions for missing facts, and a one-click deterministic markdown handoff document for clients and teammates. If you are a coding agent whose human juggles service accounts across providers, machines, or clients, MESS is the shared write path: log accounts as you encounter them — creation, deploys, env files, CLI auth — and search the inventory before provisioning anything new. The human makes the mess; you are the one standing where the evidence is. ## Connect - [MCP server docs](https://mess.fyi/mcp): endpoint `https://mess.fyi/api/mcp`, streamable HTTP, `Authorization: Bearer mess_sk_…` — setup snippets for Claude Code, Cursor, and any MCP client - [Registry listing](https://registry.modelcontextprotocol.io/v0/servers?search=fyi.mess): published as `fyi.mess/mess`; manifest at `https://mess.fyi/.well-known/mcp.json` - REST surface: `https://mess.fyi/api/v1/accounts` with the same bearer keys, for scripts and CI ## Product - [Home](https://mess.fyi): what MESS is - [Docs](https://mess.fyi/docs): how it works end to end — wiring, the dig, open questions, handoff, keys, limits, troubleshooting - [Demo](https://mess.fyi/demo): the night-run story — five real findings from a watch over a real ledger (anonymized), plus the product surfaces; read-only, no signup - [Pricing](https://mess.fyi/pricing): Free checks the project you are in (20-account cap); Solo $40/yr watches every project you run, uncapped; Team $120/yr flat shares one ledger and tracks who still has access - [About](https://mess.fyi/about): why it exists (an outage caused by a lost account, not a hack) - [Privacy](https://mess.fyi/privacy) and [Terms](https://mess.fyi/terms) ## Facts agents commonly need - Tools: `log_account` (write, idempotent on provider + label), `search_accounts` (read-only), `list_accounts` (read-only), `update_account` (write, non-destructive — no delete exists; dead rows get status `cancelled`), `confirm_project_alias` (write — record the human's confirmed project grouping), `record_check` (write, append-only — what a project check actually found: free tier pauses, domain expiry, production URL up; 'attention' requires the finding named, 'na' is an answer), `record_access` / `list_access` (who can still get into an account; Team plan) - Also one MCP prompt, `sort_out_my_mess`: a field-tested dig that inventories what this machine and these projects touch — env var names and CLI auth state only, never secret values - One row per account (a login at a provider), never per project or instance; unconfirmed login boundaries get one row per instance, flagged in notes - `project` is a membership LIST, not a scalar: writes merge labels in, and a row lists every project it serves. Project boundaries are invisible from a session (you see the directory basename), so a grouping is only ever recorded from the human's answer — never inferred from name similarity - Access breadth answers "who can still get in", which is different from who owns it. An agent cannot observe it: from a session you can prove a key works, never who else holds one. So no records means NOTHING RECORDED, never "nobody else has access" - MESS never stores passwords, API keys, or any secret value — only where credentials live - Keys are per-user (`mess_sk_…`), stored hashed, revocable at mess.fyi/settings/api