Skip to main content
Glama

Server Details

ClearPolicy is a document signing and compliance tracking tool for organizations. Once connected, your AI assistant can import documents, send signature requests, track who has and hasn't signed, and manage your contacts — all by prompt.

Ownership verified
Status
Healthy
Uptime
49.6% over 37 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 20 tools

Disambiguation4/5

Most tools target distinct resources/actions (documents, revisions, people, groups, signing requests), and descriptions distinguish similar pairs like get-signing-request (single person/status) vs list-signing-requests (bulk tracking). The one genuinely fuzzy pair is search-docs vs query-docs, which both read documentation and rely on prose to separate conceptual search from exact content lookup.

Naming Consistency4/5

18 of 20 tools follow a clean verb-noun-tool pattern (create-document-tool, list-people-tool, send-reminder-tool), which is predictable and scannable. The two documentation tools (query-docs, search-docs) break the pattern by dropping the -tool suffix and using a different verb style, a minor but noticeable inconsistency.

Tool Count4/5

At 20 tools the surface is at the heavy end of comfortable but each tool maps to a real operation across documents, revisions, people, groups, signing requests, and docs. Nothing looks redundant enough to cut, though a few could be consolidated (e.g. get-document vs get-document-revision).

Completeness3/5

Document lifecycle is well covered (create, revise, publish, get, list, send, cancel, get/list signing requests), but other entities have notable gaps: no create/update/delete group, no remove-person-from-group, and no update-person or delete-person. Agents will hit dead ends for group administration and person lifecycle management.

Available Tools

20 tools
add-person-to-group-toolAdd Person To Group ToolA
DestructiveIdempotent
Inspect

Add one person to a ClearPolicy group. When the group has automatic request issuance enabled, this assigns the group documents and sends the grouped attestation request notification for newly assigned published documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe ULID of the group to add the person to.
person_idYesThe ULID of the active person to add to the group.

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedYes
groupNo
personNo
attestation_requestsYes
new_assignments_countYes
attestation_requests_countYes
notification_batches_countYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations, the description discloses a meaningful side effect: when automatic request issuance is enabled, the tool assigns group documents and sends grouped attestation request notifications. This helps the agent anticipate downstream actions. It does not explicitly discuss idempotency or reversibility, but the annotations already provide readOnly, destructive, and idempotent hints, and the description does not contradict them.

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?

The description is two sentences and front-loads the core action before adding the conditional nuance. Every clause earns its place; there is no filler, restatement of the tool name, or redundant detail.

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 two-parameter membership mutation, the description provides the core action and the key automatic-request side effect, and an output schema exists to cover return values. It could mention prerequisites like whether the group must exist or how duplicates are handled, but those are partially implied by the annotations and the low complexity makes this a minor gap.

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?

The input schema already documents both parameters fully, including that group_id and person_id are ULIDs and that person_id refers to an active person. The description adds no additional parameter-level meaning beyond the schema, so it sits at the baseline for full schema coverage.

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?

The description opens with a specific verb and resource: 'Add one person to a ClearPolicy group.' It unambiguously states the primary operation and distinguishes it from sibling tools like create-person-tool or publish-document-revision-tool by naming the group-membership action. The additional conditional sentence clarifies what happens when automatic request issuance is enabled.

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

Usage Guidelines3/5

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

The first sentence implies the tool's use case: use this when you need to add a person to a group. However, the description never explicitly contrasts this tool with alternatives or states when not to use it. The conditional side-effect context is useful, but it is operational guidance rather than tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel-signing-request-toolCancel Signing Request ToolA
DestructiveIdempotent
Inspect

Cancel a pending document signing request. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe ULID of the signing request to cancel.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
successYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds 'This cannot be undone' which reinforces irreversibility but is somewhat redundant with destructiveHint. It also notes 'pending' scope, which is useful. Given the annotations cover the main behavioral profile, the description provides marginal extra context.

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 short sentences, front-loaded with the action and resource. No filler or redundancy; every word contributes.

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?

The tool is simple with a single parameter and an output schema. The description covers the essential purpose and the irreversible nature. It could mention what happens after cancellation or that only pending requests are eligible, but these are implied. Given the simplicity, it is sufficiently complete.

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 coverage is 100%, so the parameter 'request_id' is fully described in the schema as 'The ULID of the signing request to cancel.' The description adds no additional parameter information, which is acceptable given high schema coverage.

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?

The description states a specific action (cancel) on a specific resource (pending document signing request). It clearly distinguishes from siblings like send-signing-request-tool and list-signing-requests-tool. The verb and object are unambiguous.

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 implies when to use: for cancelling a pending request. It doesn't explicitly state when not to use or name alternatives, but the sibling set makes the context clear. Could be improved by noting it only applies to pending requests, though that is already mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-document-revision-toolCreate Document Revision ToolA
Idempotent
Inspect

Create a new draft revision for an existing document (for example after a version was published). If a draft already exists, returns that draft instead. File-based documents (PDF/Drive) cannot be edited as rich text via ChatGPT — use the web app.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryNoOptional short summary for the draft revision.
document_idYesThe ULID of the document.
body_markdownNoOptional Markdown body for the new draft. If omitted, copies the previous rich-text content when available.

Output Schema

ParametersJSON Schema
NameRequiredDescription
createdYes
revisionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate idempotentHint=true. Description adds key behavioral details: returns existing draft if one exists, and that file-based documents cannot be edited via ChatGPT. No contradiction with annotations.

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 concise sentences that front-load the core purpose and then add a critical caveat. Every sentence serves a clear purpose without redundancy.

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?

Given moderate complexity (3 parameters, output schema exists), description covers main behavior, idempotency, and a usage constraint. Could briefly mention return value but output schema likely handles that.

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 covers all parameters with descriptions (100% coverage). Description adds value by explaining that body_markdown 'copies the previous rich-text content when available' if omitted, which goes beyond schema.

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?

Description clearly states it creates a draft revision for an existing document, and distinguishes from siblings like publish-document-revision-tool by specifying 'draft'. It also notes idempotent behavior (returns existing draft), which differentiates from creation tools.

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?

Provides clear when-to-use context (after a version is published) and a specific when-not-to-use (file-based documents cannot be edited via ChatGPT, use web app). Does not explicitly name sibling alternatives but the guidance is still helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-document-toolCreate Document ToolAInspect

Create a new ClearPolicy document with a draft rich-text revision. Optionally set the initial body as Markdown. Does not publish — use publish-document-revision after the user reviews the draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDocument title as it will appear in ClearPolicy.
summaryNoOptional short summary of this draft revision (max 255 characters).
body_markdownNoOptional Markdown body for the first draft. Headings, paragraphs, lists, and links are supported.

Output Schema

ParametersJSON Schema
NameRequiredDescription
documentYes
revisionYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false, though not readOnlyHint (which is false, indicating mutation). The description doesn't contradict annotations and adds the behavioral context that the document is created as a draft, not published. However, it doesn't detail outcomes like what happens on revision creation or any unexpected side effects, but given annotations cover basic safety, this is adequate.

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 with efficient information: states the action, optional body format, and the exception to not publish. No fluff, key behavioral note front-loaded.

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?

Given the tool's moderate complexity (3 parameters, output schema present), the description covers the essential usage and behavioral constraints. The output schema is richer, so the description doesn't need to explain return values. It adequately informs the agent on how to invoke correctly, with minor gaps on revision details that are not critical.

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 parameters are already documented in the schema. The description adds context that body_markdown is Markdown for the first draft, which slightly enhances the schema's generic wording, but doesn't go beyond that. Baseline 3 is appropriate as the schema does the heavy lifting.

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?

The description clearly states the tool's specific purpose: creating a new ClearPolicy document with a draft rich-text revision, and optionally setting the initial body as Markdown. It distinguishes this action from publishing, which is a separate tool. This verb+resource+scope combination is precise and unambiguous.

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?

The description explicitly notes that this tool does not publish, and instructs to use publish-document-revision after user review. This provides clear when-to-use and when-not-to-use guidance, routing to the correct sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-person-toolCreate Person ToolAInspect

Add a new person to the current ClearPolicy organization so they can be assigned documents, added to groups, and sent signature requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the person. Must be unique within the organization.
phoneNoPhone number in international format (e.g. +12125551234).
last_nameYesFamily name of the person.
first_nameNoGiven name of the person.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
emailYes
phoneNo
app_urlYes
last_nameYes
first_nameNo
resource_uriYes
groups_resource_uriYes
documents_resource_uriYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already indicate that this is not a read-only operation Alertthe description confirms it creates a person and adds context about subsequent actions like assigning documents and adding to groups. However, it does not disclose potential failure behaviors such as duplicate email handling or required permissions. This is acceptable but not especially rich.

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?

The description is a single, focused sentence that leads with the core action and target, then adds a brief purpose clause. There is no redundant information or boilerplate.

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 create operation, the description covers the action, target, scope, and why the new person is useful. The output schema and parameter schemas fill in the remaining details, though it could optionally mention uniqueness or validation behavior.

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?

The input schema provides 100% description coverage for the parameters, so the description does not need to restate them. It adds no extra parameter-level detail, which is fine, but the description itself contributes nothing beyond the schema.

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?

The description starts with a clear action, 'Add a new person', specifies the target scope, 'to the current ClearPolicy organization', and explains the downstream uses. This differentiates it from sibling tools like add-person-to-group-tool, which handles a different operation entirely.

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?

The description gives clear context for when this tool should be used: when creating a new person in the current organization. It does not explicitly state exclusions, such as 'use add-person-to-group-tool to add an existing person to a group,' but the wording makes the primary use case unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-document-revision-toolGet Document Revision ToolA
Read-onlyIdempotent
Inspect

Get a document revision including its body as Markdown/text so you can review or edit a draft. Use the latest_draft_revision_id or latest_published_revision_id from create-document / get-document.

ParametersJSON Schema
NameRequiredDescriptionDefault
revision_idYesThe ULID of the document revision.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
app_urlYes
summaryNo
edit_urlNo
is_emptyYes
document_idYes
source_typeYes
content_textYes
published_atNo
resource_uriYes
document_nameNo
content_markdownYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds the return format (body as Markdown/text) beyond the annotations (readOnlyHint, idempotentHint). It does not detail error states or authorization needs but is adequate given the safe read nature.

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 concise sentences with no waste. First sentence states purpose and output, second provides usage tip. Front-loaded and efficient.

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?

Given the existence of an output schema, the description covers core usage and output format adequately. It lacks discussion of potential errors but is complete for a read-only tool.

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% (revision_id described as ULID). The description adds value by linking the parameter to IDs from other tools, enhancing understanding of its origin.

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?

The description clearly states the tool retrieves a document revision with its body as Markdown/text for reviewing or editing. It distinguishes itself from sibling tools like create-document-revision-tool and update-document-revision-tool.

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?

The description provides explicit guidance on when to use (to review/edit a draft) and where to get the revision IDs (from create-document or get-document). It lacks explicit when-not-to-use instructions but gives sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-document-toolGet Document ToolA
Read-onlyIdempotent
Inspect

Get details of a document, including how many people have signed it and how many haven't.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYesThe ULID of the document.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
app_urlYes
archivedYes
edit_urlNo
auto_renewNo
resource_uriYes
attestation_countsNo
current_version_idNo
renewal_interval_daysNo
has_published_revisionYes
default_attestation_typeNo
current_version_published_atNo
latest_published_revision_pdf_uriNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already disclose readOnly, idempotent, and non-destructive behavior, so the description only needs to add extra context. It does add the useful detail that the response includes signed/unsigned counts, but doesn't go beyond that. No contradiction with annotations.

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, front-loaded sentence that states the action and key output detail without filler. Every word earns its place.

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?

Simple one-parameter read tool; annotations already disclose safety, and the output schema covers return value details. No missing context needed to invoke it correctly.

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?

The single parameter is fully documented in the schema as a ULID; description adds no additional semantic detail. With 100% schema coverage, the baseline of 3 is appropriate.

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 verb and resource ('Get details of a document') and adds concrete differentiating information about signed/unsigned counts. It is clear that this is the document-level read tool, though it doesn't explicitly distinguish itself from get-document-revision-tool or the search/query siblings.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like list-documents-tool, query-docs, or search-docs. The intended context is inferable from the name and one-liner, but the description never explicitly states selection criteria or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-group-toolGet Group ToolA
Read-onlyIdempotent
Inspect

Get details for one ClearPolicy group, including counts and resource URIs for its members and documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYesThe ULID of the group to retrieve.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
sourceNo
app_urlYes
source_idNo
created_atNo
updated_atNo
descriptionNo
resource_uriYes
last_synced_atNo
documents_countYes
recipient_messageNo
active_people_countYes
members_resource_uriYes
compliant_people_countYes
documents_resource_uriYes
automatic_request_issuance_enabledYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds useful context about return content (counts, resource URIs) beyond annotations, but does not describe other behavioral traits like pagination or authentication.

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?

Single sentence, front-loaded with key information, no wasted words.

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?

Given single required parameter, full annotations, and presence of output schema, description sufficiently covers purpose and return details (counts, URIs).

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 coverage is 100% and description does not add meaning beyond the schema's parameter description ('The ULID of the group to retrieve'). Baseline 3 applies.

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?

Description clearly states verb 'Get', resource 'ClearPolicy group', and specifies inclusions ('counts and resource URIs for its members and documents'). Distinct from sibling tools like list-groups-tool (listing all) and get-person-tool (different resource).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., list-groups-tool). Usage is implied by name and description but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-person-toolGet Person ToolA
Read-onlyIdempotent
Inspect

Get a person's profile and see which documents they have or haven't signed.

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYesThe ULID of the person.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
emailYes
phoneNo
app_urlYes
archivedYes
last_nameYes
first_nameNo
resource_uriYes
document_countsNo
groups_resource_uriYes
documents_resource_uriYes

TDQS

A4/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, covering the safety profile. The description adds that it shows which documents are signed or not, which is useful outcome context, but does not go beyond that. Given annotations cover the core behavior, this is adequate but not extensive.

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?

The description is a single sentence with no redundant words. It is front-loaded with the core action and then adds the outcome detail, making it highly efficient and easy to scan.

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 one-parameter tool with an output schema and safety annotations, the description is sufficient. It states what it does and what information is returned. It could explicitly mention when to use it over list-people-tool, but the lack is minor given the clarity of purpose. Overall, it is complete for an agent to call correctly.

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% and describes person_id as 'The ULID of the person.' The description itself does not add additional parameter context, so it relies fully on the schema. This is the baseline 3 since the schema does the heavy lifting.

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?

The description clearly states the verb 'Get' and resource 'person's profile', and specifies the additional behavior of showing which documents they have or haven't signed. This distinguishes it from sibling tools like get-document-tool and get-group-tool, making its purpose unambiguous.

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?

The description implies usage for retrieving a single person and their signing status, which is distinct from list-people-tool (for multiple people) and get-document-tool (for document details). However, it does not explicitly state when to use this versus alternatives, so guidance is clear by implication but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-signing-request-toolGet Signing Request ToolA
Read-onlyIdempotent
Inspect

Check whether a specific person has signed a document, and when.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe ULID of the signing request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
personNo
statusYes
sent_atNo
documentNo
viewed_atNo
expired_atNo
expires_atNo
attested_atNo
canceled_atNo
resource_uriYes
attestation_typeNo

TDQS

A4.1/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, covering the safety profile. The description adds that the tool returns whether a signature occurred and when, but it does not disclose additional behavioral details such as handling of missing request IDs or response shape. This is adequate given the strong annotation coverage.

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?

The description is a single, focused sentence with no filler. It immediately states what the tool does, making it highly efficient and easy to parse.

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?

With only one parameter, clear annotations, and an output schema present, the description is complete for this simple read-only tool. The description need not explain return values because the output schema covers that, and no other context is missing.

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?

The schema provides 100% description coverage for the single parameter (request_id as 'The ULID of the signing request'). The description does not add additional meaning beyond the schema, so the baseline score of 3 applies.

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?

The description clearly states a specific verb ('Check') and a precise resource: whether a specific person has signed a document and when. This distinguishes it from siblings like list-signing-requests-tool or send-signing-request-tool by focusing on the signing status of a person rather than listing or sending requests.

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?

The description implies a clear usage context: use this tool when you need to verify a person's signature status and timestamp. It does not explicitly mention exclusions or alternatives, but the intended use case is evident from the phrasing, matching 'clear context, no exclusions'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-documents-toolList Documents ToolA
Read-onlyIdempotent
Inspect

Find documents available to send for electronic signature. Use this to browse what documents the organization has ready to send.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter documents by name (partial match, case-insensitive).
include_archivedNoInclude archived documents in the results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
documentsYes

TDQS

A4/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, covering the safety profile. The description adds context about the document scope ('available to send for electronic signature') but does not disclose behaviors like pagination, sorting, or the effect of the include_archived flag. With annotations covering safety, this is acceptable but minimal.

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 concise sentences with no wasted words. The core purpose is front-loaded, and the usage instruction follows naturally. Every word 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?

Given the presence of an output schema and the simplicity of the tool (two optional parameters), the description is nearly complete. It covers what the tool does and when to use it. It does not mention the optional filters, but those are in the schema. Minor gap: it doesn't explicitly state that it lists all documents when no filters are provided, but that is implied by 'browse'. A 4 is fair.

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 both parameters (name and include_archived) are already documented in the input schema. The description adds no additional parameter semantics, such as how filters combine or the meaning of 'available to send' relative to the filters. Baseline 3 is appropriate when the schema fully documents the parameters.

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?

The description states a specific verb ('Find') and resource ('documents available to send for electronic signature'), clearly distinguishing it from sibling tools like search-docs or query-docs. The phrase 'available to send' adds scope beyond just listing all documents, making the purpose unambiguous.

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 explicitly says 'Use this to browse what documents the organization has ready to send,' giving a clear usage context. However, it does not mention alternatives or when not to use it (e.g., for searching archived docs or other collections), which would strengthen differentiation from siblings like search-docs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-groups-toolList Groups ToolA
Read-onlyIdempotent
Inspect

Find groups in the current ClearPolicy organization. Use this when an MCP client does not support resources or when the user asks to browse groups.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter groups by name (partial match, case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
groupsYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds no further behavioral context such as rate limits, authentication, or result format. With annotations covering safety, the description meets minimum expectations.

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?

The description is two sentences long (22 words), front-loads the core action ('Find groups'), and contains no unnecessary words. 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?

Given the tool is a simple read-only list with one optional filter, and an output schema exists (not shown but noted), the description is largely sufficient. It could mention that the result is a list of groups and any pagination, but the current text is adequate for the tool's simplicity.

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?

The input schema already fully describes the single optional parameter 'name' with its filtering behavior (partial match, case-insensitive). The description does not add any extra meaning to the parameter, achieving the baseline for 100% schema coverage.

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?

The description clearly states what the tool does ('Find groups in the current ClearPolicy organization') and provides specific usage scenarios ('when an MCP client does not support resources or when the user asks to browse groups'), which distinguishes it from sibling tools like get-group-tool.

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?

The description explicitly specifies when to use the tool ('when an MCP client does not support resources') and gives a user-driven reason ('or when the user asks to browse groups'). It does not explicitly say when not to use it, but the provided context is helpful for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-people-toolList People ToolA
Read-onlyIdempotent
Inspect

Find people in the organization who can be sent documents for electronic signature. Search by name or email.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by name (partial match, case-insensitive).
emailNoFilter by email address (partial match).
include_archivedNoInclude archived people in the results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
peopleYes

TDQS

A4/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 the safety profile is covered. The description adds the behavioral context that results are people who can receive e-signature documents, and that search is by name or email. It doesn't disclose details like pagination, result limits, or whether archived people are excluded by default, but the schema covers include_archived. No contradiction with annotations.

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 with no waste. The primary purpose is front-loaded, and the search capability is stated concisely. Every word 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 read-only list/search tool with a full output schema and 100% schema parameter coverage, the description is largely complete. It could explicitly mention that archived people are excluded by default, but the schema already states that. The e-signature context adds useful framing. Minor gap: no mention of result ordering or pagination, but not critical for this tool type.

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 the schema already documents all three parameters (name, email, include_archived) with their meanings. The description adds the high-level purpose (finding e-signature recipients) but doesn't add parameter-specific details beyond the schema. Baseline 3 is appropriate.

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?

The description clearly states the tool's purpose: finding people in the organization who can be sent documents for electronic signature, with search by name or email. This distinguishes it from sibling tools like list-groups-tool or get-person-tool, and the context of e-signature recipients adds specific value.

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?

The description implies when to use this tool: when you need to find people to send documents for signature. It doesn't explicitly state when not to use it or name alternatives, but the e-signature context and search-by-name/email guidance provide clear usage context. Sibling tools like get-person-tool or create-person-tool are implicitly different.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-signing-requests-toolList Signing Requests ToolB
Read-onlyIdempotent
Inspect

Check who has signed a document and who hasn't. Filter by document, person, or status (pending, signed, expired, etc.) to track compliance.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status: created, sent, viewed, attested, expired, or canceled.
person_idNoFilter by person ULID.
document_idNoFilter by document ULID.

Output Schema

ParametersJSON Schema
NameRequiredDescription
requestsYes

TDQS

B3.4/5.0
Behavior2/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 the description's role is to add behavioral context. It fails by listing statuses 'pending' and 'signed' that do not exist in the schema enum (which includes created, sent, viewed, attested, expired, canceled, bounced, failed, complained, suppressed). This misleads the agent about valid filter values, compromising behavioral transparency.

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?

The description is a single, front-loaded sentence that captures the core action and filtering options. It is concise and to the point. However, the inaccuracy in the status examples ('pending, signed') slightly detracts from clarity, though the structure itself is sound.

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

Completeness3/5

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

The tool has an output schema (as indicated), so return values are not the description's responsibility. The description adequately covers what it does and its filters, but the status terminology mismatch and the absence of any note about all parameters being optional (though in schema) leave a minor completeness gap. It is sufficient for a simple read-only list operation but not fully precise.

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 coverage is 100%, so each parameter already has a description. The tool description restates the filtering dimensions (document, person, status) but adds no new meaning beyond the schema. It does not clarify the enum mismatch, so it provides no additional semantic value. Baseline 3 is appropriate.

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?

The description states a clear purpose: checking who has signed a document and who hasn't, with filters for document, person, or status. This is a specific verb-resource combination ('list signing requests') that distinguishes it from the singular 'get-signing-request-tool' and other signing-related tools. The phrase 'track compliance' adds context without ambiguity.

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

Usage Guidelines3/5

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

The description implies when to use it (for compliance tracking and filtering) but does not explicitly mention when NOT to use it or name alternatives like get-signing-request-tool for details, send-signing-request-tool for creation, or cancel-signing-request-tool. The guidance is implicit rather than explicit, leaving the agent to infer the boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish-document-revision-toolPublish Document Revision ToolA
Destructive
Inspect

Publish a draft document revision so it can be sent for electronic signature. Generates a PDF and document hash. Confirm with the user before publishing. After publishing, use send-signing-request to distribute it.

ParametersJSON Schema
NameRequiredDescriptionDefault
revision_idYesThe ULID of the draft revision to publish.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
app_urlYes
summaryNo
edit_urlNo
is_emptyYes
document_idYes
source_typeYes
content_textYes
published_atNo
resource_uriYes
document_nameNo
content_markdownYes
latest_published_revision_pdf_uriNo

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses concrete side effects: it generates a PDF and a document hash)Skip confirmation step, and positions publishing as a step before signing. No contradiction with the read/write/destructive hints.

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?

Three short sentences, front-loaded with the core action, then effects, then required confirmation and next step. No filler or repetition of the schema.

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 a single well-documented parameter, the destructive nature is annotated, and the description covers purpose, side effects, and the follow-up action. It does not describe prerequisites or state constraints for the revision, but the overall workflow is sufficiently complete.

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?

The schema already documents revision_id as 'The ULID of the draft revision to publish' with 100% coverage. The description adds no additional parameter-level nuance, so it stays at the baseline.

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?

The description names a specific action ('Publish a draft document revision'), the exact resource ('document revision'), and the purpose ('so it can be sent for electronic signature'). It clearly differentiates this publishing step from related siblings such as send-signing-request and update-document-revision.

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 useful procedural guidance: confirm with the user before publishing an irreversible actionaine and use send-signing-request afterward. It does not spell out when to avoid publishing (e.g., wrong revision state), but the workflow direction is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query-docsQuery Docs Filesystem ToolA
Read-onlyIdempotent
Inspect

Read or search ClearPolicy documentation pages via a sandboxed virtual filesystem (rg, cat, head, tree, ls, etc.). Prefer search-docs for conceptual questions; use this when you need exact page content, keyword/regex matches, or docs structure. Paths are documentation pages (e.g. /guides/reminders.mdx), not the customer organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesRead-only shell-like command against the docs filesystem (e.g. `rg -il "reminder" /`, `head -80 /integrations/mcp.mdx`, `tree / -L 2`).

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYesCommand output from the documentation filesystem.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive; the description adds operational context: commands run inside a sandboxed virtual filesystem (rg, cat, head, tree, ls) and paths are documentation pages, not customer org data. It does not mention what output looks like, but the behavior it discloses goes beyond the annotations without contradicting them.

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 tight sentences. First names the tool action and mechanism; second gives usage guidance. No fluff.

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 single-parameter, read-only tool with an output schema and clear sibling distinction, this covers the essential selection and invocation guidance. It gives command examples GUIDES? Actually it gives commands in description: rg, cat, head, tree, ls. It addresses path namespace. Complete.

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 already fully describes the command parameter with examples Tags: 100% coverage, baseline 3. Description reinforces legal commands and path scope (`/guides/reminders.mdx`), adding beyond schema.

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?

The description opens with a specific action ('Read or search') and a clear resource ('ClearPolicy documentation pages') plus the mechanism. It explicitly differentiates itself from search-docs, telling the agent exactly when to use this tool vs. its sibling, which satisfies sibling discrimination.

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?

States 'Prefer search-docs for conceptual questions; use this when you need exact page content, keyword/regex matches, or docs structure.' This is explicit when-to-use and when-not-to guidance with a named alternative. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search-docsSearch Docs ToolA
Read-onlyIdempotent
Inspect

Search ClearPolicy customer documentation for product how-tos, guides, and API reference. Use this for "how do I…" questions (reminders, Planning Center, groups, billing, etc.). Do not use this for organization-specific data — use list/get tools instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language search query (e.g. "how to send reminders", "Planning Center sync").
languageNoOptional docs language code (e.g. 'en', 'es', 'fr', 'de'). Defaults to English.

Output Schema

ParametersJSON Schema
NameRequiredDescription
contentYesSearch hits with titles, snippets, and documentation links.

TDQS

A4.5/5.0
Behavior4/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 the safety profile is clear. The description adds useful behavioral context by clarifying that the tool searches documentation rather than organization data, and reinforces the read-only nature by pointing to list/get tools for data retrieval. It doesn't contradict annotations.

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?

The description is two sentences with zero filler. The first sentence states the purpose and scope; the second gives usage guidelines and exclusions. It's front-loaded and efficiently uses every word.

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 search tool with only two parameters, full schema coverage, and an output schema present, the description covers the essential usage context (when to use, when not to use). It doesn't need to explain return values (output schema exists) or parameter details (schema covers them). Nothing essential is missing.

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 coverage is 100% and both parameters are well-described in the schema (query with examples, language with code examples). The description text itself doesn't add extra parameter semantics beyond what the schema provides, which is acceptable given the high coverage. The baseline of 3 is appropriate.

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?

The description states a clear verb (Search) and resource (ClearPolicy customer documentation) with specific content types (how-tos, guides, API reference). It also differentiates from siblings by explicitly excluding organization-specific data, which sets it apart from list/get tools. The phrase 'Use this for "how do I…" questions' further pins down its purpose.

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?

The description provides explicit when-to-use guidance ('how do I…' questions with examples) and when-not-to-use guidance ('Do not use this for organization-specific data — use list/get tools instead'). It names the alternative category (list/get tools) even though it doesn't name specific siblings, which is sufficient for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send-reminder-toolSend Reminder ToolA
Destructive
Inspect

Nudge someone who hasn't signed a document yet by sending them a reminder email.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe ULID of the signing request to send a reminder for.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
successYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a non-read, non-idempotent side-effecting operation, and the description usefully adds that the concrete effect is a reminder email. It does not explain the destructive side effect or whether repeated calls send duplicate reminders, but annotations carry much of this burden.

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?

One sentence with no filler, front-loaded with the action, target, and condition. It is economical while still conveying the key distinction from the initial signing-request tool.

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 single-parameter tool with full schema coverage, an output schema, and meaningful annotations, the description is nearly complete. The main omission is not explaining duplicate-send or destructive behavior, but those concerns are partially covered by the provided annotations.

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?

The input schema fully describes request_id as 'The ULID of the signing request to send a reminder for,' so schema coverage is 100%. The description reinforces the connection to a signing request but does not add meaning beyond what the schema already provides.

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?

The description clearly states the action—'sending them a reminder email'—and the target condition, 'someone who hasn't signed a document yet.' This makes it easy to distinguish from the sibling send-signing-request-tool, which would send the initial request rather than a follow-up reminder.

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?

The phrase 'someone who hasn't signed a document yet' gives a clear contextual trigger for when to use the tool. However, it does not explicitly name alternatives or state when not to use it, so the guidance is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send-signing-request-toolSend Signing Request ToolA
Destructive
Inspect

Send a document to one or more people for electronic signature. Use this when a user wants their team to sign a policy, agreement, or compliance document.

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idsYesArray of person ULIDs to send the request to.
document_idYesThe ULID of the document to send.

Output Schema

ParametersJSON Schema
NameRequiredDescription
requestsYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the safety profile is known. The description adds that the tool dispatches a document for signature to multiple people, but it does not disclose side effects like creating a signing request, notifying recipients, or whether repeated sends create duplicates. No contradiction with annotations exists.

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?

The description is only two sentences, front-loads the core action, and contains no filler. Every sentence contributes either the operation or the intended use case.

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 two-parameter tool with full schema coverage, an output schema, and relevant annotations, this description is mostly sufficient. It clearly identifies what to send and to whom, though it could strengthen completeness by noting the relationship to send-reminder-tool and cancel-signing-request-tool.

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%, and both document_id and person_ids already have clear descriptions in the schema. The description adds no new parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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 uses a clear verb and resource: it sends a document to one or more people for electronic signature, and it gives a concrete use case ('team to sign a policy, agreement, or compliance document'). It does not explicitly differentiate itself from sibling tools like send-reminder-tool or cancel-signing-request-tool, so it falls short of a 5.

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?

The description provides an explicit 'Use this when...' clause, which gives the agent a clear trigger condition. However, it does not mention when not to use it or point to alternatives such as send-reminder-tool for existing requests or cancel-signing-request-tool for cancellations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-document-revision-toolUpdate Document Revision ToolA
DestructiveIdempotent
Inspect

Update a draft document revision body (Markdown) and/or summary. Published revisions cannot be edited — create a new draft revision first. Prefer rich-text drafts created via create-document.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryNoOptional short summary of this draft (max 255 characters). Pass empty string to clear.
revision_idYesThe ULID of the draft document revision to update.
body_markdownNoFull Markdown body to store (replaces existing content). Required unless only updating summary.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
statusYes
app_urlYes
summaryNo
edit_urlNo
is_emptyYes
document_idYes
source_typeYes
content_textYes
published_atNo
resource_uriYes
document_nameNo
content_markdownYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true, but the description adds important context: it can only modify draft revisions, not published ones, and it replaces the body content. It also explains that passing empty summary clears it. This goes beyond what annotations provide. The idempotentHint is consistent with the replace semantics of body_markdown, adding credibility.

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?

The description is compact, consisting of two sentences plus a tip. It front-loads the core purpose and immediately notes the critical constraint about published revisions. The recommendation for rich-text drafts is a useful addition without fluff. It could be slightly more structured but is efficient.

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?

Given that there is an output schema (though not detailed in context signals), the description does not need to explain return values. For a mutation tool with this complexity, it covers the key constraints (draft-only, body replacement, summary clearing) and usage guidance. It is complete for an agent to decide when to invoke it.

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 the schema itself already documents each parameter. The description clarifies that body_markdown is required unless only updating summary, and that summary can be cleared with empty string. However, it doesn't fully specify the side effects on existing attributes beyond body replacement, though the schema already covers that. The baseline of 3 is appropriate.

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?

The description clearly states the specific verb 'update' and the resource (a draft document revision body and/or summary). It also differentiates itself from published revisions and mentions an alternative tool (create-document) for rich-text drafts. This distinguishes it from sister tools like publish-document-revision-tool.

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?

The description explicitly states when to use this tool: for updating draft revisions only, and that published revisions cannot be edited and instead require creating a new draft first. It also explicitly recommends prefer rich-text drafts via create-document, giving clear alternatives for other scenarios. This is complete guidance.

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. 12 tool updates
    • Addedadd-person-to-group-tool
    • Addedcancel-signing-request-tool
    • Changedcreate-document-tool1 field changed
      • removedInput schema / properties / requires_signature
        Removed value: -{
        -  "description": "If true (default), recipients type their name as a signature. If false, a simple acknowledgment is used.",
        -  "type": "boolean"
        -}
    • Addedcreate-person-tool
    • Changedget-document-tool1 field changed
      • changedOutput schema / properties / default_attestation_type / enum
        Previous value: -[
        -  "acknowledgment",
        -  "signature"
        -]New value: +[
        +  "signature",
        +  "acknowledgment"
        +]
    • Changedget-person-tool3 fields changed
      • addedOutput schema / properties / first_name
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / last_name
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "archived",
        -  "resource_uri",
        -  "app_url",
        -  "documents_resource_uri",
        -  "groups_resource_uri"
        -]New value: +[
        +  "id",
        +  "last_name",
        +  "name",
        +  "email",
        +  "archived",
        +  "resource_uri",
        +  "app_url",
        +  "documents_resource_uri",
        +  "groups_resource_uri"
        +]
    • Changedget-signing-request-tool1 field changed
      • changedOutput schema / properties / attestation_type / enum
        Previous value: -[
        -  "acknowledgment",
        -  "signature"
        -]New value: +[
        +  "signature",
        +  "acknowledgment"
        +]
    • Changedlist-documents-tool1 field changed
      • changedOutput schema / properties / documents / items / properties / default_attestation_type / enum
        Previous value: -[
        -  "acknowledgment",
        -  "signature"
        -]New value: +[
        +  "signature",
        +  "acknowledgment"
        +]
    • Changedlist-people-tool3 fields changed
      • addedOutput schema / properties / people / items / properties / first_name
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / people / items / properties / last_name
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / people / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "archived",
        -  "resource_uri",
        -  "app_url",
        -  "documents_resource_uri",
        -  "groups_resource_uri"
        -]New value: +[
        +  "id",
        +  "last_name",
        +  "name",
        +  "email",
        +  "archived",
        +  "resource_uri",
        +  "app_url",
        +  "documents_resource_uri",
        +  "groups_resource_uri"
        +]
    • Changedlist-signing-requests-tool1 field changed
      • changedOutput schema / properties / requests / items / properties / attestation_type / enum
        Previous value: -[
        -  "acknowledgment",
        -  "signature"
        -]New value: +[
        +  "signature",
        +  "acknowledgment"
        +]
    • Addedsend-reminder-tool
    • Addedsend-signing-request-tool
  2. 18 tool updates
    • Removedadd-person-to-group-tool
    • Removedcancel-signing-request-tool
    • Addedcreate-document-revision-tool
    • Addedcreate-document-tool
    • Removedcreate-person-tool
    • Addedget-document-revision-tool
    • Changedget-document-tool4 fields changed
      • addedOutput schema / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / edit_url
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / resource_uri
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "has_published_revision",
        -  "archived"
        -]New value: +[
        +  "id",
        +  "name",
        +  "has_published_revision",
        +  "archived",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedget-group-tool2 fields changed
      • addedOutput schema / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "automatic_request_issuance_enabled",
        -  "active_people_count",
        -  "compliant_people_count",
        -  "documents_count",
        -  "resource_uri",
        -  "members_resource_uri",
        -  "documents_resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "automatic_request_issuance_enabled",
        +  "active_people_count",
        +  "compliant_people_count",
        +  "documents_count",
        +  "resource_uri",
        +  "app_url",
        +  "members_resource_uri",
        +  "documents_resource_uri"
        +]
    • Changedget-person-tool5 fields changed
      • addedOutput schema / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / documents_resource_uri
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / groups_resource_uri
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / resource_uri
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "archived"
        -]New value: +[
        +  "id",
        +  "name",
        +  "email",
        +  "archived",
        +  "resource_uri",
        +  "app_url",
        +  "documents_resource_uri",
        +  "groups_resource_uri"
        +]
    • Changedget-signing-request-tool4 fields changed
      • addedOutput schema / properties / document / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / document / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "resource_uri",
        +  "app_url"
        +]
      • addedOutput schema / properties / person / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / person / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "email",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedlist-documents-tool3 fields changed
      • addedOutput schema / properties / documents / items / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / documents / items / properties / edit_url
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / documents / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "has_published_revision",
        -  "archived",
        -  "resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "has_published_revision",
        +  "archived",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedlist-groups-tool2 fields changed
      • addedOutput schema / properties / groups / items / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / groups / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "automatic_request_issuance_enabled",
        -  "active_people_count",
        -  "compliant_people_count",
        -  "documents_count",
        -  "resource_uri",
        -  "members_resource_uri",
        -  "documents_resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "automatic_request_issuance_enabled",
        +  "active_people_count",
        +  "compliant_people_count",
        +  "documents_count",
        +  "resource_uri",
        +  "app_url",
        +  "members_resource_uri",
        +  "documents_resource_uri"
        +]
    • Changedlist-people-tool2 fields changed
      • addedOutput schema / properties / people / items / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / people / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "archived",
        -  "resource_uri",
        -  "documents_resource_uri",
        -  "groups_resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "email",
        +  "archived",
        +  "resource_uri",
        +  "app_url",
        +  "documents_resource_uri",
        +  "groups_resource_uri"
        +]
    • Changedlist-signing-requests-tool4 fields changed
      • addedOutput schema / properties / requests / items / properties / document / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / requests / items / properties / document / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "resource_uri",
        +  "app_url"
        +]
      • addedOutput schema / properties / requests / items / properties / person / properties / app_url
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / requests / items / properties / person / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "email",
        -  "resource_uri"
        -]New value: +[
        +  "id",
        +  "name",
        +  "email",
        +  "resource_uri",
        +  "app_url"
        +]
    • Addedpublish-document-revision-tool
    • Removedsend-reminder-tool
    • Removedsend-signing-request-tool
    • Addedupdate-document-revision-tool
  3. 2 tool updates
    • Addedquery-docs
    • Addedsearch-docs
  4. 2 tool updates
    • Changedget-signing-request-tool1 field changed
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "created",
        -  "sent",
        -  "viewed",
        -  "attested",
        -  "expired",
        -  "canceled",
        -  "bounced",
        -  "failed",
        -  "complained"
        -]New value: +[
        +  "created",
        +  "sent",
        +  "viewed",
        +  "attested",
        +  "expired",
        +  "canceled",
        +  "bounced",
        +  "failed",
        +  "complained",
        +  "suppressed"
        +]
    • Changedlist-signing-requests-tool2 fields changed
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "created",
        -  "sent",
        -  "viewed",
        -  "attested",
        -  "expired",
        -  "canceled",
        -  "bounced",
        -  "failed",
        -  "complained"
        -]New value: +[
        +  "created",
        +  "sent",
        +  "viewed",
        +  "attested",
        +  "expired",
        +  "canceled",
        +  "bounced",
        +  "failed",
        +  "complained",
        +  "suppressed"
        +]
      • changedOutput schema / properties / requests / items / properties / status / enum
        Previous value: -[
        -  "created",
        -  "sent",
        -  "viewed",
        -  "attested",
        -  "expired",
        -  "canceled",
        -  "bounced",
        -  "failed",
        -  "complained"
        -]New value: +[
        +  "created",
        +  "sent",
        +  "viewed",
        +  "attested",
        +  "expired",
        +  "canceled",
        +  "bounced",
        +  "failed",
        +  "complained",
        +  "suppressed"
        +]
  5. 13 tool updates
    • Changedadd-person-to-group-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "added": {
        +      "type": "boolean"
        +    },
        +    "attestation_requests": {
        +      "items": {
        +        "properties": {
        +          "document_id": {
        +            "type": "string"
        +          },
        +          "document_revision_id": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "requested_attestation_type": {
        +            "enum": [
        +              "acknowledgment",
        +              "signature"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "document_id",
        +          "document_revision_id",
        +          "requested_attestation_type"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "attestation_requests_count": {
        +      "type": "integer"
        +    },
        +    "group": {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name"
        +      ],
        +      "type": "object"
        +    },
        +    "new_assignments_count": {
        +      "type": "integer"
        +    },
        +    "notification_batches_count": {
        +      "type": "integer"
        +    },
        +    "person": {
        +      "properties": {
        +        "email": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "email"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "added",
        +    "new_assignments_count",
        +    "attestation_requests_count",
        +    "notification_batches_count",
        +    "attestation_requests"
        +  ],
        +  "type": "object"
        +}
    • Changedcancel-signing-request-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "success",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate-person-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "documents_resource_uri": {
        +      "type": "string"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "groups_resource_uri": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "phone": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "resource_uri": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "email",
        +    "resource_uri",
        +    "documents_resource_uri",
        +    "groups_resource_uri"
        +  ],
        +  "type": "object"
        +}
    • Changedget-document-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "archived": {
        +      "type": "boolean"
        +    },
        +    "attestation_counts": {
        +      "properties": {
        +        "attested_latest": {
        +          "type": "integer"
        +        },
        +        "attested_outdated": {
        +          "type": "integer"
        +        },
        +        "pending_attested": {
        +          "type": "integer"
        +        },
        +        "renewal_due": {
        +          "type": "integer"
        +        },
        +        "total": {
        +          "type": "integer"
        +        },
        +        "unrequested": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "auto_renew": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "current_version_id": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "current_version_published_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "default_attestation_type": {
        +      "enum": [
        +        "acknowledgment",
        +        "signature"
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "has_published_revision": {
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "latest_published_revision_pdf_uri": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "renewal_interval_days": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "has_published_revision",
        +    "archived"
        +  ],
        +  "type": "object"
        +}
    • Changedget-group-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "active_people_count": {
        +      "type": "integer"
        +    },
        +    "automatic_request_issuance_enabled": {
        +      "type": "boolean"
        +    },
        +    "compliant_people_count": {
        +      "type": "integer"
        +    },
        +    "created_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "documents_count": {
        +      "type": "integer"
        +    },
        +    "documents_resource_uri": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "last_synced_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "members_resource_uri": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "recipient_message": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "resource_uri": {
        +      "type": "string"
        +    },
        +    "source": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source_id": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "updated_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "automatic_request_issuance_enabled",
        +    "active_people_count",
        +    "compliant_people_count",
        +    "documents_count",
        +    "resource_uri",
        +    "members_resource_uri",
        +    "documents_resource_uri"
        +  ],
        +  "type": "object"
        +}
    • Changedget-person-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "archived": {
        +      "type": "boolean"
        +    },
        +    "document_counts": {
        +      "properties": {
        +        "attested_latest": {
        +          "type": "integer"
        +        },
        +        "attested_outdated": {
        +          "type": "integer"
        +        },
        +        "pending_attested": {
        +          "type": "integer"
        +        },
        +        "renewal_due": {
        +          "type": "integer"
        +        },
        +        "total": {
        +          "type": "integer"
        +        },
        +        "unrequested": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "phone": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "email",
        +    "archived"
        +  ],
        +  "type": "object"
        +}
    • Changedget-signing-request-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "attestation_type": {
        +      "enum": [
        +        "acknowledgment",
        +        "signature"
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "attested_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "canceled_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "document": {
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "resource_uri": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "resource_uri"
        +      ],
        +      "type": "object"
        +    },
        +    "expired_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "expires_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "person": {
        +      "properties": {
        +        "email": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "resource_uri": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "email",
        +        "resource_uri"
        +      ],
        +      "type": "object"
        +    },
        +    "resource_uri": {
        +      "type": "string"
        +    },
        +    "sent_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "enum": [
        +        "created",
        +        "sent",
        +        "viewed",
        +        "attested",
        +        "expired",
        +        "canceled",
        +        "bounced",
        +        "failed",
        +        "complained"
        +      ],
        +      "type": "string"
        +    },
        +    "viewed_at": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status",
        +    "resource_uri"
        +  ],
        +  "type": "object"
        +}
    • Changedlist-documents-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "documents": {
        +      "items": {
        +        "properties": {
        +          "archived": {
        +            "type": "boolean"
        +          },
        +          "auto_renew": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "default_attestation_type": {
        +            "enum": [
        +              "acknowledgment",
        +              "signature"
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "has_published_revision": {
        +            "type": "boolean"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "latest_published_revision_pdf_uri": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "renewal_interval_days": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "resource_uri": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "has_published_revision",
        +          "archived",
        +          "resource_uri"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "documents"
        +  ],
        +  "type": "object"
        +}
    • Changedlist-groups-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "groups": {
        +      "items": {
        +        "properties": {
        +          "active_people_count": {
        +            "type": "integer"
        +          },
        +          "automatic_request_issuance_enabled": {
        +            "type": "boolean"
        +          },
        +          "compliant_people_count": {
        +            "type": "integer"
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "documents_count": {
        +            "type": "integer"
        +          },
        +          "documents_resource_uri": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "members_resource_uri": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "resource_uri": {
        +            "type": "string"
        +          },
        +          "source": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "source_id": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "automatic_request_issuance_enabled",
        +          "active_people_count",
        +          "compliant_people_count",
        +          "documents_count",
        +          "resource_uri",
        +          "members_resource_uri",
        +          "documents_resource_uri"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "groups"
        +  ],
        +  "type": "object"
        +}
    • Changedlist-people-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "people": {
        +      "items": {
        +        "properties": {
        +          "archived": {
        +            "type": "boolean"
        +          },
        +          "documents_resource_uri": {
        +            "type": "string"
        +          },
        +          "email": {
        +            "type": "string"
        +          },
        +          "groups_resource_uri": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "phone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "resource_uri": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "email",
        +          "archived",
        +          "resource_uri",
        +          "documents_resource_uri",
        +          "groups_resource_uri"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "people"
        +  ],
        +  "type": "object"
        +}
    • Changedlist-signing-requests-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "requests": {
        +      "items": {
        +        "properties": {
        +          "attestation_type": {
        +            "enum": [
        +              "acknowledgment",
        +              "signature"
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "attested_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "document": {
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "resource_uri": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "resource_uri"
        +            ],
        +            "type": "object"
        +          },
        +          "expired_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "person": {
        +            "properties": {
        +              "email": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "resource_uri": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "email",
        +              "resource_uri"
        +            ],
        +            "type": "object"
        +          },
        +          "resource_uri": {
        +            "type": "string"
        +          },
        +          "sent_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "status": {
        +            "enum": [
        +              "created",
        +              "sent",
        +              "viewed",
        +              "attested",
        +              "expired",
        +              "canceled",
        +              "bounced",
        +              "failed",
        +              "complained"
        +            ],
        +            "type": "string"
        +          },
        +          "viewed_at": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "status",
        +          "resource_uri"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "requests"
        +  ],
        +  "type": "object"
        +}
    • Changedsend-reminder-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "message": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "success",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedsend-signing-request-tool1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "requests": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "person": {
        +            "properties": {
        +              "email": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "email"
        +            ],
        +            "type": "object"
        +          },
        +          "resource_uri": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "resource_uri"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "requests"
        +  ],
        +  "type": "object"
        +}
  6. 1 tool update
    • Changedlist-signing-requests-tool1 field changed
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "created",
        -  "sent",
        -  "viewed",
        -  "attested",
        -  "expired",
        -  "canceled"
        -]New value: +[
        +  "created",
        +  "sent",
        +  "viewed",
        +  "attested",
        +  "expired",
        +  "canceled",
        +  "bounced",
        +  "failed",
        +  "complained"
        +]
  7. 1 tool update
    • Changedlist-documents-tool1 field changed
      • addedInput schema / properties / include_archived
        Added value: +{
        +  "description": "Include archived documents in the results. Defaults to false.",
        +  "type": "boolean"
        +}
  8. 3 tool updates
    • Addedadd-person-to-group-tool
    • Addedget-group-tool
    • Addedlist-groups-tool
  9. 10 tool updates
    • First observedcancel-signing-request-tool
    • First observedcreate-person-tool
    • First observedget-document-tool
    • First observedget-person-tool
    • First observedget-signing-request-tool
    • First observedlist-documents-tool
    • First observedlist-people-tool
    • First observedlist-signing-requests-tool
    • First observedsend-reminder-tool
    • First observedsend-signing-request-tool

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources