ClauseAI
Server Details
Generate attorney-drafted NDAs, MSAs, DPAs, and more as PDF, ODT, or Markdown. No account required.
- Status
- Healthy
- Uptime
- 100.0% over 42 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- wasauce/clauseai
- GitHub Stars
- 1
- Server Listing
- ClauseAI
TDQS
Scored across 4 tools
Each tool occupies a distinct slot in a clear pipeline: list_templates (discover), get_template_fields (inspect schema), generate_document (produce output), and send_feedback (escape hatch). Descriptions even specify ordering cues ('use this after choosing a template slug'), so an agent cannot easily misselect.
All four names follow a strict verb_noun snake_case pattern (list_templates, get_template_fields, generate_document, send_feedback). Verbs are conventional and unchanging across the set.
Four tools is well-scoped for a template-driven document generator: one discovery call, one schema read, one generation call, plus a feedback channel. Nothing appears redundant and no obvious operation is crammed in.
The discover-inspect-generate lifecycle is fully covered with a feedback path for gaps. Minor omissions exist: no way to list generated documents or supported output formats, and generate_document forbids a second call, so revisions must be handled outside the surface.
Available Tools
4 toolsgenerate_documentGenerate documentAInspect
Use this after reading the field schema, to fill published fields and return markdown plus a download link. Do not invent clause text. Call it once per document: the result always includes the markdown text, download_url is the file in the requested format, and editable_download_url is a Word copy the user can edit. Answers are short values for the published fields; unknown keys, overlong values, and choices outside a field's options are rejected with instructions for fixing them.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Template slug from list_templates. | |
| format | No | pdf, docx, odt, or markdown. The download link uses this format. | |
| answers | No | Map of field keys to values, using only keys from get_template_fields. Leave out keys you cannot answer; they stay as placeholders. Do not send placeholder text. Dates are YYYY-MM-DD. Use __omit__ to remove a placeholder. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| title | Yes | |
| format | Yes | |
| answers | Yes | Answers as printed. ISO dates are written out in full. |
| filename | Yes | |
| markdown | Yes | Filled template text for summarization. The file the user downloads is at download_url. |
| warnings | No | Answers that were accepted but look wrong. Fix and regenerate, or pass each warning on to the user. |
| download_url | Yes | Absolute URL that downloads the rendered PDF, Word, ODT, or Markdown file. |
| unfilled_fields | No | Field keys still shown as placeholders in the document. Tell the user these need completing before the document is used. |
| editable_download_url | Yes | Absolute URL for a Word (.docx) copy the user can edit before signing. Give it to the user with download_url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false); the description adds substantial context beyond them: the return payloads (markdown, download_url, editable_download_url) and their meaning, and the validation behavior (unknown keys, overlong values, and out-of-option choices are rejected with fix instructions). The 'once per document' note is also consistent with idempotentHint=false, giving the agent a reason for that annotation.
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?
It is front-loaded with the primary purpose and prerequisite, then layers the no-invention rule, cardinality, and return shape. The final sentence on validation is dense but earns its place by warning the agent about failure modes; nothing is padding, though the output descriptions are slightly redundant given an output schema exists.
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 three-parameter generation tool with an output schema and annotations, the description covers prerequisite ordering, required input shape, validation failure behavior, and the identity of each returned artifact. An agent has everything needed to invoke it correctly on the first attempt.
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, but the description adds genuine constraint semantics not in the schema: answers must be 'short values for the published fields', and invalid keys/values are rejected with remediation instructions. It doesn't restate format enum details already covered by the schema, which 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 gives a specific verb and resource ('fill published fields and return markdown plus a download link') and explicitly positions the tool after 'reading the field schema', which distinguishes it from the sibling get_template_fields. An agent can tell immediately this is the terminal generation step, not a lookup.
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 states sequencing ('use this after reading the field schema') and a cardinality rule ('call it once per document'), plus a negative instruction ('do not invent clause text'). What is missing is any explicit statement of when NOT to use it or which sibling to prefer under ambiguous conditions, but the ordering guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_template_fieldsGet template fieldsARead-onlyIdempotentInspect
Use this after choosing a template slug, to read the fill-in fields before generating a document.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Template slug from list_templates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| title | Yes | |
| fields | Yes | |
| category | Yes | |
| source_url | Yes | |
| description | Yes | |
| when_needed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds only workflow context, not behavioral traits like rate limits or what the returned fields look like. An output schema exists, so return-format detail is not required here.
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 sentence with zero filler, front-loaded with the trigger ('after choosing a template slug') and ending with the purpose. 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?
For a simple, read-only, one-parameter tool with a full output schema and complete annotations, the description covers placement in the workflow adequately. Nothing an agent needs to invoke it correctly is missing, though it is minimal.
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 a single parameter at 100% schema description coverage, the schema already explains that 'slug' is a template slug from list_templates. The description reinforces the source of the slug but adds no format, syntax, or validation detail beyond the schema, matching the baseline for fully documented parameters.
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?
States a specific verb+resource ('read the fill-in fields') scoped to a template slug, so an agent knows exactly what it returns. It also implicitly distinguishes itself from siblings by referencing the slug source (list_templates) and the follow-up (generating a document). It stops short of explicitly contrasting itself with any sibling by name.
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?
Gives clear sequencing guidance: use it 'after choosing a template slug' and 'before generating a document.' This effectively tells the agent when in the workflow to call it relative to list_templates and generate_document. No when-not conditions or edge cases are mentioned, keeping it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesList templatesARead-onlyIdempotentInspect
Use this when the user wants a startup legal document and you need to choose a template such as an NDA, MSA, DPA, privacy policy, terms of use, cookie notice, offer letter, advisor agreement, or business associate agreement.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is fully covered by structured data. The description adds domain context but nothing behavioral beyond that — no note on whether the list is static or dynamic, or how it relates to subsequent generation. With annotations carrying the safety profile, a 3 is appropriate.
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 sentence that front-loads the usage condition before the template enumeration. The long list of document types is the only slightly padded element, though it does usefully scope the domain.
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 zero-parameter, read-only list tool with an output schema available to describe returns, the description supplies the one thing an agent needs: when this lookup is the right call. Nothing essential is missing.
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 tool takes zero parameters, so there is no parameter semantics for the description to explain. Baseline 4 applies; no gaps in this dimension.
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 frames the tool as the one to reach for when selecting among startup legal templates and enumerates concrete examples (NDA, MSA, DPA, privacy policy, etc.), which makes the resource specific. It never states outright that the tool returns the available template list, so the verb is inferred from the name rather than declared in the text.
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 gives a clear triggering condition — the user wants a startup legal document and a template must be chosen — which implies this is the pre-generation lookup step. It does not name the sibling alternatives (e.g. generate_document, get_template_fields) or explicitly state that generation should follow, so routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackSend feedbackAInspect
Use this when a template lacks a field or clause the user needs, no template fits the request, a tool result was wrong, or the user wants to tell the ClauseAI team something. The message goes to the ClauseAI operator. Do not include document text or personal details, except an email or phone number the user offers for a reply.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Template slug the feedback is about, if any. | |
| No | Optional email address for a reply. Only pass one the user gave you. | ||
| phone | No | Optional phone number for a reply. Only pass one the user gave you. | |
| message | Yes | What you were trying to do and what was wrong or missing. Up to 4000 characters. | |
| category | No | bug, missing_field, template_request, or other. | other |
Output Schema
| Name | Required | Description |
|---|---|---|
| detail | Yes | |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description usefully discloses that the message goes to the ClauseAI operator and that document text or personal details should not be included except user-provided reply contact details. This adds meaningful context for a write/open-world operation, though it does not discuss retention or confirmation 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 two sentences and front-loads the usage conditions before stating the destination and privacy constraint. Every sentence adds useful information without repetition.
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 tool has an output schema and annotations covering its write and open-world nature, so return values and safety traits are already documented. The description fills the remaining gaps by explaining when to use it, where the feedback goes, and what must be excluded.
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 schema already documents all five parameters. The description still adds value by constraining what may go into the feedback message and by clarifying that reply contact details should only be included when the user offers them.
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 makes clear that this tool sends feedback to the ClauseAI operator, and it lists specific triggering situations such as a missing template field or an incorrect tool result. This distinguishes it from sibling tools like generate_document and list_templates, which handle document generation and template 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?
It gives explicit when-to-use conditions: when a template lacks a needed field or clause, no template fits, a tool result was wrong, or the user wants to tell the ClauseAI team something. It also includes privacy guidance about what not to include, though it does not explicitly state when not to use the tool or name alternative paths.
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
- Changed
send_feedback2 fields changed- changed
Input schema / properties / email / descriptionPrevious value: -"Optional address for a reply. Only pass one the user gave you."New value: +"Optional email address for a reply. Only pass one the user\ngave you." - added
Input schema / properties / phoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional phone number for a reply. Only pass one the user\ngave you." +}
1 tool update
- Changed
generate_document5 fields changed- removed
Input schema / properties / emailRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Optional contact email recorded with the generation." -} - changed
Input schema / properties / format / descriptionPrevious value: -"pdf, odt, or markdown. The download link uses this format."New value: +"pdf, docx, odt, or markdown. The download link uses this\nformat." - changed
Output schema / properties / download_url / descriptionPrevious value: -"Absolute URL that downloads the rendered PDF, ODT, or Markdown file."New value: +"Absolute URL that downloads the rendered PDF, Word, ODT, or Markdown file." - added
Output schema / properties / editable_download_urlAdded value: +{ + "description": "Absolute URL for a Word (.docx) copy the user can edit before signing. Give it to the user with download_url.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "slug", - "title", - "format", - "filename", - "markdown", - "download_url", - "answers" -]New value: +[ + "slug", + "title", + "format", + "filename", + "markdown", + "download_url", + "editable_download_url", + "answers" +]
4 tool updates
- Changed
generate_document6 fields changed- changed
Input schema / properties / answers / descriptionPrevious value: -"Map of field keys to values. Missing keys stay as\nplaceholders."New value: +"Map of field keys to values, using only keys from\nget_template_fields. Leave out keys you cannot answer; they\nstay as placeholders. Do not send placeholder text. Dates\nare YYYY-MM-DD. Use __omit__ to remove a placeholder." - changed
Input schema / properties / format / descriptionPrevious value: -"pdf, odt, or markdown."New value: +"pdf, odt, or markdown. The download link uses this format." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Filled template text plus a link to the rendered file." - added
Output schema / propertiesAdded value: +{ + "answers": { + "additionalProperties": { + "type": "string" + }, + "description": "Answers as printed. ISO dates are written out in full.", + "type": "object" + }, + "download_url": { + "description": "Absolute URL that downloads the rendered PDF, ODT, or Markdown file.", + "type": "string" + }, + "filename": { + "type": "string" + }, + "format": { + "type": "string" + }, + "markdown": { + "description": "Filled template text for summarization. The file the user downloads is at download_url.", + "type": "string" + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "unfilled_fields": { + "description": "Field keys still shown as placeholders in the document. Tell the user these need completing before the document is used.", + "items": { + "type": "string" + }, + "type": "array" + }, + "warnings": { + "description": "Answers that were accepted but look wrong. Fix and regenerate, or pass each warning on to the user.", + "items": { + "type": "string" + }, + "type": "array" + } +} - added
Output schema / requiredAdded value: +[ + "slug", + "title", + "format", + "filename", + "markdown", + "download_url", + "answers" +]
- Changed
get_template_fields5 fields changed- added
Input schema / properties / slug / descriptionAdded value: +"Template slug from list_templates." - removed
Output schema / additionalPropertiesRemoved value: -true - added
Output schema / descriptionAdded value: +"Field schema for one template." - added
Output schema / propertiesAdded value: +{ + "category": { + "type": "string" + }, + "description": { + "type": "string" + }, + "fields": { + "items": { + "description": "One fill-in field on a template.", + "properties": { + "key": { + "type": "string" + }, + "label": { + "type": "string" + }, + "marks": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "max_length": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Longest answer accepted, in characters. Null for choice fields, which must match one of options exactly." + }, + "options": { + "items": { + "type": "string" + }, + "type": "array" + }, + "question": { + "type": "string" + }, + "replaces": { + "default": "", + "type": "string" + }, + "required": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "key", + "label", + "question", + "type", + "required" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "when_needed": { + "type": "string" + } +} - added
Output schema / requiredAdded value: +[ + "slug", + "title", + "category", + "description", + "when_needed", + "source_url", + "fields" +]
- Changed
list_templates5 fields changed- added
Output schema / descriptionAdded value: +"Templates the user can draft." - removed
Output schema / properties / resultRemoved value: -{ - "items": { - "additionalProperties": true, - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / templatesAdded value: +{ + "items": { + "description": "One template in the public catalog.", + "properties": { + "category": { + "type": "string" + }, + "description": { + "type": "string" + }, + "field_count": { + "type": "integer" + }, + "slug": { + "type": "string" + }, + "source_url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "when_needed": { + "type": "string" + } + }, + "required": [ + "slug", + "title", + "category", + "description", + "when_needed", + "source_url", + "field_count" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "result" -]New value: +[ + "templates" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Added
send_feedback
3 tool updates
- First observed
generate_document - First observed
get_template_fields - First observed
list_templates
Related MCP Connectors
E-signatures for contracts and NDAs. Draft with AI, review, and send for signature.
Fill in 1,000+ legal PDF templates in many languages, get a signed PDF back. Free, no API key.
Fill standard legal agreement templates (NDAs, SAFEs, NVCA docs, employment) as DOCX files.
Compliant legal documents from your AI assistant: 1,100+ templates, 15 countries, free preview.
Related MCP Servers
- AlicenseAqualityAmaintenanceFill standard legal agreement templates (NDAs, SAFEs, NVCA docs, employment, cloud terms) and produce DOCX files.3902 npm61Apache 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 gradedqualityCmaintenanceAnswer a few questions. Get clean, jurisdiction-aware privacy policies and terms of service.MIT
- FlicenseBqualityNot gradedmaintenanceEnables the generation of professional, jurisdiction-specific legal documents like privacy policies, terms of service, and cookie policies. It allows users to produce structured HTML legal content by providing specific parties, terms, and service configurations to an AI-driven tool.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.