From open-agreements
Fills legal agreement templates (NDAs, cloud service agreements, SAFEs) and produces filled DOCX files via MCP or local CLI.
How this skill is triggered — by the user, by Claude, or both
Slash command
/open-agreements:open-agreementsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fill standard legal agreement templates and produce filled DOCX files.
Fill standard legal agreement templates and produce filled DOCX files.
Use this skill when the user wants to:
If the Open Agreements MCP server is connected (remote or local), use these tools directly. This is the preferred path — no CLI or Node.js needed.
Remote MCP URL: https://openagreements.org/api/mcp
| Tool | Purpose |
|---|---|
list_templates | List available templates as a paginated compact catalog (template_id, display_name, category, description, field_count, priority_field_count). Pages with cursor + limit (default 25, max 100). |
get_template | Get full field metadata for a specific template |
fill_template | Fill a template with values and return a downloadable DOCX |
list_templates (returns a compact, paginated catalog — page with cursor + limit until next_cursor is null). If you know the topic ahead of time, prefer search_templates over a full catalog walk. If user asked for a specific type (e.g. "NDA"), identify the right template from the list.get_template with the chosen template_id to get full field definitions (name, type, required, section, description, default).fill_template with the template ID and values. Returns a download URL for the DOCX.A few templates have boolean fields that recite a past statutory-compliance
fact someone must actually have performed (e.g. "the required advance notice
was given before signing"). Their get_template description begins with
CONFIRM-BEFORE-SIGNING, and they default to false.
true. Setting it true asserts a real-world fact; do
not infer it from context.false (unconfirmed) and the clause applies, the
filled DOCX is not broken — the recital renders followed by a yellow
[CONFIRM before signing: …] bracket, and a matching yellow notice appears on
page one listing each item still needing confirmation. Tell the user these
yellow brackets must be confirmed and deleted before the agreement is signed.true and the document renders
clean (no bracket, no page-one notice).If no MCP server is connected, fall back to the CLI.
if command -v open-agreements >/dev/null 2>&1; then
echo "GLOBAL"
elif command -v node >/dev/null 2>&1; then
echo "NPX"
else
echo "PREVIEW_ONLY"
fi
open-agreements directly.npx -y [email protected] as prefix. Always pin the version — never use @latest to avoid pulling unexpected updates.open-agreements list --json
Parse the items array. Each item has name, description, license, source_url, source, and fields.
Same as MCP workflow steps 2-5, but write values to /tmp/oa-values.json and run:
open-agreements fill <template-name> -d /tmp/oa-values.json -o <output-name>.docx
Clean up: rm /tmp/oa-values.json
Open Agreements is fully open source (Apache-2.0 license). Review the complete source before installing:
npm view open-agreements scripts. The package declares no postinstall, preinstall, or install hooks. The prepare script only runs when installing from a git URL, not from the npm registry.All template field definitions and fill logic are auditable in the repository.
The two version numbers in this skill are independent and refer to different things:
0.2.3) — versions the skill documentation itself.0.7.4) — the version of the upstream open-agreements npm package this skill recommends pinning. Check npm view open-agreements version for the latest.A newer skill version means the documentation was updated. A newer npm package version means the underlying tool was updated. They are not synchronized.
Open Agreements has three distinct network postures depending on which execution path you use:
| Path | Install-time network | Runtime network |
|---|---|---|
Pinned global install (npm install -g [email protected]) | One-time fetch from registry.npmjs.org | None for list/fill. |
Pinned npx (npx -y [email protected]) | Fetch from registry.npmjs.org on first run, cached afterward | Same as above |
Remote MCP (https://openagreements.org/api/mcp) | None | Template contents and any field values are sent to openagreements.org. Use only if you accept transmitting these values to the hosted service. |
Use the local CLI path (global or npx) if you need guaranteed offline behavior with no third-party data transfer.
For environments where npx auto-fetch is unacceptable, install the package globally and pin the version:
# Install a specific pinned version globally (one-time)
npm install -g [email protected]
# Then use the installed binary directly — no npx fetching at runtime
open-agreements list --json
open-agreements fill <template-name> -d values.json -o output.docx
Before upgrading, review the changelog: https://github.com/open-agreements/open-agreements/blob/main/CHANGELOG.md
Even with npx, always pin the version:
npx -y [email protected] list --json
Never use @latest — it pulls a fresh package on every cache miss and can introduce unexpected changes.
For the full template-filling workflow (applicable to all agreement skills), see template-filling-execution.md.
list_templates or list --json for the current inventoryIf this skill helped, star us on GitHub: https://github.com/open-agreements/open-agreements
On ClawHub: clawhub star open-agreements/open-agreements
npx claudepluginhub open-agreements/open-agreementsDrafts and fills NDA templates (mutual, one-way, confidentiality) from Common Paper and Bonterms forms, producing signable DOCX files.
Generates customized business agreements for 10 types (freelancer, partnership, NDA, etc.) with plain English annotations via info-gathering wizard. Trigger: /agreement-generator or 'create a freelancer agreement'.
Drafts service agreements, NDAs, and subcontractor templates with scope, payment, IP ownership, confidentiality, termination, and liability clauses.