grace_apps
Read-onlyFirst, or whenever another tool says it cannot tell which app this is.
The Grace account this connection opens and its apps. Flags an app Grace has never audited, since nothing can be traced there yet.
Docs · MCP server
Grace runs as a remote MCP server. Paste one address into Claude Code, Cursor or the Claude app, sign in, and your assistant can ask Grace what this project already decided, what a change touches, and whether it is safe to commit.
https://api.agent-grace.com/mcp
Your assistant is good at writing code and knows nothing about what your team decided last quarter, what broke twice in that file, or what a change here breaks over there. Grace is that knowledge: the rules, the context and this project's memory. Your assistant's model does the reading and the writing. Grace never writes code, and from your editor it never runs a model of its own unless you ask it to.
01Plan
Before anything is written, Grace returns a numbered procedure sized to the job, with the roles to run and what this project already knows.
02Think
What the team decided, what the change touches elsewhere, and the questions a senior asks before touching a data model, authentication or an API.
03Write
Your assistant writes the code, on your own model and subscription. Grace stays out of the way.
04Check
Before the commit, your assistant reviews its own change with Grace's brief. Grace keeps only what is new and opens the commit gate.
05Remember
What you say that the code does not becomes a note in the repository, so the next person does not undo it.
The check before the commit is the step that matters. The code is written in your editor, so Grace never sees it go by: the review on the way out is the safety net. You never type a tool name. You talk to your assistant as usual, and the server tells it when to ask.
One address for every editor. Nothing to download, no key to copy: the sign-in opens in your browser.
https://api.agent-grace.com/mcpThe Grace Guardian plugin connects the server and adds the hooks that let Grace speak up on its own: before an edit, before a commit, before your assistant finishes. It brings its own connection, so this is the whole setup. In Claude Code:
/plugin marketplace add Beyond-The-Brackets/grace-guardian
/plugin install grace-guardian@graceThen quit and reopen Claude Code, run /mcp, pick grace and sign in when your browser opens.
No /plugin command where you work, for example in the Code tab of the Claude desktop app? Paste this to your assistant instead. It merges two keys into ~/.claude/settings.json itself, keeping everything already in the file:
Set up Grace on this project. Do all of it yourself, and do not assume I have the `claude` command on my PATH.
1. Open ~/.claude/settings.json (create it as {} if it is not there). Parse it, keep everything already in it, and merge in these two entries, then write it back. Do not replace the file:
{
"extraKnownMarketplaces": {
"grace": {
"source": {
"source": "github",
"repo": "Beyond-The-Brackets/grace-guardian"
}
}
},
"enabledPlugins": {
"grace-guardian@grace": true
}
}
2. Tell me to quit and reopen Claude Code, then run /mcp and sign in to grace with my Grace account.
3. When I come back after that, connect this repository to Grace and tell me what Grace already knows about it.Those two keys, for anyone who would rather edit the file by hand. Merge them; never replace the file with them alone.
{
"extraKnownMarketplaces": {
"grace": {
"source": {
"source": "github",
"repo": "Beyond-The-Brackets/grace-guardian"
}
}
},
"enabledPlugins": {
"grace-guardian@grace": true
}
}If /mcp then lists two grace servers, you had added one by hand before. Remove that one with claude mcp remove grace: the plugin brings its own.
Every tool, without the hooks. Grace answers when your assistant calls it, and says once a day that the guardian is not installed.
claude mcp add --transport http grace https://api.agent-grace.com/mcpThen /mcp, pick grace and sign in. To share it with your team, check it into the repository instead:
{
"mcpServers": {
"grace": {
"type": "http",
"url": "https://api.agent-grace.com/mcp"
}
}
}Or declare it in .cursor/mcp.json for one project, or ~/.cursor/mcp.json for all of them:
{
"mcpServers": {
"grace": {
"url": "https://api.agent-grace.com/mcp"
}
}
}Cursor gets every tool. The guardian that steps in on its own runs in Claude Code only, for now: in Cursor, ask your assistant for a review with Grace before you commit.
Custom connectors need a Claude Pro, Max, Team or Enterprise plan. Grace answers when you ask it to; the guardian lives in Claude Code.
Any client that speaks MCP over Streamable HTTP with OAuth works. Give it the server address and it discovers the rest: an unauthenticated request gets a 401 whose WWW-Authenticate header points at the server's protected-resource metadata (RFC 9728), and the client takes the sign-in from there.
An editor never needs a key. Keys exist for places that cannot open a browser to sign in, such as a CI job or a script, and are created in the Grace app on the Connect Grace page. A key is shown once, opens the whole account, can never create another key, and stops working the moment it is revoked. Keep the file that holds it out of Git. To wire one into your pipeline, write to hello@agent-grace.com.
Grace is not published on npm. Nothing you install with npx is Grace, whatever it is called, so never hand a Grace key to one.
Open your project and ask your assistant:
What does Grace know about this project?
It answers with the app it matched and what Grace holds on it. The Connect Grace page in the Grace app turns green the first time Grace hears from your editor, and from then on shows when it last did.
If Grace cannot tell which app the folder is, it lists your apps and asks rather than guessing. A wrong guess would feed your assistant another project's conventions, and nothing in the answer would give it away. Connecting the folder settles it: see the first step below.
What to say, in your own words, and what happens behind it.
01“Connect this repository to Grace.”
Your assistant reads the Git remote and calls grace_connect_repo. A folder with no remote goes to grace_connect_local instead. Calling either twice is safe.
02“Audit this codebase with Grace.”
Grace runs its analysers and hands your assistant a work order. Your assistant reads the code on your machine, then sends its findings back with grace_audit_submit. Grace checks them, scores the app and writes its memory. Expect a few minutes of reading.
03“What should we fix first?”
grace_health returns the last audit in plain language, then grace_verify_findings checks each point against your current commit before anything is repeated to you.
04“Add a billing page.”
From here on, work as usual. Grace plans the change, recalls what the project decided, and asks for a review before the commit.
Connected as a plain server, Grace is a tool your assistant may call. With the Claude Code plugin, it is consulted at each of these moments whether the assistant thinks of it or not.
git commit and git push while changed files are unreviewed. Asks before anything hard to undo: push --force, rm -rf, prisma migrate reset, curl … | sh.The checks on files, commands and commits are rules, not a model: they cost nothing and answer within a few seconds. Grace speaks only when it knows something about this project that the file does not show. It does not repeat what any competent engineer already knows.
A team setting, changed by an owner or an admin on the Connect Grace page of the Grace app.
Advise
Grace only adds context. It never blocks and never asks.
GuardDefault
Refuses a certain secret and an unreviewed commit. Asks before a fragile area, an env file or a generated file. Advises everywhere else.
Strict
Also refuses edits in fragile areas until the assistant has recalled what the project remembers, and refuses destructive commands outright.
The plugin fails closed. When Grace is unreachable, an edit is refused rather than let through unchecked, because “not checked” must never look like “nothing to report”. At session start a small check says whether Grace is reachable. To carry on knowingly while it is down, start Claude Code with GRACE_GUARD_FAIL_OPEN=1.
/plugin uninstall grace-guardian removes it. To silence it in one repository only, set "disableAllHooks": true in that repository's .claude/settings.local.json.
The server exposes 31 tools. Your assistant picks them from their descriptions, which say when to call each one; you never need to name them. They are listed here so you know what it can ask, and can recognise them in your editor's logs.
Which account, which app, and the one-time setup.
First, or whenever another tool says it cannot tell which app this is.
The Grace account this connection opens and its apps. Flags an app Grace has never audited, since nothing can be traced there yet.
The repository you are in is not in Grace yet.
Connects it from the editor, with no browser and no wizard. Grace checks it can read the repository before creating anything. A second call returns the app it already has.
Inputsreponame
The folder has no Git remote.
Registers the folder from metadata alone: a name, the stack, a sentence on what it does. Grace receives no code and not the path. Audits then run from the editor; auditing from the web app, impact maps and scheduled checks wait for a repository, and say so.
Inputsnamestackbrief
Grace says its guardian hooks are not installed.
The two settings keys that install the Claude Code plugin, and what to tell you. Your assistant asks before touching your settings file.
The guardian says it cannot tell which app this folder is.
Binds the folder to an app, once. From then on the guardian challenges edits there with the right project's memory.
Inputscwdapp
Before a line is written.
Before any change: a feature, a fix, an update, a refactor.
A numbered procedure sized to the job. A contained change gets a lead developer and a guardian; a whole feature gets product, lead developer, the specialists it calls for, then the guardian. Each step carries its rules and this project's context, and your assistant announces each one as it runs it.
Inputsintentpathsobserved
Your assistant takes on one role on its own, or picks a procedure back up halfway.
The rules of one role (pm, lead_dev, security, data, guardian), written to be followed directly or passed to a subagent as its instructions. A version your team trained in the Grace app comes first.
Inputsrole
Before proposing a change, and before cleaning anything up.
What the team decided, the conventions the code follows, the areas that break often and the debt that is there on purpose. Team decisions are kept apart from what Grace derived from the history, because the two do not carry the same weight.
Inputspathsquery
Before writing a change that crosses files.
What else has to change with it, what is worth checking, what usually moves at the same time, and how far to trust the map. An incomplete map is never presented as "nothing else is affected". Needs an audited repository.
Inputsintentionpaths
Before touching a data model, authentication, permissions or an API.
The questions a senior asks in that situation, made concrete by what this project knows: the decisions on those files, the open issues, what depends on them. Answers silent when it knows nothing specific, which is an honest answer and not a pass.
Inputstextpathscode
After writing, before committing.
Before a commit, or when the guardian asks for a review.
A work order for your assistant to review its own change: who depends on what changed, what the project decided about those files, the issues already known there. Your assistant sends a diff and a SHA-256 fingerprint per file, never the whole file; Grace rebuilds it from its own copy and checks the fingerprint, so a three-line edit costs three lines.
Inputsfilessessionintention
Your assistant has worked through a review brief.
Its findings, possibly none. Grace keeps only what the change introduces, writes it in plain language, records the review and opens the commit gate for those files.
InputsreviewIdfindingsreadPaths
You would rather Grace's own model read the change.
The same review, run on Grace's servers. Your assistant passes the full content of the changed files, up to 40. Available on accounts that include Grace's own model; everywhere else, use the brief.
Inputsfilesintention
Grace's full read of the codebase, done by your model.
Grace has never read this code, or its last audit is old.
Grace runs its analysers and computes hotspots from the real Git history, then hands your assistant a work order: the leads to confirm or reject, the files to read first, and the auditor your account trained in Grace. Your assistant maps the whole system, reads each of the 14 dimensions (one subagent per dimension), and merges the results. Preparing the work order takes a couple of minutes.
InputsappauditId
The reading is done.
The findings become a Grace audit: checked against Grace's own signals, security issues re-rated, twelve axes scored, the project's memory written. A lead in a file your assistant opened and did not confirm is dropped; one in a file nobody opened stays.
InputsauditIdfindingsreadPaths
To know whether an audit is running, and how old the last one is.
A running audit is not a result: nothing it has produced so far is a verdict.
Inputsapp
Anytime.
Where the app stood at its last audit, in plain language: what to fix first, who it affects, how urgent. A dated snapshot, not a scan of your current code.
Inputsapp
Right after grace_health or grace_fix_brief, before anything is repeated or fixed.
An audit records a date, not a commit. Your assistant sends HEAD, Grace names the few places that moved, and your assistant opens them and reports still-present or appears-fixed. Closing a finding requires quoting what is there now.
InputsheadShachangedPathsverdicts
Grace brings the plan. Your assistant writes the code.
One issue to fix.
Where to start, the procedure for that kind of problem, what this project's history says must not break, what else has to change, and how to know it worked.
InputsfindingIdissuepaths
You ask to fix everything Grace found.
Every open finding, grouped by cause (the same problem in twenty files is one fix), ordered by severity, and split into waves in which no two groups touch the same file, so parallel work never collides. Each group carries its procedure, its constraints and what its QA must prove.
Inputsapp
Your assistant has worked through a fix brief.
One entry per group, skipped ones included. Grace closes a finding only when its group is reported fixed, its QA ran and came back green, and the file it points at is among the files changed. Anything else stays open, with the reason.
InputsfixIdgroupsbranchpullRequestUrl
Before a deploy, and after a decision.
Before any deploy, or when someone asks "can we ship?".
A plain-language verdict from the last audit and the project's memory: secrets, exposure, dependencies, reversible migrations, data, configuration, the areas this project already broke in. A never-audited app is unknown, not fine. Grace only says ready when its last audit read the commit you pass.
InputsheadSha
You tell your assistant something the code does not say.
Records a decision, a convention, a fragile area, deliberate debt, an incident or an approach tried and rejected, and returns a markdown note for your assistant to write under .grace/memory/.
Inputstypesummarywhypaths
Called by the Claude Code plugin at each moment of a session. Nobody calls them by hand; they show up in `/mcp` all the same.
What your team knows and the code does not say, kept in the repository where everyone can read it.
When you tell your assistant something worth keeping, grace_remember records it in Grace and returns a markdown note for your assistant to write under .grace/memory/. Plain files with frontmatter and [[wikilinks]]: readable in your editor, in code review on GitHub, and by anyone who clones the repository. Commit them. That is how the memory becomes the team's and not just yours.
---
type: accepted_debt
summary: "The invoice export is synchronous on purpose"
source: human
createdAt: 2026-09-01T10:00:00.000Z
refs:
- "src/billing/export.ts"
---
# The invoice export is synchronous on purpose
We tried a queue. The ops burden was not worth it for 40 invoices a month.Notes are append-only. One that turns out to be wrong is closed, not rewritten: the reasoning behind a past decision is exactly what stops someone making the same mistake again.
.env files, lockfiles, binaries, node_modules and build output even if they are sent, and the review names what it left out.grace_connect_local registers a name, a stack and a sentence. That app's audits run on your machine: your assistant reads, Grace scores.The guarantees that hold beyond the editor, from pull requests you approve to how each account is isolated, are on Trust & Control.
grace_verify_findings checks each point against HEAD before it is repeated to you.grace_review takes up to 40 files. Beyond that it is an audit.grace_connect_repo, a folder with no remote to grace_connect_local. If the app already exists and only the guardian is unsure, grace_guard_bind settles it once./mcp, pick grace and reconnect. The Connect Grace page in the app shows when Grace last heard from each member of your team./mcp. To carry on knowingly while Grace is down, start Claude Code with GRACE_GUARD_FAIL_OPEN=1./mcp lists two grace servers.claude mcp remove grace.Still stuck? Write to hello@agent-grace.com with what your editor printed.
Book a call and connect your app beforehand. We'll open the call on your own report.
15 minutes with the team behind Grace