Skip to main content
Glama

Server Details

Generate attorney-drafted NDAs, MSAs, DPAs, and more as PDF, ODT, or Markdown. No account required.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
wasauce/clauseai
GitHub Stars
1
Server Listing
ClauseAI

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct step in the workflow: list_templates (discover), get_template_fields (inspect schema), generate_document (produce output), and send_feedback (report issues). There is no overlap in purpose, and the descriptions explicitly state the correct sequence, preventing misselection.

Naming Consistency5/5

All four names follow a clean verb_noun snake_case pattern (list_templates, get_template_fields, generate_document, send_feedback). The convention is fully consistent and immediately readable.

Tool Count5/5

Four tools is well-scoped for a document generation workflow: discover, inspect, generate, plus an escape hatch for feedback. Each tool is necessary and none is redundant.

Completeness4/5

The core lifecycle (find template, read fields, generate document, report gaps) is fully covered, including a feedback path for missing templates/clauses. Minor gaps exist, such as no way to retrieve or list previously generated documents, but agents can work around these.

Available Tools

4 tools
generate_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, and download_url is the file in the requested format. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug from list_templates.
emailNoOptional contact email recorded with the generation.
formatNopdf, odt, or markdown. The download link uses this format.pdf
answersNoMap 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

ParametersJSON Schema
NameRequiredDescription
slugYes
titleYes
formatYes
answersYesAnswers as printed. ISO dates are written out in full.
filenameYes
markdownYesFilled template text for summarization. The file the user downloads is at download_url.
warningsNoAnswers that were accepted but look wrong. Fix and regenerate, or pass each warning on to the user.
download_urlYesAbsolute URL that downloads the rendered PDF, ODT, or Markdown file.
unfilled_fieldsNoField keys still shown as placeholders in the document. Tell the user these need completing before the document is used.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=false and idempotentHint=false already declared, the description adds substantial context: it warns against inventing clause text, states the result always contains markdown, explains what download_url points to, and discloses validation behavior (unknown keys, overlong values, invalid options are rejected with fix instructions). That is behavior well beyond the annotation set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the usage prerequisite before the output and validation details. Dense and mostly earning its place, though the output description slightly overlaps the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Prerequisite, invocation frequency, inputs, validation failure modes, and outputs are all covered; the output schema further covers return shape, so nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description rises above it by adding validation semantics for 'answers' (short values only, rejected keys/values) and pointing to get_template_fields for valid keys, plus confirming format drives the download link.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: fills published fields in a template and returns markdown plus a download link. The phrase 'after reading the field schema' ties it to list_templates/get_template_fields, so an agent can place it in the workflow without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear sequencing ('use this after reading the field schema') and an invocation constraint ('call it once per document'). It does not explicitly name the alternative siblings or state when not to call it, but the prerequisite context is concrete.

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 fieldsA
Read-onlyIdempotent
Inspect

Use this after choosing a template slug, to read the fill-in fields before generating a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug from list_templates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugYes
titleYes
fieldsYes
categoryYes
source_urlYes
descriptionYes
when_neededYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 templatesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
templatesYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoTemplate slug the feedback is about, if any.
emailNoOptional address for a reply. Only pass one the user gave you.
messageYesWhat you were trying to do and what was wrong or missing. Up to 4000 characters.
categoryNobug, missing_field, template_request, or other.other

Output Schema

ParametersJSON Schema
NameRequiredDescription
detailYes
statusYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, non-destructive, non-idempotent write with no open-world effects, and the description adds genuinely useful context the annotations lack: the message is routed to the ClauseAI operator and must be kept free of document text and PII. It stops short of stating limits such as the 4000-character cap or reply behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy. The triggering conditions are front-loaded and the privacy constraint closes as a clear prohibition; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the annotations plus full schema coverage carry the mechanical details. The description covers the remaining decision-relevant points (when to send, where it goes, what to omit), leaving only minor gaps like rate limits or expected turnaround.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema (slug, email, message length, category values). The description adds no syntax, format, or selection detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (sending a message) and resource (the ClauseAI operator), and lists the triggering situations. It is clearly distinct from generate_document and list_templates, though it does not name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates four concrete when-to-use conditions (missing template field, no fitting template, wrong tool result, general commentary) and adds an explicit exclusion: do not include document text or personal details. This is about as complete as routing guidance gets.

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. 4 tool updates
    • Changedgenerate_document6 fields changed
      • changedInput schema / properties / answers / description
        Previous 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."
      • changedInput schema / properties / format / description
        Previous value: -"pdf, odt, or markdown."New value: +"pdf, odt, or markdown. The download link uses this format."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / description
        Added value: +"Filled template text plus a link to the rendered file."
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "slug",
        +  "title",
        +  "format",
        +  "filename",
        +  "markdown",
        +  "download_url",
        +  "answers"
        +]
    • Changedget_template_fields5 fields changed
      • addedInput schema / properties / slug / description
        Added value: +"Template slug from list_templates."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / description
        Added value: +"Field schema for one template."
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "slug",
        +  "title",
        +  "category",
        +  "description",
        +  "when_needed",
        +  "source_url",
        +  "fields"
        +]
    • Changedlist_templates5 fields changed
      • addedOutput schema / description
        Added value: +"Templates the user can draft."
      • removedOutput schema / properties / result
        Removed value: -{
        -  "items": {
        -    "additionalProperties": true,
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / templates
        Added 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"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "result"
        -]New value: +[
        +  "templates"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Addedsend_feedback
  2. 3 tool updates
    • First observedgenerate_document
    • First observedget_template_fields
    • First observedlist_templates

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.