memoforge
From one legal question to a finished .docx memo.
Plugin for Claude Code and Cowork that runs the pipeline of a small legal team: intake, parallel research across ten legal databases, IRAC drafting, four reviewers and up to two revision rounds. Since v2 the pipeline lives in tested code, not in the model's memory. You ask. The plugin works. You read.
From a research-grade question to a court-citable memo.
A four-stage flow runs underneath: intake gathers facts and scope; researchers go out in parallel, one per layer of authority; code freezes the source pack; the writer drafts IRAC; four reviewers stress-test the draft, a mediator consolidates their findings, the writer revises up to two rounds, and a client-readiness polish ships the .docx. Ten steps, two checkpoints that always fire and one that fires only on exceptions.
Intake answers and plan approval, every time. Source review only when something needs you: a critical source left unresolved, conflicting authority, an exhausted database quota. Clean research goes straight to drafting. Everything between pauses runs on its own.
.docx, summary, source pack and audit trail.Why naive memo prompts produce unusable memos.
Hallucinated citations. One model writing one draft will invent statutes and misquote cases. The model that wrote the citation has no incentive to verify it, so nothing catches the error before it reaches your inbox.
No contrary authority. The same model that drafted the analysis will not stress-test it. You get a confident one-sided read — and no idea where opposing counsel would attack first.
No currency check. A 2022 judgment that was overruled in 2024 will still show up as authority. A regulation cross-referencing a repealed act will still get cited. Nothing flags it.
Lost bookkeeping. A long run outlives the model's context. When the conversation gets summarised, the step that froze the sources or counted the revisions is the first thing to go, and the memo still comes out looking finished.
memoforge runs specialists that disagree with each other before the memo ever reaches you.
Researchers pull primary acts and case law. A citation auditor checks that every claim traces to a source. A currency checker verifies the law is still current. A counterargument reviewer reads the draft the way a regulator or opposing counsel would. A mediator consolidates the disagreements into one revision list, and a client-readiness reviewer makes the final call.
And since v2 the pipeline is code, not a prompt. Phases, budgets, source freezing, citation provenance and every write to the run's state belong to a Python package (the mf CLI) with about 3,600 offline tests behind it. The model follows one three-command protocol, next → act → report, and holds nothing that summarisation can erase.
The output isn't generic disclaimers. It's a memo with named contrary authority, a risk line per point, quotations you can check against the source, and recommendations a partner can actually sign off on.
One full memo for lawyers. A three-page brief for the person who decides.
There is no mode to pick any more: every run is Full, and the v1 Brief mode is gone. When the memo is done, /memoforge:brief condenses it for a decision maker who is not a lawyer, and checks that the short version still says what the memo says.
- Research
- statutes + case law; doctrine when the plan calls for it
- Reviewers
- logic, form, citations, counterarguments
- Revisions
- up to 2 rounds
- Polish
- one client-readiness pass
- Languages
- EN, DE, FR, ES, RU
The research-grade memorandum: IRAC per issue, a risk line per point, a frozen source pack and an honest verdict. Multi-part questions are fine; each part becomes its own analysed issue.
- Length
- about 3 pages
- Built from
- the finished memo only, no new research
- Keeps
- high risks, amounts and sanctions, what you asked, actions due within 14 days
- Checks
- fidelity against the memo, readability for a non-lawyer, up to 2 rounds
A bottom line, one block per kept conclusion with its risk and the rule it rests on, what to do, what the answer depends on, and one line for every point left out. Nothing added, no condition dropped, no risk level moved. The memo itself is never touched.
Eleven specialists for the memo, two for the brief. Code keeps the books.
Each agent does one thing and challenges the next one's output. A researcher doesn't review form. A logic reviewer sees the draft and nothing else. Disagreement is the design, not a bug. Every agent that judges substance runs on Opus; only the writer's model is yours to choose.
mf CLI for the next step, does that one step, dispatches the specialists, and reports back; phases, budgets and state live in code. You answer; it dispatches.
Not just a memo — the whole audit trail.
Every memo ships with the source pack it was built on, the reviewers' findings, the run's diagnostics and an honest verdict. The work dir keeps every draft version and every lint report besides. If a partner asks "where did this citation come from?", the answer is one folder away.
state.json, the events.jsonl journal, the plan, the intake facts, the sufficiency verdict and the reviews.
/memoforge:brief: the three-page decision brief, saved beside the memo.
Every quotation in the memo was extracted from the saved source text by exact match, not recalled by a model. A quote that cannot be matched is refused, and the refusal is recorded. The citation auditor checks the rest: a claim of law that traces to nothing in the pack gets flagged and revised before export.
And the verdict is honest: approved_on_v<N>, forced_exit_on_v<N>_with_remaining_issues (revision budget spent with blockers left), manual_review_required_on_v<N>, or fallback_summary_delivered when a dependency failed. A run never ends empty-handed: without python-docx you still get a markdown memo with a banner explaining why. No false confidence.
Make every memo sound like your firm wrote it.
By default the writer follows a built-in house style: concise, no em-dashes, OSCOLA citations. Style Studio turns a folder of your own example memos (or a written style guide) into a saved profile that sets the prose style and the template. Form review defers to your rules; substantive checks (citations, IRAC structure, contrary authority) stay uniform.
use makes one the default. A profile sets the voice, headings and template, never the scope of the research. The writer and the form reviewer read your rules instead of the defaults.Skip Style Studio entirely and memoforge runs identically to its defaults — no extra prompts, no behavioural change. Profiles are opt-in.
Install. Connect the databases. Ask.
memoforge runs in Claude Code and in Cowork. It registers ten legal MCP servers; click Connect on each in the plugin panel (the first call may open a sign-in). Skipping this is supported: research falls back to official portals via WebFetch, and the memo carries a banner asking you to verify each citation by hand.
memoforge-<version>.zip from the latest release.jsonschema, python-docx and mistune, into the plugin's own data directory where they never touch your project. The plugin answers without them, and a run without them still delivers a markdown memo./memoforge:memo with your legal question. Multi-part questions are fine: each part becomes its own analysed issue with its own citations. Say "memo in German" to switch the language. /memoforge:status shows where a task stands; /memoforge:continue resumes one.Together they cover the EU, the UK, the US, France, Switzerland and Russia, and Legal Data Hunter reaches 230+ jurisdictions. Seven of the ten are free and need no key.
Two checkpoints every run, a third only on exceptions. In between, a live dashboard page follows the run step by step, and every subagent tile is labelled with how far along it is.
- Intake
- Up to 10 questions about facts the analyst could not infer. Answer by letter, or type
proceedto accept the stated defaults. - 1A 2C 3: <facts>
- Plan
- One card with the research plan (jurisdictions, issues, source types) and your style profile, if you have one. Approve, edit or cancel.
- approve
- Source review
- Only when research hit an exception: a critical source unresolved, conflicting authority, an exhausted quota. Clean research goes straight to drafting.
- continue
What memoforge won't do — and where your data goes.
memoforge assumes no jurisdiction: the plan step classifies the query and routes research accordingly. Its strong ground is EU data protection (GDPR, AI Act, NIS2, DSA), US privacy and sectoral regulation, UK consumer law and cross-border compliance. The honest caveats are below.
Not a substitute for a lawyer. The memo is a research-grade draft. A qualified lawyer must review it before any client use, especially for regulated advice. The verdict at the end of the run is a signal, not a sign-off.
Five memo languages. English, German, French, Spanish and Russian; English by default whatever language you ask in. The reviewers' findings, CLI errors and run diagnostics stay in English.
Provenance is bounded. A quote is proven to come from the raw file the researcher saved. That the file came from the cited URL is confirmed only where the URL is still live and its hash matches, and each source records which of the two it is.
Currency is best-effort. The currency check runs against the connected databases. For litigation-sensitive citations, verify each judgment is still good law before relying on the memo.
No cancelling mid-step. A cancel is honoured at the checkpoints and at the next step boundary.
Cowork caveats. Chat output is buffered until the turn ends, and your permission rules do not apply there; the plugin's own gate approves only allowlisted hosts and calls to its own CLI.
Everything memoforge writes lives on your machine: in the output_folder you set, else $MEMOFORGE_OUTPUT_FOLDER, else a memoforge/ folder in your session's folder, else ~/Documents/memoforge/. No shared backend, no server, no telemetry.
MCP calls go to the providers you authenticated, with your credentials; web research is aimed at the official portals on the plugin's allowlist. The plugin never proxies or stores those credentials. The audit trail (state.json, events.jsonl, every draft version, every review) stays in the task folder until you delete it.