SignRequest MCP by usefulapi

Read documents, signature requests and templates; send, cancel and resend requests in SignRequest.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
95%
Naming quality
79%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'signrequest_get_template' description contains placeholder textin signrequest_get_template
  • LOWTool 'signrequest_resend_signrequest_email' name length outside 3-30 rangein signrequest_resend_signrequest_email
  • INFOTool description contains placeholder or incomplete textin signrequest_get_template

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,764Tokens (tool definitions)
~1.6 KBTypical response size
Significant attention impact (2.16% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "signrequest": {
      "url": "https://signrequest.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://signrequest.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢signrequest_list_documents(status, external_id, signrequest__who, signrequest__from_email, user__email, ...)

List documents of the team with status, signers state and signing log links. API: GET /documents/.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Document status code: co converting, ne new, se sent, vi viewed, si signed, do downloaded, sd signed and downloaded, ca cancelled, de declined, ec error converting, es error sending, xp expired.",
      "type": "string",
      "enum": [
        "co",
        "ne",
        "se",
        "vi",
        "si",
        "do",
        "sd",
        "ca",
        "de",
        "ec",
        "es",
        "xp"
      ]
    },
    "external_id": {
      "description": "Filter by your own external id.",
      "type": "string"
    },
    "signrequest__who": {
      "description": "Filter by sender: m = me, mo = me and others, o = others.",
      "type": "string",
      "enum": [
        "m",
        "mo",
        "o"
      ]
    },
    "signrequest__from_email": {
      "description": "Filter by the sender email.",
      "type": "string"
    },
    "user__email": {
      "description": "Filter by the document owner email.",
      "type": "string"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_get_document(document_uuid)

Get one document by uuid: status, signrequest with all signers, signing log, attachments, and temporary download links (pdf). API: GET /documents/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "document_uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The document uuid."
    }
  },
  "required": [
    "document_uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_search_documents(q, name, signer_emails, status, who, ...)

Search documents by free text, name, signer email or status. API: GET /documents-search/.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Free-text query.",
      "type": "string"
    },
    "name": {
      "description": "Filter by document name.",
      "type": "string"
    },
    "signer_emails": {
      "description": "Filter by signer email.",
      "type": "string"
    },
    "status": {
      "description": "Document status code: co converting, ne new, se sent, vi viewed, si signed, do downloaded, sd signed and downloaded, ca cancelled, de declined, ec error converting, es error sending, xp expired.",
      "type": "string",
      "enum": [
        "co",
        "ne",
        "se",
        "vi",
        "si",
        "do",
        "sd",
        "ca",
        "de",
        "ec",
        "es",
        "xp"
      ]
    },
    "who": {
      "description": "Filter by sender: m = me, mo = me and others, o = others.",
      "type": "string",
      "enum": [
        "m",
        "mo",
        "o"
      ]
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_list_signrequests(who, from_email, page, limit)

List signature requests (the sent requests with their signers). API: GET /signrequests/.

Input Schema

{
  "type": "object",
  "properties": {
    "who": {
      "description": "Filter by sender: m = me, mo = me and others, o = others.",
      "type": "string",
      "enum": [
        "m",
        "mo",
        "o"
      ]
    },
    "from_email": {
      "description": "Filter by the sender email.",
      "type": "string"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_get_signrequest(signrequest_uuid)

Get one signature request by uuid, with each signer's viewed, signed, declined and forwarded state. API: GET /signrequests/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "signrequest_uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The signature request uuid."
    }
  },
  "required": [
    "signrequest_uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_list_templates(page, limit)

List document templates (use a template uuid with signrequest_send_document). API: GET /templates/.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_get_template(template_uuid)

Get one template by uuid, with its signer placeholders. API: GET /templates/{uuid}/.

Input Schema

{
  "type": "object",
  "properties": {
    "template_uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The template uuid."
    }
  },
  "required": [
    "template_uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_list_teams(page, limit)

List the teams the token can see (name, subdomain, sandbox flag). API: GET /teams/.

Input Schema

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_get_team(subdomain)

Get one team by subdomain. API: GET /teams/{subdomain}/.

Input Schema

{
  "type": "object",
  "properties": {
    "subdomain": {
      "type": "string",
      "minLength": 1,
      "description": "The team subdomain (from signrequest_list_teams)."
    }
  },
  "required": [
    "subdomain"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_list_team_members(is_active, is_admin, user__email, page, limit)

List team members with admin, owner and active flags. API: GET /team-members/.

Input Schema

{
  "type": "object",
  "properties": {
    "is_active": {
      "description": "Only active (true) or inactive (false) members.",
      "type": "boolean"
    },
    "is_admin": {
      "description": "Only admins (true) or non-admins (false).",
      "type": "boolean"
    },
    "user__email": {
      "description": "Filter by member email.",
      "type": "string"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢signrequest_list_events(document__uuid, document__external_id, event_type, page, limit)

List document events (sent, viewed, signed, declined, cancelled, bounced) and their callback delivery state. API: GET /events/.

Input Schema

{
  "type": "object",
  "properties": {
    "document__uuid": {
      "description": "Only events of this document uuid.",
      "type": "string"
    },
    "document__external_id": {
      "description": "Only events of the document with this external id.",
      "type": "string"
    },
    "event_type": {
      "description": "Event type, for example signed, declined, sent, signer_signed, signer_email_bounced.",
      "type": "string"
    },
    "page": {
      "description": "Page number (default 1).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Results per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signrequest_send_document(signers, from_email, from_email_name, subject, message, ...)

WRITE: creates a document and e-mails a signature request to the signers right away (not undoable except with signrequest_cancel_signrequest). Give exactly one source: a template uuid, a public file_from_url, or base64 file_from_content with file_from_content_name. API: POST /signrequest-quick-create/.

Input Schema

{
  "type": "object",
  "properties": {
    "signers": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
            "description": "Signer email."
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "needs_to_sign": {
            "description": "false = the person only receives a copy (default true).",
            "type": "boolean"
          },
          "approve_only": {
            "description": "true = the person approves instead of signing.",
            "type": "boolean"
          },
          "order": {
            "description": "Signing order (0 first).",
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "language": {
            "description": "Signer language code, for example en, nl, de, fr.",
            "type": "string"
          }
        },
        "required": [
          "email"
        ]
      },
      "description": "Who must sign."
    },
    "from_email": {
      "description": "Sender email (a verified team member address).",
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "from_email_name": {
      "description": "Sender name shown in the e-mail.",
      "type": "string"
    },
    "subject": {
      "description": "E-mail subject.",
      "type": "string"
    },
    "message": {
      "description": "E-mail message.",
      "type": "string"
    },
    "name": {
      "description": "Document name.",
      "type": "string"
    },
    "template": {
      "description": "Template API url or uuid-based url from signrequest_list_templates (the url field).",
      "type": "string"
    },
    "file_from_url": {
      "description": "Public https URL of the file to sign.",
      "type": "string",
      "format": "uri"
    },
    "file_from_content": {
      "description": "Base64 file content.",
      "type": "string"
    },
    "file_from_content_name": {
      "description": "File name with extension for file_from_content.",
      "type": "string"
    },
    "external_id": {
      "description": "Your own reference id.",
      "type": "string"
    },
    "send_reminders": {
      "description": "Send automatic reminders.",
      "type": "boolean"
    },
    "auto_expire_days": {
      "description": "Days until the request expires.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "who": {
      "description": "Who signs: m = me, mo = me and others, o = others.",
      "type": "string",
      "enum": [
        "m",
        "mo",
        "o"
      ]
    }
  },
  "required": [
    "signers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signrequest_cancel_signrequest(signrequest_uuid)

WRITE: cancels a signature request that is not fully signed or declined. Signers who have not signed can no longer open the document. Not undoable. API: POST /signrequests/{uuid}/cancel_signrequest/.

Input Schema

{
  "type": "object",
  "properties": {
    "signrequest_uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The signature request uuid."
    }
  },
  "required": [
    "signrequest_uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴signrequest_resend_signrequest_email(signrequest_uuid)

WRITE: sends the signature request e-mail again as a reminder to every signer who did not sign yet but already got the e-mail. API: POST /signrequests/{uuid}/resend_signrequest_email/.

Input Schema

{
  "type": "object",
  "properties": {
    "signrequest_uuid": {
      "type": "string",
      "minLength": 1,
      "description": "The signature request uuid."
    }
  },
  "required": [
    "signrequest_uuid"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools