Open Agreements
Server Details
Fill standard legal agreement templates (NDAs, SAFEs, NVCA docs, employment) as DOCX files.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- open-agreements/open-agreements
- GitHub Stars
- 53
- Server Listing
- open-agreements
Available Tools
4 toolsfill_templateAInspect
Fill a legal agreement template with field values and return a document via URL or MCP resource preview metadata. For field-selector templates (e.g. NVCA), also generates a redline (track-changes) document comparing the filled output against the standard form.
| Name | Required | Description | Default |
|---|---|---|---|
| values | No | Field values to fill in the template. | |
| template | Yes | Template ID, e.g. "common-paper-mutual-nda". | |
| return_mode | No | Artifact return mode. Defaults to "url". | |
| redline_base | No | Base document for redline comparison. "source" = raw standard form (default), "clean" = cleaned intermediate. | |
| include_redline | No | Generate a redline (track-changes) document. Defaults to true for field-selectors. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns a document via URL or MCP resource, and that redline generation occurs for field-selector templates. With annotations only indicating it is not read-only and not destructive, the description adds meaningful behavioral context beyond the annotations.
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 two sentences, front-loaded with the primary action, and the second sentence adds an important conditional behavior. No redundant 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?
The description explains the tool's purpose, return modes, and the special redline case. Given the tool has no output schema and a nested `values` object, the description is sufficiently complete for the agent to understand the tool's behavior, though it could elaborate on expected `values` structure, but the schema covers that.
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?
The input schema covers all 5 parameters with descriptions (100% coverage). The description adds contextual information about redline generation for field-selector templates but does not add per-parameter details beyond the schema, so the baseline of 3 is appropriate.
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 clearly states the tool fills a legal agreement template with field values and returns a document, distinguishing it from sibling tools that only list or retrieve templates. It also specifies the redline generation behavior for field-selector templates.
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?
While it doesn't name alternative tools, the description clearly implies the tool is for creating filled documents, and the sibling names suggest alternatives for reading templates. The conditional redline behavior for field-selector templates provides clear context on when that feature applies.
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 full 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, covering the safety profile. The description adds return-value context ('full field metadata') but does not discuss potential errors or edge cases. Given the simple read operation, the additional context is minimal but acceptable.
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?
A single concise sentence that front-loads the purpose and contains no extraneous 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 read-only tool with one parameter and no output schema, the description sufficiently conveys the purpose and hints at the return content ('full field metadata'). It is adequate but could be more explicit about the return structure or non-existence handling.
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 a clear description and example for template_id. The tool description adds no additional parameter semantics beyond the schema, so the baseline 3 applies.
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 clearly states the action ('Fetch'), the resource ('a single template definition'), and adds a distinguishing detail ('full field metadata'), differentiating it from list_templates and search_templates by the 'single' qualifier.
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?
It does not explicitly state when to use this tool over alternatives like list_templates or search_templates, nor does it mention prerequisites or exclusion criteria. The 'single' qualifier implicitly contrasts with list/search, but no direct guidance is provided.
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 all available legal agreement 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. For finding templates by topic, jurisdiction, or source, use search_templates instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 25, max 100). | |
| cursor | No | Opaque pagination cursor returned by a prior call. Omit on the first page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false; description adds that results are paginated, compact/lightweight metadata, and in stable lexicographic order by template_id. It does not describe return fields, but that's acceptable given the 'call get_template' pointer.
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?
Three sentences, first sentence immediately states purpose; no filler or redundancy. Every sentence adds distinct information (scope, guidance, ordering/alternative).
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 low-complexity read-only list tool with full schema coverage and a pointer to get_template for detail, the description covers usage and behavior adequately. The absence of an output schema is mitigated by the explicit statement that it returns lightweight metadata for discovery.
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 covers 100% of parameters with descriptions for limit and cursor, so the description adds little beyond mentioning pagination. Baseline 3 applies because schema does the heavy lifting.
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?
Description opens with 'List all available legal agreement templates as a paginated compact catalog' — a specific verb and resource. It distinguishes from siblings by noting get_template for full detail and search_templates for topic-based 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?
Explicitly says 'call get_template for full per-field detail' and 'use search_templates instead' for topic/jurisdiction/source searches. This clearly delineates when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_templatesARead-onlyInspect
Search for legal agreement templates by keyword. Uses BM25 ranking to find the most relevant templates matching your query. Searches across template names, descriptions, categories, sources, and field definitions. Use this instead of list_templates when you know what kind of agreement you need.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. Examples: "NDA", "employment offer letter", "NVCA stock purchase", "data processing GDPR", "non-compete Wyoming". | |
| source | No | Optional source filter (exact, case-insensitive). Values: "Common Paper", "Bonterms", "Y Combinator", "NVCA", "OpenAgreements". | |
| category | No | Optional category filter (exact, case-insensitive). Values: confidentiality, employment, sales-licensing, data-compliance, deals-partnerships, professional-services, venture-financing, other. | |
| max_results | No | Maximum results to return (1-50, default 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description goes beyond annotations by revealing the BM25 ranking algorithm and specifying the exact searchable fields (names, descriptions, categories, sources, field definitions). This provides useful behavioral context beyond what structured data conveys, though it omits details like result count handling or ordering behavior.
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 three sentences long and front-loaded with the primary purpose in the first sentence. The second sentence adds valuable ranking details, and the third gives usage guidance. No filler or redundancy—every sentence 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?
For a search tool, the description is complete: it states what it searches, how it ranks results, and when to use it. There is no output schema, so return value explanation is not required, and the parameter scope is fully covered by the schema. The guidance about using it instead of list_templates completes the contextual picture.
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%, so the baseline is 3. However, the description adds meaning for the query parameter by stating it searches across names, descriptions, categories, sources, and field definitions, giving insight into how the query behaves. This is more than just restating the schema and adds value for parameter understanding.
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 clearly states a specific verb ('Search') and resource ('legal agreement templates'), and further specifies that it searches by keyword. It is explicitly differentiated from the sibling tool list_templates by saying 'Use this instead of list_templates when you know what kind of agreement you need,' making it obvious what this tool does that others don't.
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 gives an explicit usage guideline: 'Use this instead of list_templates when you know what kind of agreement you need.' This is a clear when-to-use instruction with a named alternative, which is exactly what the dimension asks for. It also implies that list_templates is for browsing all templates, adding further context.
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. Dates show when Glama detected each change.
1 tool update
- Changed
fill_template1 field changed- changed
Input schema / properties / include_redline / descriptionPrevious value: -"Generate a redline (track-changes) document. Defaults to true for recipes."New value: +"Generate a redline (track-changes) document. Defaults to true for field-selectors."
2 tool updates
- Removed
check_signature_status - Removed
send_for_signature
1 tool update
- Changed
list_templates4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - 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 \"compact\".", - "enum": [ - "compact", - "full" - ], - "type": "string" -}
1 tool update
- Changed
list_templates1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"Response detail mode. Defaults to \"full\"."New value: +"Response detail mode. Defaults to \"compact\"."
1 tool update
- Changed
send_for_signature1 field changed- added
Input schema / properties / document_nameAdded value: +{ + "description": "Filename for the document (e.g. 'Bonterms Mutual NDA.docx'). Auto-detected from download URL if not provided.", + "type": "string" +}
4 tool updates
- Changed
check_signature_status2 fields changed- removed
Input schema / properties / api_keyRemoved value: -{ - "description": "Required to download the signed document when completed.", - "type": "string" -} - added
Input schema / properties / envelope_id / descriptionAdded value: +"The envelope ID returned by send_for_signature."
- Removed
connect_signing_provider - Removed
disconnect_signing_provider - Changed
send_for_signature5 fields changed- removed
Input schema / properties / api_keyRemoved value: -{ - "description": "Your open_agreements_api_key.", - "type": "string" -} - changed
Input schema / properties / download_url / descriptionPrevious value: -"URL to download the DOCX (for remote MCP). Use the download_url from fill_template."New value: +"URL to download the DOCX file. Use the download_url from fill_template." - removed
Input schema / properties / file_pathRemoved value: -{ - "description": "Local path to the DOCX file (for stdio MCP server).", - "type": "string" -} - changed
Input schema / properties / signers / descriptionPrevious value: -"Signers and CC recipients."New value: +"Signers and CC recipients. First signer maps to party_1, second to party_2." - changed
Input schema / requiredPrevious value: -[ - "signers", - "api_key" -]New value: +[ + "signers" +]
1 tool update
- Added
search_templates
1 tool update
- Changed
send_for_signature3 fields changed- added
Input schema / properties / download_urlAdded value: +{ + "description": "URL to download the DOCX (for remote MCP). Use the download_url from fill_template.", + "type": "string" +} - changed
Input schema / properties / file_path / descriptionPrevious value: -"Path to the DOCX file to send for signature."New value: +"Local path to the DOCX file (for stdio MCP server)." - changed
Input schema / requiredPrevious value: -[ - "file_path", - "signers", - "api_key" -]New value: +[ + "signers", + "api_key" +]
1 tool update
- Changed
connect_signing_provider3 fields changed- added
Input schema / properties / api_keyAdded value: +{ + "description": "Your open_agreements_api_key.", + "type": "string" +} - removed
Input schema / properties / redirect_uriRemoved value: -{ - "description": "OAuth redirect URI.", - "type": "string" -} - added
Input schema / requiredAdded value: +[ + "api_key" +]
4 tool updates
- Added
check_signature_status - Added
connect_signing_provider - Added
disconnect_signing_provider - Added
send_for_signature
3 tool updates
- First observed
fill_template - First observed
get_template - First observed
list_templates
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
E-signatures for contracts and NDAs. Draft with AI, review, and send for signature.
Create real Word .docx files from your AI chat: proposals, quotes, contracts, statements of work.
Turn sales-call transcripts into traced proposals, contracts, and NDAs.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceGenerate NDAs, contracts, tenancy agreements, and 24 more document types — directly from Claude Desktop, Cursor, or any MCP-compatible AI assistant.38-
- AlicenseNot gradedqualityDmaintenanceAnswer a few questions. Get clean, jurisdiction-aware privacy policies and terms of service.MIT
- FlicenseAqualityDmaintenanceEnables filling uploaded document templates (DOCX/HWP/HWPX/PDF) with chatbot-generated content while preserving original formatting, tables, and images, and saving as files.41-
- AlicenseNot gradedqualityDmaintenanceEnables Word document generation from templates using Jinja2 syntax and parsing of DOCX, PDF, and Excel files to extract structured content, metadata, and text.161MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a clear and distinct purpose: template browsing (list_templates, search_templates, get_template), template filling (fill_template), signature workflow (send_for_signature, check_signature_status). No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_templates, check_signature_status). Verbs and nouns are clearly chosen, making the pattern predictable.
With 6 tools covering the core workflow of template discovery, filling, and e-signature, the count is well-scoped and appropriate for the server's purpose. No unnecessary tools and no critical missing functionality.
The tool set covers the full lifecycle of working with legal agreement templates: discover (list, search, get), create filled document (fill_template), send for signature (send_for_signature), and retrieve signed PDF (check_signature_status). No obvious gaps for the intended use case.