Skip to main content
Glama
signdocsbrasil

SignDocs Brasil MCP Server

Official

SignDocs Brasil — MCP Server

A Model Context Protocol server for the SignDocs Brasil e-signature API. It lets MCP-capable AI clients (Claude Desktop, Claude Code, Cursor, …) create signing sessions, manage multi-signer envelopes, upload/download documents, verify signatures, and manage webhooks — the same action catalog as the official n8n, Zapier, and Make.com integrations.

It is a thin adapter over the official @signdocs-brasil/api SDK, which owns OAuth2 token exchange, caching, retries, and error handling.

Install

npm install -g @signdocs-brasil/mcp-server   # or run on demand with npx

Related MCP server: SignaTrust MCP Server

Credentials

Create an API credential in the SignDocs dashboard (app.signdocs.com.br → API) and expose it as environment variables:

Variable

Required

Default

Notes

SIGNDOCS_CLIENT_ID

yes

OAuth2 client id

SIGNDOCS_CLIENT_SECRET

yes

OAuth2 client secret

SIGNDOCS_ENVIRONMENT

no

hml

hml (staging) or production

SIGNDOCS_BASE_URL

no

derived

override the resolved base URL

SIGNDOCS_SCOPES

no

full set

space-separated scope override

Start in hml. HML data expires after ~7 days and is safe for testing. Switch to production only when you intend to create real, legally-binding signatures.

Connect an AI client

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "signdocs": {
      "command": "npx",
      "args": ["-y", "@signdocs-brasil/mcp-server"],
      "env": {
        "SIGNDOCS_CLIENT_ID": "your_client_id",
        "SIGNDOCS_CLIENT_SECRET": "your_client_secret",
        "SIGNDOCS_ENVIRONMENT": "hml"
      }
    }
  }
}

Claude Code:

claude mcp add signdocs \
  -e SIGNDOCS_CLIENT_ID=your_client_id \
  -e SIGNDOCS_CLIENT_SECRET=your_client_secret \
  -e SIGNDOCS_ENVIRONMENT=hml \
  -- npx -y @signdocs-brasil/mcp-server

Tools

Tool

Action

Safety

create_signing_session

Create single-signer session, returns signingUrl

⚠️ binding + quota

get_signing_session_status

Poll session status

read

get_signing_session

Full session bootstrap

read

list_signing_sessions

List by status

read

cancel_signing_session

Cancel a session

⚠️ irreversible

resend_signing_session_otp

Resend OTP

write

create_envelope

Multi-signer envelope

⚠️ binding + quota

get_envelope

Envelope details

read

add_session_to_envelope

Add a signer, returns signingUrl

⚠️ binding + quota

get_envelope_combined_stamp

Combined stamped PDF URL

read

upload_document

Attach a PDF to a transaction

write

download_document

Presigned download URLs

read

list_transactions

Search/list transactions

read

get_transaction

Transaction details

read

cancel_transaction

Cancel a transaction

⚠️ irreversible

get_evidence

Cryptographic evidence

read

verify_evidence

Public evidence verification

read

verify_envelope

Public envelope verification

read

verify_document

Detect signatures in a PDF

⚠️ PROD-only + quota

register_webhook / list_webhooks / delete_webhook / test_webhook

Webhook management

mixed

⚠️ tools carry destructiveHint annotations and a warning in their description so compliant clients prompt the human before invoking them. Annotations are only hints — review your client's auto-approval settings.

Not yet exposed

Trust sessions (/v1/trust-sessions) and resend-invite are not in @signdocs-brasil/api v1.6.1 yet; they'll be added when the SDK supports them. Digital ICP-Brasil A1 signing runs through the lower-level transaction/advance flow rather than a hosted-session profile.

Resources

The server exposes grounding resources the model can read on demand:

  • signdocs://quickstart — the minimal signing flow + safety notes

  • signdocs://policy-profiles — valid policyProfile values and CUSTOM steps

  • signdocs://webhook-events — all subscribable event types

Remote HTTP transport (multi-tenant)

The same tools are also served over Streamable HTTP so a single deployment can serve many AI agents/tenants — each authenticates per session with its own SignDocs credentials (no shared secret baked into the server).

npm run start:http        # or: signdocs-mcp-http   (listens on PORT, default 3000)
# or containerized:
docker build -t signdocs-mcp . && docker run -p 3000:3000 signdocs-mcp

Endpoint: POST /mcp (Streamable HTTP). Auth is required on the MCP initialize request, via the Authorization header:

  • Authorization: Bearer <token> — a SignDocs OAuth2 access token (from /oauth2/token), passed straight through to the API.

  • Authorization: Basic base64(clientId:clientSecret) — the server runs the client_credentials exchange for you.

  • X-SignDocs-Client-Id + X-SignDocs-Client-Secret — the same client credentials as two plain headers (no base64), for header-only clients that can't transform values.

Pick the environment per session with X-SignDocs-Environment: hml|production (defaults to the server's configured default).

The server behaves as an OAuth 2.0 Resource Server: it serves GET /.well-known/oauth-protected-resource (RFC 9728, pointing at the SignDocs authorization server) and answers an unauthenticated initialize with 401 + WWW-Authenticate. The SignDocs API remains the authoritative token validator. GET /healthz is an unauthenticated health probe.

Example client config (Bearer):

{
  "mcpServers": {
    "signdocs-remote": {
      "type": "http",
      "url": "https://your-host.example/mcp",
      "headers": {
        "Authorization": "Bearer <signdocs_access_token>",
        "X-SignDocs-Environment": "hml"
      }
    }
  }
}

Server env vars: PORT, HOST, SIGNDOCS_ENVIRONMENT (default env), MCP_PUBLIC_URL (for resource metadata behind a proxy), MCP_CORS_ORIGIN, MCP_DNS_REBINDING_PROTECTION=true + MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINS (recommended in production).

Sessions are held in process memory, so run a single instance or use sticky routing. For multi-instance/serverless, front it with sticky sessions or swap the session map for a shared store + EventStore (resumability). Deploying onto the existing external-api Lambda + API Gateway as a NestedStack is the intended production path.

AWS Lambda

For serverless hosting, @signdocs-brasil/mcp-server/lambda exports createLambdaHandler — an API Gateway HTTP API v2 handler that runs the MCP transport statelessly (one server per invocation, no session store), with the same Bearer/Basic auth. SignDocs hosts this on mcp-hml.signdocs.com.br / mcp.signdocs.com.br.

import { createLambdaHandler } from '@signdocs-brasil/mcp-server/lambda';
export const handler = createLambdaHandler({ defaultEnvironment: 'hml' });

Development

npm install
npm run build      # tsc → dist/
npm test           # vitest (pure unit tests, no network)
npm run inspect    # build + launch MCP Inspector against the stdio server

Roadmap

  • v0.1: local stdio server, full tool catalog, env credentials.

  • v0.2 (this release): remote Streamable-HTTP transport with per-session, per-tenant auth (Bearer passthrough or Basic client-credentials) and OAuth Resource Server discovery. Tool layer is shared between both transports.

  • Next: deploy the HTTP transport onto external-api (Lambda + API Gateway NestedStack); optional edge JWT validation + shared-store sessions for horizontal scale.

Available Tools

24 tools
add_session_to_envelopeAdd signer to envelopeA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Add a signing session for one signer to an envelope. Returns IDs plus a ready-to-share signingUrl.

ParametersJSON Schema
NameRequiredDescriptionDefault
signerYesThe person who will sign / authenticate.
purposeNoDOCUMENT_SIGNATURE to sign a PDF; ACTION_AUTHENTICATION to authenticate an action with no document.
metadataNoFree-form key/value tags (keys ≤256, values ≤1024 chars).
cancelUrlNo
returnUrlNo
envelopeIdYesThe envelope to add a signer to.
signerIndexYesZero-based position of this signer (0..totalSigners-1).
policyProfileYesIdentity-assurance profile: CLICK_ONLY, CLICK_PLUS_OTP, BIOMETRIC, BIOMETRIC_PLUS_OTP, or CUSTOM. Read the signdocs://policy-profiles resource for the authoritative list — an invalid value returns 400.

TDQS

A4.4/5.0
Behavior5/5

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

Adds important behavioral context beyond annotations: irreversible action, legally-binding, quota consumption. Annotation contradicts none.

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

Conciseness5/5

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

Two sentences, no fluff. The critical warning is front-loaded. 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 complexity (8 params, nested objects, no output schema), the description covers the return value (signingUrl) and the consequential nature. Could include more about parameter relationships but schema covers details.

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 high (75%) with detailed parameter descriptions. The description adds minimal extra beyond mentioning the signingUrl output. Meets the baseline for 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?

Clearly states the action 'Add a signing session for one signer to an envelope' and the output 'signingUrl'. This verb-resource pair is distinct from siblings like cancel_signing_session or create_envelope.

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?

Includes a prominent warning about consequential, possible irreversible action and legal implications, advising confirmation with human. This provides clear when-to-use guidance, but lacks explicit comparisons to sibling tools.

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

cancel_signing_sessionCancel signing sessionA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Cancel an active signing session. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesThe signing session ID (sigex_…).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description adds critical context: 'irreversible action,' 'legally-binding signature request and/or quota consumption,' and 'This cannot be undone.' This fully discloses the impact.

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 three sentences, front-loading the critical warning, then stating the action, and ending with the irreversibility. Every sentence is necessary and earns its place.

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

Completeness5/5

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

For a tool with one well-documented parameter, clear annotations, and a simple action, the description covers all necessary behavioral and usage context. No missing information.

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

Parameters3/5

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

The schema already provides 100% coverage with a clear description for the single parameter (sessionId). The description does not add additional meaning beyond what the schema 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 'Cancel an active signing session' with a specific verb and resource. It distinguishes from sibling tools like cancel_transaction by focusing on signing sessions.

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 includes a strong warning about the consequential nature and advises confirming with the human before calling. It implies when to use but does not explicitly list alternatives or when not to use.

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

cancel_transactionCancel transactionA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Cancel a low-level transaction. This cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesThe transaction ID (txn_…).

TDQS

A4/5.0
Behavior4/5

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

Adds context beyond annotations: 'possibly irreversible', 'legally-binding signature request and/or quota consumption', and 'This cannot be undone'. Annotations already indicate destructiveHint true, so description enhances understanding.

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?

Very concise: two sentences plus a warning emoji. Front-loaded with critical warning, no unnecessary 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?

Given simple single-param tool with annotations and no output schema, description covers essential behavioral traits and usage guidance. Could mention expected outcome or return, but overall adequate.

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?

Only one parameter, transactionId, with schema description 'The transaction ID (txn_…).' Description adds no additional meaning beyond schema. Schema coverage is 100%, so 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?

Description clearly states the tool cancels a 'low-level transaction', which distinguishes from sibling 'cancel_signing_session'. However, it doesn't explicitly list alternatives or when to prefer this over other cancellation tools.

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

Usage Guidelines4/5

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

Includes a prominent warning that the action is consequential, possibly irreversible, and advises confirming with the human before calling. Does not mention specific situations when not to use or alternatives.

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

create_envelopeCreate envelopeA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Create a multi-signer envelope around one PDF. After creating, add each signer with add_session_to_envelope. Consumes quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoThe requester (distinct from the signer). When set and signer.email differs, SignDocs auto-emails the signer an invite and notifies the owner on completion. Omit to deliver links yourself via webhooks.
localeNoUI/email language. Default pt-BR.
metadataNoFree-form key/value tags (keys ≤256, values ≤1024 chars).
cancelUrlNo
returnUrlNo
documentUrlNoDirect, public HTTPS link to the shared PDF (≤10MB) — server fetches it (not a Google Drive /view or private link).
signingModeYesPARALLEL: anyone signs in any order. SEQUENTIAL: ordered.
uploadTokenNoToken from request_document_upload after the user uploaded the PDF. Provide one of documentBase64 / documentUrl / uploadToken.
totalSignersYesHow many signers will be added to this envelope.
documentBase64NoBase64-encoded PDF (≤10MB) shared by all signers.
idempotencyKeyNoIdempotency key for safe retries; a UUID is generated if omitted.
documentFilenameNo
expiresInMinutesNo

TDQS

A4.4/5.0
Behavior4/5

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

Description adds behavioral context beyond annotations: 'consequential, possibly irreversible action', 'legally-binding signature request and/or quota consumption'. 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, front-loaded with a critical warning, then concise purpose and next step. 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?

Covers workflow, warning, and quota consumption. Lacks return value description, but no output schema exists. Adequate given complexity.

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 69%; description does not detail all parameters but reinforces key workflow. Adds value for 'owner' parameter by clarifying its automatic notification behavior.

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 'Create' and the resource 'multi-signer envelope around one PDF'. It distinguishes from sibling tool add_session_to_envelope by specifying the workflow order.

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?

Explicit warning to confirm with human before calling, and instruction to use add_session_to_envelope next. Lacks explicit alternatives or when-not-to-use, but context is clear.

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

create_signing_sessionCreate signing sessionA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Create a single-signer "express" signing (or action-authentication) session and return its IDs plus a ready-to-share signingUrl (url + embed token). Consumes signature quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerNoThe requester (distinct from the signer). When set and signer.email differs, SignDocs auto-emails the signer an invite and notifies the owner on completion. Omit to deliver links yourself via webhooks.
actionNoWhat is being authenticated — used when purpose=ACTION_AUTHENTICATION.
localeNoUI/email language. Default pt-BR.
signerYesThe person who will sign / authenticate.
purposeYesDOCUMENT_SIGNATURE to sign a PDF; ACTION_AUTHENTICATION to authenticate an action with no document.
metadataNoFree-form key/value tags (keys ≤256, values ≤1024 chars).
cancelUrlNoRedirect URL if the signer cancels.
returnUrlNoRedirect URL after completion (sessionId appended as query param).
customStepsNoOrdered step types — REQUIRED only when policyProfile=CUSTOM (e.g. ["CLICKWRAP","OTP"]).
documentUrlNoDirect, public HTTPS link to the PDF (≤10MB) — the server fetches it. Must return raw PDF bytes (S3/Dropbox ?dl=1/public .pdf). NOTE: a Google Drive "/view" link or a private file will NOT work.
uploadTokenNoToken from request_document_upload, after the user uploaded the PDF on the drag-and-drop page. Best for local files or private Google Drive files (download then drag in). Provide one of documentBase64 / documentUrl / uploadToken.
policyProfileYesIdentity-assurance profile: CLICK_ONLY, CLICK_PLUS_OTP, BIOMETRIC, BIOMETRIC_PLUS_OTP, or CUSTOM. Read the signdocs://policy-profiles resource for the authoritative list — an invalid value returns 400.
documentBase64NoBase64-encoded PDF (≤10MB). Provide this OR documentUrl when purpose=DOCUMENT_SIGNATURE.
idempotencyKeyNoIdempotency key for safe retries; a UUID is generated if omitted.
documentFilenameNoOriginal filename, e.g. contrato.pdf.
expiresInMinutesNoSession lifetime, 5–1440 min (default 60).

TDQS

A4.4/5.0
Behavior5/5

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

The description adds significant behavioral context beyond annotations: it labels the action as consequential, possibly irreversible, legally-binding, and quota-consuming. This aligns with destructiveHint=true and readOnlyHint=false, and provides richer detail for the agent. No contradictions 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?

The description is very concise: three sentences. The warning is bolded and front-loaded for immediate attention. Every sentence adds essential information without redundancy.

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

Completeness4/5

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

Despite no output schema, the description states what is returned (IDs and signingUrl). It covers the high-stakes nature and quota consumption. For a complex tool with 16 parameters, the description is somewhat brief but adequately sets context. Missing details about return structure are partially compensated by schema descriptions.

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 description adds limited parameter-specific meaning. It mentions 'single-signer' implying signer is a single object, and 'express' hints at speed, but overall the schema already documents parameters thoroughly. The description's value here is marginal.

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 it creates a single-signer 'express' signing session and returns IDs and a signing URL. It specifies the purpose (legally-binding signature or action authentication) and distinguishes from siblings like create_envelope by emphasizing single-signer express mode.

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 includes a prominent warning about consequential actions and advises confirming with the human, which serves as a usage guideline. It also mentions quota consumption. However, it does not explicitly contrast with sibling tools like create_envelope for multi-signer cases, so some guidance is implicit rather than explicit.

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

delete_webhookDelete webhookA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Delete a registered webhook. Event delivery to it stops immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook ID to act on.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true, but the description adds critical context: the action is legally-binding, quota-consuming, and event delivery stops immediately. This goes beyond the annotations and provides essential behavioral insight.

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: a front-loaded warning followed by the action statement. Every sentence is necessary and efficiently communicates the key information without redundancy.

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 simple deletion tool with one parameter and no output schema, the description covers the action, consequence, and immediate effect. Combined with the sibling tool list, the context is complete and sufficient for an AI agent.

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% with one parameter (webhookId) described in the schema. The description does not add additional parameter details beyond what the schema provides, so it meets the baseline for high 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 'Delete a registered webhook' with immediate effect. This specific verb+resource combination distinguishes it from sibling tools like register_webhook, list_webhooks, and test_webhook.

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 includes a strong warning about consequential and possibly irreversible actions, advising confirmation with the human before calling. It does not explicitly mention alternatives or when not to use, but the warning provides clear usage guidance.

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

download_documentDownload documentA
Read-onlyIdempotent
Inspect

Get presigned download URLs for a transaction’s document and signed artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesThe transaction ID (txn_…).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds behavioral context by specifying that it returns presigned URLs for both documents and signed artifacts, which goes beyond the annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the verb and clearly explains the tool's output. Every word is necessary and contributes to understanding.

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 tool with one parameter and rich annotations, the description is nearly complete. It could optionally mention that URLs are time-limited, but this is not critical for basic understanding.

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 baseline is 3. The description does not add additional semantics for the transactionId parameter beyond what the schema 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 tool gets presigned download URLs for a transaction's document and signed artifacts. The verb 'Get' and resource 'presigned download URLs' are specific, and the function is distinct from sibling tools like upload_document or verify_document.

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 provides no guidance on when to use this tool versus alternatives, such as when downloading a single document versus other retrieval methods. There is no mention of prerequisites or exclusions.

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

get_envelopeGet envelopeA
Read-onlyIdempotent
Inspect

Get envelope details including per-signer session summaries and completion counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
envelopeIdYesThe envelope ID (env_…).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying the type of details returned (per-signer session summaries and completion counts), which is beyond the annotations.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It is front-loaded and quickly communicates the tool's purpose.

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 simplicity (1 param, no output schema, strong annotations), the description is mostly complete. It could mention error behavior or limitations, but it sufficiently covers the tool's function.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents the single parameter (envelopeId). The description adds no additional meaning, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get'), resource ('envelope details'), and specific inclusions ('per-signer session summaries and completion counts'). It distinguishes this tool from siblings like get_signing_session, get_transaction, etc.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to get envelope details) but provides no explicit guidance on when not to use it or what alternatives exist among the 22 sibling tools.

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

get_envelope_combined_stampGet envelope combined stampA
Read-onlyIdempotent
Inspect

Generate the combined stamped PDF (all signers) for a COMPLETED envelope and return a download URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
envelopeIdYesThe envelope ID (env_…).

TDQS

A4/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. The description adds context: it generates a combined stamp PDF, returns a download URL, and requires a completed envelope. This enriches understanding without contradicting 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 a single, front-loaded sentence that conveys all essential information without superfluous words. Every part 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's simplicity (one required parameter, rich annotations), the description covers the key aspects: action, condition, output. It could mention that it's only relevant for envelopes with multiple signers, but overall it's 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 description coverage is 100% for the single parameter envelopeId. The description does not add parameter-specific details beyond what the schema provides, so it meets the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Generate', the resource 'combined stamped PDF', the condition 'COMPLETED envelope', and the output 'return a download URL'. It effectively distinguishes from siblings like get_envelope and download_document by specifying it compiles all signers' stamps into a single PDF.

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

Usage Guidelines3/5

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

The description mentions 'COMPLETED envelope', implying the tool should only be used after signing completion, but it does not explicitly state when not to use it or compare to alternatives. This leaves room for ambiguity against similar tools.

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

get_evidenceGet evidenceA
Read-onlyIdempotent
Inspect

Retrieve the cryptographic evidence (hashes, step proofs, evidenceId) for a completed transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesThe transaction ID (txn_…).

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that the tool retrieves specific cryptographic evidence types, which is useful but not significantly beyond what annotations convey.

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 that is concise, front-loaded with the action, and contains no unnecessary 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?

For a simple retrieval tool with one parameter and no output schema, the description adequately lists the fields retrieved (hashes, step proofs, evidenceId) and the condition (completed transaction). Annotations provide additional safety 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 coverage is 100% and the description does not add additional meaning beyond the schema's description of 'transactionId' as 'The transaction ID (txn_…).' 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 the verb 'Retrieve' and the resource 'cryptographic evidence (hashes, step proofs, evidenceId)' for a 'completed transaction'. It distinguishes itself from sibling tools like 'get_transaction' and 'verify_evidence'.

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 specifies the tool is for 'a completed transaction', providing context for when to use it. However, it does not explicitly state when not to use it or mention alternatives among siblings.

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

get_signing_sessionGet signing session detailsA
Read-onlyIdempotent
Inspect

Get full bootstrap data for a signing session (signer, steps, document, appearance).

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesThe signing session ID (sigex_…).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive nature. The description adds value by specifying the exact data returned (signer, steps, document, appearance), which is not in annotations. No contradictions.

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, well-structured sentence that conveys all necessary information without any wasted words. It is front-loaded with the core action and details.

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 the low complexity (1 required parameter, no output schema), the description is complete. It explains what data is returned, which compensates for the lack of output schema. No gaps for an agent using this 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?

The input schema has 100% coverage with a single parameter 'sessionId' and its description. The tool description does not add any additional meaning or context 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 verb 'Get', the resource 'signing session', and the scope 'full bootstrap data' listing components (signer, steps, document, appearance). It distinguishes from the sibling 'get_signing_session_status' which likely returns only status.

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

Usage Guidelines3/5

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

The description implies this is for detailed data retrieval, but it does not explicitly state when to use this tool versus alternatives like get_signing_session_status or list_signing_sessions. No exclusion criteria or prerequisites are mentioned.

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

get_signing_session_statusGet signing session statusA
Read-onlyIdempotent
Inspect

Poll the current status of a signing session (ACTIVE/COMPLETED/CANCELLED/EXPIRED/FAILED).

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesThe signing session ID (sigex_…).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds the list of possible statuses, providing return value context beyond 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?

Single, front-loaded sentence with zero waste. Every word is necessary and valuable.

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 simple parameter set and rich annotations, the description covers the essential behavior. It does not describe the response format in detail, but for a polling tool with no output schema, listing possible statuses is sufficient.

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 the parameter description already explains sessionId. The tool description does not add additional meaning beyond what the schema provides, so baseline score 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 the action (poll) and resource (signing session), and lists the possible statuses, making it distinct from siblings like get_signing_session or cancel_signing_session.

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 word 'poll' implies repeated retrieval of status, but no explicit guidance is given on when to use this tool versus alternatives like get_signing_session, or when not to use it.

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

get_transactionGet transactionA
Read-onlyIdempotent
Inspect

Get full details of a single transaction, including its steps and results.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionIdYesThe transaction ID (txn_…).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds context that it returns 'full details including steps and results', going beyond what annotations provide.

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 of 14 words, front-loaded with the primary action and resource, 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?

Low complexity tool (1 parameter, no output schema, no nested objects). Description sufficiently explains what it does (get full details) and what it includes (steps and results), complemented by complete 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?

Schema has 100% description coverage; the parameter description 'The transaction ID (txn_…)' is clear. The tool description does not add further meaning beyond the schema, so 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 verb 'Get' and specific resource 'full details of a single transaction', including steps and results, distinguishing it from sibling tools like list_transactions (list) and get_envelope/get_evidence (different entities).

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 vs alternatives. While the purpose implies using it for a single transaction, it does not mention when not to use or provide exclusions, leaving the agent to infer from sibling names.

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

list_signing_sessionsList signing sessionsA
Read-onlyIdempotent
Inspect

List signing sessions filtered by status, with cursor pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default server value).
cursorNoPagination cursor from a previous response (nextCursor).
statusYesFilter by status: ACTIVE, COMPLETED, CANCELLED, EXPIRED, or FAILED.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's job is lighter. The description adds that cursor pagination is used, which is a behavioral trait not captured by annotations. This provides useful context for handling paginated responses.

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 that is clear and front-loaded. Every word is necessary; no redundancy or fluff.

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 (list with pagination) and has good annotations. The description covers filtering and pagination, which are the key behaviors. No output schema exists, but the description doesn't need to explain return values if it's self-explanatory. Slight gap: no mention that status is required, but schema handles that.

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 parameters. The description repeats 'filtered by status' and 'cursor pagination', aligning with the schema but adding no new semantics beyond what is in 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 uses specific verb 'list' and resource 'signing sessions' with clear filtering and pagination. It distinguishes from sibling tools like 'get_signing_session', 'create_signing_session', and others.

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

Usage Guidelines3/5

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

The description implies usage: to list sessions filtered by status and paginate. However, it does not explicitly state when to use this tool vs alternatives (e.g., get_signing_session for a single session) or when not to use it. No exclusions or preconditions are mentioned.

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

list_transactionsList / find transactionsA
Read-onlyIdempotent
Inspect

Search transactions by status, signer external ID, document group, or date range (cursor pagination). Use this to find a transaction or check signing history.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNoFilter by transaction status (e.g. PENDING, COMPLETED, CANCELLED).
endDateNoISO date upper bound.
nextTokenNoPagination token from a previous response.
startDateNoISO date lower bound.
userExternalIdNoFilter by signer external ID.
documentGroupIdNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds value by mentioning cursor pagination, which is key behavioral context beyond annotations. It does not detail order or limitations, but the core behavioral traits are covered.

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 very short (two sentences) with no filler. The first sentence immediately states purpose and key filters, enabling quick comprehension. Structure is optimal for agent consumption.

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 lack of output schema and 7 optional parameters, the description covers essential filter dimensions and pagination. It does not specify default ordering, exact date format, or limit behavior, but the core context for a list operation is present. The rich annotations compensate for missing behavioral details.

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 71%, so parameters are mostly documented. The description adds meaning by grouping parameters (e.g., 'date range' for startDate/endDate) and clarifying 'document group' for documentGroupId, which lacks a schema description. However, 'limit' is not mentioned in description, and no new semantic nuance beyond schema is provided.

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 searches transactions by specific filters (status, external ID, document group, date range) and indicates it uses cursor pagination. It distinguishes from sibling tools like get_transaction (single transaction) and list_signing_sessions (different entity).

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 says 'Use this to find a transaction or check signing history,' providing clear usage context. It does not explicitly exclude misuse cases (e.g., for fetching a single transaction by ID), but the purpose is well-aligned with typical list operations.

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

list_webhooksList webhooksA
Read-onlyIdempotent
Inspect

List all registered webhooks for the tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds minimal context like 'registered', but does not contradict annotations. No additional behavioral details beyond 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?

Single sentence, no wasted words. Efficient and to the point.

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 simple list tool with no parameters, no output schema, and comprehensive annotations, the description is complete. No need to explain return values.

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?

Input schema has no parameters (0 params, 100% coverage). Description does not need to add parameter info. Baseline 4 for zero-parameter tools.

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 'list' and resource 'webhooks' with scope 'for the tenant'. It distinguishes from sibling tools like register_webhook, delete_webhook, and test_webhook.

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 like register_webhook or delete_webhook. Usage is implied but not clarified.

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

register_webhookRegister webhookAInspect

Register an HTTPS endpoint to receive event notifications. The response returns a signing secret — store it to verify the HMAC-SHA256 signature on incoming payloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesHTTPS endpoint that will receive event POSTs.
eventsYesEvent types to subscribe to. The response returns a signing secret for HMAC verification.

TDQS

A4/5.0
Behavior4/5

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

Adds context beyond annotations: response contains signing secret to store for HMAC verification. Annotations indicate not read-only, not destructive, but description doesn't contradict.

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

Conciseness5/5

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

Two concise sentences, front-loaded with key action. 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?

Adequate for a creation tool with no output schema. Explains purpose and post-creation storage requirement. Could mention that updating requires deletion/recreation, but fine.

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% with descriptions for both parameters. Description adds no further parameter details 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?

Clear verb 'Register' and resource 'webhook endpoint' are stated. Distinguishes from sibling tools like delete_webhook, list_webhooks, test_webhook.

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?

Implies usage for setting up webhooks but no explicit when-to-use or when-not-to-use. No alternatives mentioned beyond the sibling list.

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

request_document_uploadRequest a document upload linkAInspect

Get a one-time drag-and-drop upload page URL to give the user so they can upload a PDF directly to SignDocs (file bytes never pass through the chat). Use this when the document is a local file or a private Google Drive file — the user downloads it and drops it on the page. After they confirm the upload, pass the returned uploadToken to create_signing_session, create_envelope, or upload_document.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoSuggested filename for the upload, e.g. contrato.pdf.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false (mutation) and openWorldHint=true. The description adds context that the process involves a one-time upload page, file bytes never pass through the chat, and the upload token is used subsequently, which enriches the behavioral understanding beyond 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 concise, consisting of two clear sentences with no extraneous information. It is front-loaded with the core purpose and immediately conveys the usage pattern.

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 tool with one parameter, no output schema, and low complexity, the description fully covers purpose, usage scenario, behavioral expectations, and follow-up steps. It is complete given the 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?

The single parameter 'filename' is fully covered by the schema description (100% coverage). The tool description does not add additional semantic detail about the parameter, so baseline score 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 explicitly states 'Get a one-time drag-and-drop upload page URL', clearly identifying the tool's verb (get) and resource (upload page URL). It also distinguishes from siblings by detailing the follow-up steps using the upload token.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use this tool ('when the document is a local file or a private Google Drive file') and what to do after ('pass the returned uploadToken to create_signing_session, create_envelope, or upload_document'). It could be improved by explicitly mentioning when not to use it (e.g., for direct file upload via chat).

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

resend_signing_session_otpResend signing session OTPAInspect

Resend the OTP challenge for a signing session, optionally over a specific channel (email/sms).

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoOverride OTP delivery channel.
sessionIdYesThe signing session ID.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate mutation (readOnlyHint=false) and non-idempotent behavior. The description adds that the resend can be over a specific channel, but does not disclose potential side effects like invalidating previous OTPs. It is adequate but not comprehensive.

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 with no unnecessary words. It conveys the essential action and optional channel parameter efficiently.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema, annotations present), the description covers the core functionality. It lacks some behavioral details like OTP expiration or session state requirements, but it is largely complete for practical use.

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 both parameters well. The description adds no new parameter meaning beyond what the schema provides, so baseline score 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 uses a specific verb+resource ('Resend the OTP challenge for a signing session') and clearly distinguishes this tool from siblings which handle other aspects of signing sessions (e.g., create, get, list). The optional channel override is also mentioned.

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

Usage Guidelines3/5

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

The description implies usage when needing to resend an OTP, but does not provide explicit guidance on when not to use it or alternatives. It lacks exclusions or context compared to siblings.

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

test_webhookTest webhookAInspect

Send a sample payload to a registered webhook and return the delivery result.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhookIdYesThe webhook ID to act on.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations indicate non-readOnly and non-destructive behavior, but the description does not disclose that sending a sample payload actually triggers the real webhook endpoint, which is a critical behavioral trait. The description adds minimal context beyond what annotations provide.

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, no fluff, front-loaded with action and resource. Every word earns its place.

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

Completeness3/5

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

For a simple test tool with one parameter and no output schema, the description is minimally complete. It lacks details on return format, errors, or side effects, but is adequate for basic understanding.

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% for the single parameter, and the description adds little extra meaning beyond 'the webhook ID to act on'. 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 action (send sample payload), resource (registered webhook), and outcome (return delivery result), distinguishing it from sibling tools like register_webhook or delete_webhook.

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?

No guidance on when to use vs alternatives, no prerequisites mentioned (e.g., webhook must be registered), and no context on expected behavior.

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

upload_documentUpload documentAInspect

Upload a base64-encoded PDF to an existing transaction (≤10MB inline; use presign for larger).

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
documentUrlNoDirect, public HTTPS link to the PDF (≤10MB) — server fetches it (not a Google Drive /view or private link).
uploadTokenNoToken from request_document_upload after the user uploaded the PDF. Provide one of documentBase64 / documentUrl / uploadToken.
transactionIdYesTransaction to attach the document to (txn_…).
documentBase64NoBase64-encoded PDF (≤10MB).

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive. The description adds the size constraint and presign hint. However, it does not disclose other behaviors like response format, error cases, or whether the document is immediately attached or queued.

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, efficient sentence that front-loads the core purpose and key constraint. Every word adds value, and it avoids redundancy.

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

Completeness3/5

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

Given the tool has 5 parameters and no output schema, the description could better explain the interplay between the three input methods (base64, URL, token) and what the function returns. It is sufficient for simple usage but lacks completeness for complex scenarios.

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 high (80%), so the description's role is limited. The description reiterates the base64 constraint but adds little beyond the schema's own parameter descriptions. No new semantic details are provided for the other parameters.

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

Purpose4/5

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

The description clearly states the verb (Upload) and resource (PDF to existing transaction), and mentions size limits. However, it only mentions base64-encoded PDF, while the schema also accepts documentUrl and uploadToken, which may confuse the agent about the full range of input methods.

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 a clear size threshold (≤10MB inline vs presign for larger), which guides when to use this tool versus request_document_upload or similar. It does not explicitly exclude other scenarios or mention alternatives for non-PDF files, but the context is adequate.

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

verify_documentVerify document signaturesA
Destructive
Inspect

⚠️ This performs a consequential, possibly irreversible action (legally-binding signature request and/or quota consumption). Confirm with the human before calling. Inspect an uploaded PDF for embedded electronic/digital signatures. Requires PRODUCTION credentials + the verification:write scope and CONSUMES verification quota. Not available in HML.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo
documentBase64YesBase64-encoded PDF to inspect for embedded signatures.

TDQS

A4/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds critical context: legally-binding signature request, quota consumption, and special credential requirements, which are beyond annotation information. No contradiction.

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

Conciseness4/5

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

The description is two sentences, but the first is a warning that adds important context. It is reasonably concise and front-loaded, though the warning could be slightly shorter.

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

Completeness2/5

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

There is no output schema, and the description does not explain what the tool returns (e.g., list of signatures, status). For a verification tool, this is a significant gap. The description also lacks details on error handling or pagination.

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

Parameters2/5

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

Schema has 2 parameters with only 50% description coverage (documentBase64 described, filename not). The description does not provide additional details for filename or clarify usage beyond what the schema already states. For low coverage, description should compensate, but it does not.

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 the tool inspects an uploaded PDF for embedded signatures. The verb 'Inspect' and resource 'uploaded PDF' are specific. This distinguishes it from sibling tools like verify_envelope, which likely verify other aspects.

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 warns about consequential nature, requires human confirmation, and lists prerequisites (PRODUCTION credentials, verification:write scope, quota consumption). It also notes unavailability in HML. However, it does not explicitly state when not to use or list alternatives.

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

verify_envelopeVerify envelope (public)A
Read-onlyIdempotent
Inspect

Publicly verify all signers of an envelope and get consolidated download URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
envelopeIdYesEnvelope ID to verify all signers for. Public endpoint.

TDQS

A3.9/5.0
Behavior4/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 value by stating the public nature and the consolidated download URLs, providing context beyond annotations. No contradiction.

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 with verb and resource upfront. No unnecessary words; every part adds value.

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?

Tool is simple with one parameter and no output schema. Description fully covers the purpose and return value, sufficient given the 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?

Schema description coverage is 100% with envelopeId already described as 'Public endpoint.' The main description does not add additional parameter meaning 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 clearly states the action (verify), the resource (envelope), and the result (consolidated download URLs). It distinguishes from sibling tools like verify_document and verify_evidence by focusing on envelope-level verification.

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?

No explicit guidance on when to use this tool versus alternatives. The description mentions 'publicly verify' but does not explain when public verification is appropriate or which sibling tools to use instead.

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

verify_evidenceVerify evidence (public)A
Read-onlyIdempotent
Inspect

Publicly verify a completed signature by its evidenceId. Returns status, document/evidence hashes, steps and signer display info. No authentication needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidenceIdYesEvidence ID (evd_…) to verify. Public — no signer PII is revealed.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, no destructiveness. Description adds that the verification is public and returns specific data (status, hashes, steps, display info), plus states no PII is revealed. 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 filler: states action, resource, return types, and authentication requirement. Front-loaded with key information.

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 simple tool with one required param and no output schema, the description fully covers what the tool does, what it returns, and when to use it. No gaps.

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 has 100% coverage with a clear description of the only parameter. Description does not add extra meaning beyond the schema, so 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?

Description clearly specifies the action ('verify a completed signature') and the resource ('evidenceId'). It distinguishes from siblings like 'verify_document' and 'verify_envelope' by focusing on evidence ID specifically.

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?

States when to use: with an evidenceId from a completed signature. Notes that no authentication is needed. Lacks explicit when-not-to-use or alternative tools, but context is clear enough.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 24 tool updatesv0.7.0
    • First observedadd_session_to_envelope
    • First observedcancel_signing_session
    • First observedcancel_transaction
    • First observedcreate_envelope
    • First observedcreate_signing_session
    • First observeddelete_webhook
    • First observeddownload_document
    • First observedget_envelope
    • First observedget_envelope_combined_stamp
    • First observedget_evidence
    • First observedget_signing_session
    • First observedget_signing_session_status
    • First observedget_transaction
    • First observedlist_signing_sessions
    • First observedlist_transactions
    • First observedlist_webhooks
    • First observedregister_webhook
    • First observedrequest_document_upload
    • First observedresend_signing_session_otp
    • First observedtest_webhook
    • First observedupload_document
    • First observedverify_document
    • First observedverify_envelope
    • First observedverify_evidence

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is potential confusion between create_signing_session (single-signer express) and add_session_to_envelope (adds to envelope). Descriptions are clear enough to differentiate.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_envelope, list_transactions, cancel_signing_session). No mixed conventions or inconsistent styles.

Tool Count4/5

24 tools is on the higher side but justified for a comprehensive electronic signature service covering envelopes, sessions, transactions, documents, webhooks, and verification. Each tool addresses a specific need.

Completeness4/5

The surface covers most lifecycle operations: create, read, cancel, list for envelopes and sessions; upload/download documents; webhook management; verification. Minor gaps like updating envelope details or removing a session are not critical.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with the BoldSign e-signature platform through its API. Supports managing documents, templates, contacts, users, and teams for electronic signature workflows.
    14
    94
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to manage document signing workflows via natural language, including creating envelopes, uploading documents, analyzing contracts, and verifying blockchain anchors.
    8
    50
    1
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables AI agents to manage Zyta Sign documents, signatures, and studies with secure authentication and permission-respecting operations.
    49
    22
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/signdocsbrasil/signdocs-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server