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
75.6% over 77 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 20 tools

Disambiguation4/5

Most tools target distinct resources and actions, with clear separation between people, groups, documents, revisions, and signing requests. The main potential overlaps are query-docs vs. search-docs and get-document vs. get-document-revision, but the descriptions provide enough guidance to distinguish them.

Naming Consistency4/5

The set mostly follows a predictable kebab-case verb-noun pattern with a -tool suffix, such as create-person-tool, get-group-tool, and send-signing-request-tool. The two documentation tools, query-docs and search-docs, break the pattern by omitting the -tool suffix.

Tool Count3/5

The 20-tool surface covers several subdomains—people, groups, documents, revisions, signing requests, and documentation—so the count is not arbitrary. However, 20 tools is on the heavy side and includes enough surface area that consolidation or clearer scoping would improve usability.

Completeness3/5

Core workflows for document creation, revision publishing, signing requests, reminders, and people/groups lookup are present. Notable gaps remain around group and person lifecycle management, such as creating groups, removing people from groups, updating/deleting people or groups, and deleting/archiving documents.

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.

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

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.

NameRequiredDescriptionDefault
request_idYesThe ULID of the signing request to cancel.

Output 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.

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

NameRequiredDescription
createdYes
revisionYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, but the description adds the exact idempotent behavior ('If a draft already exists, returns that draft instead') and a document-type limitation. It omits permission/auth requirements, keeping it short of a 5.

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?

Three short sentences, front-loaded with the core action and each carrying distinct value (purpose, idempotency, limitation). No filler, though the third sentence is slightly tangential to invocation.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description covers the mutation's non-destructive, idempotent nature plus a real usage constraint. Complete enough for a 3-param create tool, missing only auth/permission context.

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 all three parameters are documented in the schema, so the baseline of 3 applies. The description adds little parameter-level detail beyond what the schema already states (e.g., body_markdown copying prior content).

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 ('Create') plus resource ('new draft revision for an existing document'), and the qualifier 'draft' cleanly separates it from create-document-tool and publish-document-revision-tool. An agent can route to it without opening the schema.

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

Usage Guidelines4/5

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

It supplies clear context ('for example after a version was published') and an explicit exclusion with an alternative ('File-based documents (PDF/Drive) cannot be edited as rich text via ChatGPT — use the web app'). It doesn't name sibling revision tools, but the when/when-not coverage is strong.

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.

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

NameRequiredDescription
documentYes
revisionYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare non-readonly, non-destructive, non-idempotent, but do not convey the crucial trait that the output is an unpublished draft. The description supplies that state and the intended review-then-publish lifecycle, adding real behavioral value beyond the annotations, though it omits permission/auth or uniqueness requirements.

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 that front-load the primary action and then the state constraint and follow-up. No redundant restatement of the name or schema fields, every sentence earns its place.

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

Completeness4/5

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

With annotations covering the safety profile and an output schema present, the description need not explain return values; it covers purpose, draft state, and next step. It is nearly complete, lacking only mention of required inputs or permission prerequisites for creation.

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 name, summary, and body_markdown including the 255-character limit and supported Markdown constructs. The description only echoes the optional Markdown body, adding no format or constraint detail beyond the schema — baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Create a new ClearPolicy document with a draft rich-text revision') and clarifies scope by contrasting with publishing. It names publish-document-revision-tool as the alternative, but it does not distinguish this tool from the sibling create-document-revision-tool, leaving some ambiguity about which creates the container vs. the 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?

Explicitly states the negative case ('Does not publish') and gives the follow-up tool with the condition ('after the user reviews the draft'), which is genuine workflow guidance. It does not say when to prefer this over create-document-revision-tool, so it is clear context without full exclusions.

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.

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

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 and lock_version for review. Table-bearing blocks are preserved as read-only HTML in content_markdown, not round-trippable Markdown. Edit those bodies in the ClearPolicy editor or omit body_markdown when copying them to a new draft. Use the latest_draft_revision_id or latest_published_revision_id from create-document / get-document.

NameRequiredDescriptionDefault
revision_idYesThe ULID of the document revision.

Output Schema

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

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuinely useful behavioral context beyond that: table-bearing blocks are returned as non-round-trippable read-only HTML in content_markdown, with explicit remediation (edit in ClearPolicy editor or omit body_markdown when copying). It stops short of covering error behavior or auth, so 4 rather than 5.

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?

Three dense, front-loaded sentences with no filler; the core operation is stated first, caveats after. The transition between the round-trip warning and the ID-source hint is slightly abrupt but nothing is wasted.

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 an output schema present, return values need not be explained, yet the description still calls out the two fields that matter for the next action (body, lock_version). For a single-parameter read tool with full annotation coverage, nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% and the schema documents revision_id as a ULID, so the baseline is 3. The description adds value by telling the agent where valid IDs come from (latest_draft_revision_id / latest_published_revision_id from create-document or get-document), which the schema does not.

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

Purpose4/5

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

States a specific verb+resource ('Get a document revision') and names what it returns (body and lock_version). It does not explicitly differentiate itself from the sibling get-document-tool, so an agent must infer the distinction, but the purpose itself is unambiguous.

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?

Uses 'for review' and points to create-document / get-document as the source of valid revision IDs, which implies usage context. However, it never states when to prefer this over get-document-tool or create-document-revision-tool, leaving the routing decision to inference.

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

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

NameRequiredDescriptionDefault
document_idYesThe ULID of the document.

Output Schema

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

TDQS

B3.4/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 established. The description adds useful return-value context by mentioning signature counts, but does not disclose other behavioral details such as access requirements or not-found behavior. This is adequate but not 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 front-loaded sentence that includes the core purpose and the most distinguishing detail. There is no redundancy or filler.

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 one well-documented parameter, a full output schema, and strong safety annotations, the description is nearly complete for a simple read-only fetch. The main gap is the lack of explicit sibling differentiation, but the low complexity keeps this above the minimum viable bar.

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 document_id is already documented as a required ULID. The description does not add additional meaning or constraints beyond the schema, making the baseline score of 3 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 ('Get') and resource ('details of a document'), and adds concrete information about what details are included: signed and unsigned counts. It is clear enough to distinguish from list-documents and get-document-revision, though it does not explicitly name the sibling it is not.

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?

The description gives no guidance on when to use this tool versus alternatives such as list-documents-tool, get-document-revision-tool, query-docs, or search-docs. No explicit when/when-not conditions or alternative routing are provided.

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.

NameRequiredDescriptionDefault
group_idYesThe ULID of the group to retrieve.

Output 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.

NameRequiredDescriptionDefault
person_idYesThe ULID of the person.

Output 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.

NameRequiredDescriptionDefault
request_idYesThe ULID of the signing request.

Output 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.

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

Output Schema

NameRequiredDescription
documentsYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds a behavioral scope by indicating the listing is limited to documents the organization has 'ready to send,' which is useful context. However, it does not disclose further behavior such as pagination or default exclusions; with strong annotation coverage, this is acceptable but not exceptional.

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 carry the full message without redundancy. The main action and scope appear in the first sentence, and the second sentence reinforces the use case. No wasted words.

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 list tool with two optional, fully documented parameters and a read-only annotation profile, the description is nearly complete. The presence of an output schema removes the need to explain return values. It could be slightly stronger with explicit sibling differentiation, but nothing essential is missing for correct invocation.

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 filter and include_archived) are already documented. The description does not add parameter-level 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 uses a specific verb-resource pair ('Find documents') and adds a clear domain ('available to send for electronic signature'), which distinguishes it from listing people, groups, or signing requests. The phrase 'ready to send' also implies a scoped subset rather than all documents, helping differentiate from broader 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 Guidelines4/5

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

The description explicitly states the intended use: 'Use this to browse what documents the organization has ready to send.' This gives clear context for when the tool is appropriate, though it does not mention exclusions or name sibling alternatives like query-docs or search-docs that might overlap.

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.

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

Output 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.

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

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 ToolA
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.

NameRequiredDescriptionDefault
statusNoFilter by status: pending (open), signed (completed), or an exact status (created, sent, viewed, attested, expired, canceled, bounced, failed, complained, suppressed).
person_idNoFilter by person ULID.
document_idNoFilter by document ULID.

Output Schema

NameRequiredDescription
requestsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the compliance-tracking framing and glosses status semantics ('pending', 'signed', 'expired'), which is modest added context, but it says nothing about result volume, pagination, or ordering.

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?

Two short sentences, front-loaded with the core purpose followed by the filtering capability. No filler or repetition, though the status examples are redundant with the schema enum.

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

Completeness4/5

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

For a simple, read-only, zero-required-parameter list tool with a full-coverage schema and an output schema, the description covers purpose and filtering adequately. Only pagination/ordering behavior is unaddressed, and the output schema presumably handles the return shape.

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 the description only restates the filter dimensions and a partial list of statuses already enumerated in the schema enum. Baseline 3 applies since the schema carries the parameter semantics.

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 clear verb+resource ('Check who has signed a document and who hasn't') and frames the tool as a listing/tracking query over signing requests. It is distinguishable from singular siblings like get-signing-request-tool, but it never explicitly names that sibling or the document/person list tools, so differentiation is left to inference.

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?

'Filter by document, person, or status ... to track compliance' implies the usage context (compliance auditing) but gives no explicit when-to-use/when-not or alternative tool routing. There is no guidance pointing to get-signing-request-tool for a single record versus this list tool.

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.

NameRequiredDescriptionDefault
revision_idYesThe ULID of the draft revision to publish.
base_versionYesThe lock_version of the exact draft state reviewed and approved for publication. Read and review again if it changed.
allow_unfilled_fieldsNoOnly set true after telling the user which template fields are unfinished and getting explicit approval to publish with those labels still visible.

Output Schema

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

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, non-idempotent, non-readOnly, so the safety profile is covered; the description adds real value by saying a PDF and document hash are produced and that user confirmation is required first. It stops short of saying the publish is irreversible or what happens to the draft state afterward.

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?

Four short sentences, front-loaded with the action, then the side effects, the safety gate, and the next tool. No repeated or filler content.

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?

Annotations carry the destructive/non-idempotent profile, the output schema covers return values, and the schema documents parameters. The description supplies the workflow context (confirm → publish → send) that the structured fields cannot express.

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 revision_id, base_version, and allow_unfilled_fields are each fully documented in the schema, including the concurrency and approval caveats. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource ('Publish a draft document revision') with the concrete outcome stated (PDF and document hash generated). It clearly distinguishes itself from create-document-revision-tool and update-document-revision-tool by describing the publish transition into the signing workflow.

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?

Explicitly states the precondition (confirm with the user before publishing) and the follow-up tool (send-signing-request to distribute it), which routes the agent correctly among 19 siblings. The when and the next step are both given, not inferred.

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.

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

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.

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

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.

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

Output 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.

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

Output 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.

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.
base_versionYesThe lock_version returned when you last read this revision. A stale version is rejected; read and review the latest content before trying again.
body_markdownNoFull Markdown body to store (replaces existing content). Required unless only updating summary.

Output Schema

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

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 idempotentHint=true, so the safety profile is covered. The description adds useful context that only drafts are editable and that a published revision must be superseded by a new draft, but the replacement semantics of body_markdown and the lock_version staleness behavior live in the schema rather than the description.

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 action, then the key constraint, then the preference. Every sentence carries distinct information with no filler.

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 full output schema, complete parameter docs, and annotations covering destructive/idempotent behavior, the remaining description burden is small. It covers the draft-only constraint and preferred authoring path, leaving little an agent would need to infer.

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 revision_id, base_version, summary, and body_markdown are all fully documented in the schema, including the max-255 limit and clear-on-empty rule. The description adds no parameter detail beyond that 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?

States a specific verb (update) and resource (draft document revision), plus the exact fields affected (body Markdown and/or summary). This clearly separates it from create-document-revision-tool and publish-document-revision-tool without the agent needing to open either schema.

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

Usage Guidelines4/5

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

Explicitly states the when-not condition (published revisions cannot be edited; create a new draft first) and steers toward the preferred path (rich-text drafts via create-document). It names the sibling alternatives but doesn't spell out every route, so slightly short of fully explicit routing.

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. 1 tool update
    • Changedpublish-document-revision-tool1 field changed
      • addedInput schema / properties / allow_unfilled_fields
        Added value: +{
        +  "description": "Only set true after telling the user which template fields are unfinished and getting explicit approval to publish with those labels still visible.",
        +  "type": "boolean"
        +}
  2. 5 tool updates
    • Changedcreate-document-revision-tool2 fields changed
      • addedOutput schema / properties / revision / properties / lock_version
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / properties / revision / required
        Previous value: -[
        -  "id",
        -  "document_id",
        -  "status",
        -  "source_type",
        -  "content_markdown",
        -  "content_text",
        -  "is_empty",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "lock_version",
        +  "document_id",
        +  "status",
        +  "source_type",
        +  "content_markdown",
        +  "content_text",
        +  "is_empty",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedcreate-document-tool2 fields changed
      • addedOutput schema / properties / revision / properties / lock_version
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / properties / revision / required
        Previous value: -[
        -  "id",
        -  "document_id",
        -  "status",
        -  "source_type",
        -  "content_markdown",
        -  "content_text",
        -  "is_empty",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "lock_version",
        +  "document_id",
        +  "status",
        +  "source_type",
        +  "content_markdown",
        +  "content_text",
        +  "is_empty",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedget-document-revision-tool2 fields changed
      • addedOutput schema / properties / lock_version
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "document_id",
        -  "status",
        -  "source_type",
        -  "content_markdown",
        -  "content_text",
        -  "is_empty",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "lock_version",
        +  "document_id",
        +  "status",
        +  "source_type",
        +  "content_markdown",
        +  "content_text",
        +  "is_empty",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedpublish-document-revision-tool4 fields changed
      • addedInput schema / properties / base_version
        Added value: +{
        +  "description": "The lock_version of the exact draft state reviewed and approved for publication. Read and review again if it changed.",
        +  "type": "integer"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "revision_id"
        -]New value: +[
        +  "revision_id",
        +  "base_version"
        +]
      • addedOutput schema / properties / lock_version
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "document_id",
        -  "status",
        -  "source_type",
        -  "content_markdown",
        -  "content_text",
        -  "is_empty",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "lock_version",
        +  "document_id",
        +  "status",
        +  "source_type",
        +  "content_markdown",
        +  "content_text",
        +  "is_empty",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedupdate-document-revision-tool4 fields changed
      • addedInput schema / properties / base_version
        Added value: +{
        +  "description": "The lock_version returned when you last read this revision. A stale version is rejected; read and review the latest content before trying again.",
        +  "type": "integer"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "revision_id"
        -]New value: +[
        +  "revision_id",
        +  "base_version"
        +]
      • addedOutput schema / properties / lock_version
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "document_id",
        -  "status",
        -  "source_type",
        -  "content_markdown",
        -  "content_text",
        -  "is_empty",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "lock_version",
        +  "document_id",
        +  "status",
        +  "source_type",
        +  "content_markdown",
        +  "content_text",
        +  "is_empty",
        +  "resource_uri",
        +  "app_url"
        +]
  3. 1 tool update
    • Changedlist-signing-requests-tool2 fields changed
      • changedInput schema / properties / status / description
        Previous value: -"Filter by status: created, sent, viewed, attested, expired, or canceled."New value: +"Filter by status: pending (open), signed (completed), or an exact status (created, sent, viewed, attested, expired, canceled, bounced, failed, complained, suppressed)."
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "created",
        -  "sent",
        -  "viewed",
        -  "attested",
        -  "expired",
        -  "canceled",
        -  "bounced",
        -  "failed",
        -  "complained",
        -  "suppressed"
        -]New value: +[
        +  "pending",
        +  "signed",
        +  "created",
        +  "sent",
        +  "viewed",
        +  "attested",
        +  "expired",
        +  "canceled",
        +  "bounced",
        +  "failed",
        +  "complained",
        +  "suppressed"
        +]
  4. 3 tool updates
    • Changedcreate-document-tool2 fields changed
      • addedOutput schema / properties / document / properties / requires_signature
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / document / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "has_published_revision",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "requires_signature",
        +  "has_published_revision",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedget-document-tool2 fields changed
      • addedOutput schema / properties / requires_signature
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "has_published_revision",
        -  "archived",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "requires_signature",
        +  "has_published_revision",
        +  "archived",
        +  "resource_uri",
        +  "app_url"
        +]
    • Changedlist-documents-tool2 fields changed
      • addedOutput schema / properties / documents / items / properties / requires_signature
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / documents / items / required
        Previous value: -[
        -  "id",
        -  "name",
        -  "has_published_revision",
        -  "archived",
        -  "resource_uri",
        -  "app_url"
        -]New value: +[
        +  "id",
        +  "name",
        +  "requires_signature",
        +  "has_published_revision",
        +  "archived",
        +  "resource_uri",
        +  "app_url"
        +]
  5. 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
  6. 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
  7. 2 tool updates
    • Addedquery-docs
    • Addedsearch-docs
  8. 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"
        +]
  9. 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"
        +}
  10. 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"
        +]
  11. 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"
        +}
  12. 3 tool updates
    • Addedadd-person-to-group-tool
    • Addedget-group-tool
    • Addedlist-groups-tool
  13. 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
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • 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
    18 npm
    1
    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