open-agreements
This server allows you to discover, retrieve, and fill legal agreement templates (40+ across NDAs, cloud service agreements, employment docs, SAFEs, NVCA financing documents, etc.) to produce signable DOCX files.
List templates (
list_templates): Browse all available templates in compact or full metadata mode (includes fields, licenses, sources).Get template details (
get_template): Fetch a single template's full definition and field metadata by ID (e.g.,common-paper-mutual-nda), so you know exactly what values are needed.Fill a template (
fill_template): Render a filled, signable DOCX by providing a template ID and required field values. Output can be returned as a local file path or inline base64-encoded string.
Provides automated filling and generation of standard Y Combinator (YC) SAFEs as part of its external template library.
OpenAgreements
OpenAgreements helps people and software agents find primary-source-backed U.S. legal guidance and produce reviewable DOCX files from standard agreement templates.
What OpenAgreements does
Publishes jurisdiction-specific practice guides with citations to primary law.
Provides standard agreement templates with source and license metadata.
Fills templates locally through a CLI or over MCP.
Publishes review checklists and comparison surveys in human- and machine-readable formats.
OpenAgreements provides legal information and document mechanics, not legal advice. It does not decide whether a form or clause is right for a transaction, and generated documents are drafts for human review.
The project’s longer-term goal is a citable conformance layer for legal AI: primary law becomes inspectable requirements, an AI can check a document against them, and a lawyer owns the final call. Read Why OpenAgreements Exists for the rationale; this README stays focused on using the project.
Related MCP server: legal-docs-mcp
Fill your first agreement
Install the CLI locally, inspect the available forms, and fill the Common Paper Mutual NDA:
npm install -g open-agreements
open-agreements list
open-agreements fill common-paper-mutual-nda \
--set party_1_name="Jane Doe" \
--set party_1_company="Acme Manufacturing, Inc." \
--set party_2_name="John Smith" \
--set party_2_company="Northeast Logistics LLC" \
--set effective_date="2026-07-15" \
--set purpose="Evaluating a potential logistics relationship" \
--output mutual-nda.docxThe last command writes mutual-nda.docx. Open it in Word or another DOCX
viewer and review every filled term before signature. Defaults supply the
standard one-year term, Delaware governing law, and other omitted cover terms;
the CLI reports any priority fields that still need attention.
For a complete, copyable example and field-review steps, follow the quick start.
Understand the workflow
standard form + source and license metadata
→ supplied field values
→ validation and local rendering
→ reviewable DOCX
→ human legal and business reviewThe standard form is authoritative until rendering. Your supplied values become the transaction-specific inputs. The generated DOCX is an output for review; it is never automatically accepted or signed.
The legal-content path is separate: practice guides cite primary sources, surveys compare jurisdictions, and checklists turn requirements into review steps. Those materials can inform a decision, but they do not mutate an agreement.
Choose your next step
Install OpenAgreements — choose local CLI, local MCP, or hosted MCP.
Fill a standard agreement — complete the canonical workflow end to end.
Use legal guidance and checklists — find the right human- or machine-readable source.
Connect an AI agent — configure Claude Code, Codex CLI, Cursor, or Gemini CLI.
Browse the full catalog — templates, guides, surveys, checklists, skills, and packages.
Understand system boundaries — follow content and documents through the system.
Contribute — change code, documentation, templates, or field-selectors.
Links: Website | Template Catalog | Docs | Trust | npm
Privacy and document handling
Local CLI and local stdio MCP processing stay on your machine.
Hosted MCP template filling runs server-side; filled documents are not stored after the response is returned.
Some field-selector workflows download an official source document at runtime.
Choose an execution mode that matches your document-sensitivity and internal policy requirements. See the trust-boundary status and security policy.
License
Project code is licensed under Apache License 2.0. Content retains its
source-specific license. See the licensing reference
and each template's metadata.yaml before redistribution or modification.
Available Tools
3 toolsfill_templateBInspect
Fill a template using local OpenAgreements CLI and return local path or inline base64.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | Template ID, e.g. "common-paper-mutual-nda". | |
| values | No | Template field values passed to the fill command. | |
| output_path | No | Optional output DOCX path. Defaults to a temporary location. | |
| return_mode | No | Return local file path or inline base64 document data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false and destructive=false. The description adds valuable context not in annotations: it mentions reliance on a local CLI tool and specifies the two return modes (local path vs inline base64). However, it omits details about error handling, temp file cleanup, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant words. It front-loads the action ('Fill a template') and immediately follows with mechanism and return value information. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 100% schema coverage and simple 4-parameter structure, the description adequately covers the core operation. However, for a tool that interacts with the local filesystem and external CLI, it lacks guidance on error conditions, the relationship to sibling tools in a workflow, or prerequisites (e.g., CLI installation).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description mentions 'return local path or inline base64' which aligns with the return_mode parameter, but this merely echoes the schema without adding syntactic details, examples, or cross-parameter constraints (e.g., output_path behavior when return_mode is inline_base64).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ('Fill') and resource ('template') and specifies the mechanism ('local OpenAgreements CLI') and return formats. However, it does not explicitly differentiate from sibling tools 'get_template' and 'list_templates' within the text itself, only implicitly via the verb choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but provides no guidance on when to use it versus the sibling tools (e.g., whether to call list_templates or get_template first to identify valid template IDs and required fields). No prerequisites or workflow context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateARead-onlyInspect
Fetch a single template definition with field metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID, e.g. "common-paper-mutual-nda". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing safety. The description adds value by specifying 'field metadata' as returned content, but omits error behavior (e.g., what happens if template_id is invalid) or cache characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely efficient at 7 words. Front-loaded with verb 'Fetch'. Every word earns its place: 'single' distinguishes from list operations, 'field metadata' clarifies what the definition contains. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read operation with one parameter and good annotations. The description covers the core behavior and hints at return value content ('field metadata'). Could improve by noting error cases (e.g., template not found) since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single parameter, the schema fully documents the input requirements. The description provides no additional parameter semantics, which is acceptable given the schema completeness, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Fetch' with clear resource 'template definition' and scope 'single'. The phrase 'field metadata' distinguishes it from list_templates (which likely returns summary data) and 'Fetch' distinguishes it from fill_template (which implies mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'single' implies this requires a specific ID versus browsing with list_templates, but there are no explicit when-to-use guidelines or named alternatives. The agent must infer the workflow from the sibling tool names and the parameter requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesARead-onlyInspect
List OpenAgreements templates as a paginated compact catalog. Returns lightweight metadata for discovery — call get_template for full per-field detail. Templates are returned in stable lexicographic order by template_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque pagination cursor returned by a prior call. Omit on the first page. | |
| limit | No | Page size (default 25, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds value by specifying stable lexicographic ordering by template_id, returning lightweight metadata, and mentioning pagination (default page size 25, max 100). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences front-load the purpose and nature, with no wasted words. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two parameters and no output schema, the description is fairly complete: it covers the tool's goal, usage context, ordering, and links to the sibling get_template. It could optionally mention that it lists all templates, but that's implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds context about pagination but does not provide additional parameter-specific meaning beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'List', the resource 'OpenAgreements templates', and the nature 'paginated compact catalog'. It distinguishes from the sibling tool 'get_template' by clarifying that this returns lightweight metadata for discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states that the tool is for discovery and suggests using 'get_template' for full detail, implying when to use this vs. that. However, it does not explicitly mention when not to use it or address the sibling 'fill_template'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.7.7- Changed
list_templates3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Opaque pagination cursor returned by a prior call. Omit on the first page.", + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Page size (default 25, max 100).", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / modeRemoved value: -{ - "description": "Response detail mode. Defaults to \"full\".", - "enum": [ - "compact", - "full" - ], - "type": "string" -}
3 tool updates
v0.5.1- First observed
fill_template - First observed
get_template - First observed
list_templates
TDQS
Scored across 3 tools
Each tool has a clear, non-overlapping purpose: list_templates discovers templates, get_template retrieves full details, and fill_template executes the filling process. No ambiguity between them.
All tools follow a consistent verb_noun snake_case pattern (list_templates, get_template, fill_template), making their action and target immediately clear.
Three tools is a reasonable size for a focused domain like template management. It covers the core operations of discovery and execution without being overly minimal.
The set covers the main workflow: list, retrieve, and fill templates. Missing create/update/delete operations, but these may not be part of the server's scope if templates are predefined externally.
Maintenance
Related MCP Connectors
Generate attorney-drafted NDAs, MSAs, DPAs, and more as PDF, ODT, or Markdown. No account required.
Reusable docx templates: placeholders for proposals, contracts, quotes, SOWs.
Reusable contract terms and clauses assembled into a Word docx with variables filled.
E-signatures for contracts and NDAs. Draft with AI, review, and send for signature.
Related MCP Servers
- AlicenseAqualityAmaintenanceEditing of existing Word (.docx) files with formatting preservation. Supports comments, footnotes, and document comparison.2644Apache 2.0
- FlicenseNot gradedqualityNot gradedmaintenanceGenerate NDAs, contracts, tenancy agreements, and 24 more document types — directly from Claude Desktop, Cursor, or any MCP-compatible AI assistant.38 npm-
- AlicenseNot gradedqualityDmaintenanceAnswer a few questions. Get clean, jurisdiction-aware privacy policies and terms of service.MIT
- AlicenseAqualityFmaintenanceLegal document redlining engine that applies AI-generated JSON changes as professional tracked changes with comments in .docx files, producing Word-indistinguishable output.61MIT