Wire
Connect any agent you already use.
Harbor is an MCP server, so any client that speaks MCP can search and cite your team graph. Installing the CLI buys three things a pull-only connection cannot have, and this page is honest about which is which.
Two ways in, and they are not equivalent
Harbor speaks MCP, so any client that does can reach the graph. What differs is whether Harbor is also running inside your session, and that difference decides whether anything is measurable.
| Installed | Pull only | |
|---|---|---|
| How | npx harborloop init | claude mcp add |
| Search and cite the graph | Yes | Yes |
| Knowledge pushed in at the start of a session | Yes | No |
| Captures what the session decided, for review | Yes | No |
| A session key, so any of it can be counted | Yes | No |
| What harbor doctor can tell you | Recall, Fit, Attribution, Contributed | Nothing |
Pull only is a real option and it takes one command. It is the right answer for a client Harbor cannot install into, and for anybody evaluating the graph before wiring a machine up. It is the wrong answer if you want to know whether Harbor is working, because nothing in it produces the evidence.
Pull only, in one command
claude mcp add --transport http harbor https://mcp.gethrbr.com/mcpThe server answers 401 until it has a credential. On a hosted client that supports it, adding the same URL as a connector runs an OAuth exchange in your browser and mints the credential for you. There is nothing to paste and nothing to install.
The three tools
One to read, one to write, one to take a write back. Every token gets all three, whether harbor init minted it or a hosted client’s OAuth exchange did. There is no separate deep search: when a recall scoped to this repo’s Space finds little, harbor_get_knowledge widens to your other Spaces by itself and numbers those results too.
| Tool | What it does |
|---|---|
harbor_get_knowledge | Search the team graph. An agent calls it before a task and again whenever it meets a name, a file or a decision it does not know. What comes back is numbered, so an answer can cite it. |
harbor_record_learning | Write one finding back: a convention, a pattern, a gotcha, a preference or a fact about the team. It returns a short id to take the finding back by. |
harbor_revoke_learning | Take back something recorded in error, by that id or, once the id has scrolled away, by a phrase from the text. A phrase that matches more than one is refused, with the candidates listed. |
Per-agent notes
harbor init configures every agent it finds on the machine and skips the ones it does not. Each gets an MCP entry and a set of hooks; the hooks are what make a session measurable.
| Agent | MCP config | Hook events |
|---|---|---|
| Claude Code | ~/.claude.json | 6 |
| Codex | ~/.codex/config.toml | 5 |
| Cursor | ~/.cursor/mcp.json | 6 |
Cursor recalls at session start, not per turn
This is a property of Cursor rather than a fault in the install, and it is worth knowing before you compare two machines. Cursor’s prompt event carries no field to inject context into, so knowledge lands once when the session starts instead of again each time the work shifts to a new area. A compaction used to take it away for good; the repair now rides the post-tool event, so it comes back.
harbor doctor says this on Cursor’s healthy line rather than as a permanent warning, because a warning on a correctly configured machine is how people learn to stop reading the output. This page does the same.
Codex and Cursor speak different tool names
Cursor’s tool vocabulary is not Claude’s: Bash is Shell, Edit is Write. A hook registered with the wrong matcher is not an error, it is simply a hook that never fires, which is why init translates rather than copies and why doctor checks the set of events rather than trusting the file.
What a session looks like
- Recall. At the start, and on Claude Code and Codex again when the work moves to a different area, the relevant conventions and past decisions are put in front of the model without anyone typing a command.
- Work. Nothing to do differently. The agent can also call the tools directly when it wants more than it was given.
- Capture. When something worth keeping is settled, the agent records it. One finding per record, with the reason it was decided, because a rule without its why gets reverted.
- Review. Every capture lands staged, and one workspace setting decides which captures wait for a person before they reach the team. Anything that contradicts a live rule always waits.
Everything on this page needs a terminal. The next surface needs none: one command in Slack, for the people on your team who will never run an agent.