Skip to content

Packs and MCP tools

The pack

A pack is a short Markdown block of the team decisions that apply to what you are working on. Your agent gets it at the start of each session:

  • Claude Code and Codex: from the session-start hook, with a one-line notice for you, such as ALIGN · 4 decisions and 1 open question apply here; your agent has them. /align to read.
  • Cursor: from its session-start hook and the always-applied rule file .cursor/rules/align.mdc.

What is in it:

  • Up to 12 decisions and commitments and 3 open questions, within about 1,500 tokens (the lowest-ranked lines are dropped to fit).
  • Ranked by the files you are working on: the files changed on your branch, git status and your working directory. A decision scoped to a matching path ranks first; open conflicts and drift, things you own, commitments due within a week and recent confirmations rank higher. When no path matches, the pack has the six most recently confirmed decisions and every conflicted one.
  • Never a receipt quote: those stay in the console and in get_decision.

The pack is fetched with a 1.2 second limit and cached for 10 minutes. If the server does not answer, your agent gets the cached pack with a line saying how old it is.

align pack                         # print the pack for where you are
align pack --format json
align pack --paths src/billing     # for these paths instead (not cached)

In Claude Code, /align prints it.

MCP tools

align init registers an MCP server named align with each agent it sets up (align mcp runs it over stdio). Seven tools:

ToolWhat it doesWrites
get_contextthe pack for given paths and branchno
get_decisionone entry by key: statement, why, rejected alternatives, scope, receipts you can read, open conflictsno
search_decisionssearch by words; confirmed by default, or proposed or allno
list_open_questionsopen questions, those about your paths firstno
get_contractreserved for Linear issue contracts; today it answers that Linear is not connectedno
record_decisionproposes a decision you stated; visible only to you until you confirm ityes
ask_owneropens a question for the teamyes

What the tools can and cannot do:

  • No tool confirms, rejects, supersedes or answers anything. A proposal from record_decision waits for you in align confirm or the console.
  • Writes go only to the repository the agent is running in, never to another one the model names.
  • Every argument is redacted on your laptop before it is sent (what is captured).
  • Limits: 120 tool calls a minute per person; record_decision 30 an hour; ask_owner 5 an hour and 20 a day. Repeating the same proposal within 10 minutes, or an open question, returns the existing one.

Every tool also takes an optional repo (owner/name) to read another repository you can read; on your laptop the agent's working directory decides by default, and writes always go to that repository. For an agent that is not on your laptop, the same tools are served over HTTPS and take repo in every call: see Remote MCP and OAuth.