Server data from the Official MCP Registry
EAD Factory MCP — Digital Trust services APIs for your agents
EAD Factory MCP — Digital Trust services APIs for your agents
Valid MCP server (1 strong, 1 medium validity signals). 8 known CVEs in dependencies (0 critical, 6 high severity) Package registry verified. Imported from the Official MCP Registry.
5 files analyzed · 9 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Unverified package source
We couldn't verify that the installable package matches the reviewed source code. Proceed with caution.
Set these up before or after installing:
Environment variable: API_BASE_URL
Environment variable: FULL_FLOW_EMAIL_BASE
Environment variable: FULL_FLOW_FILE_PATH
Environment variable: OKTA_CLIENT_SECRET
Environment variable: OKTA_TOKEN_URL
Environment variable: POLL_INTERVAL_MS
Environment variable: SIGNATURE_API_BASE_URL
Environment variable: TRANSPORT
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-g-digital-by-garrigues-ead-factory": {
"env": {
"HTTP_PORT": "your-http-port-here",
"TRANSPORT": "your-transport-here",
"OKTA_SCOPE": "your-okta-scope-here",
"API_BASE_URL": "your-api-base-url-here",
"OKTA_CLIENT_ID": "your-okta-client-id-here",
"OKTA_TOKEN_URL": "your-okta-token-url-here",
"POLL_INTERVAL_MS": "your-poll-interval-ms-here",
"POLL_MAX_ATTEMPTS": "your-poll-max-attempts-here",
"OKTA_CLIENT_SECRET": "your-okta-client-secret-here",
"FULL_FLOW_FILE_PATH": "your-full-flow-file-path-here",
"FULL_FLOW_EMAIL_BASE": "your-full-flow-email-base-here",
"SIGNATURE_API_BASE_URL": "your-signature-api-base-url-here"
},
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx"
}
}
}From the project's GitHub README.
EAD Factory MCP — Digital Trust services APIs for your agents.
This MCP server bridges any MCP-compatible agent (Claude Code, Claude Desktop, Cursor, Windsurf, Cline, VS Code, JetBrains, Zed) to EADTrust's Digital Trust services: Evidence Manager (qualified digital evidence + timestamping) and Signature Manager (electronic signature workflows).
Need credentials? See: Get your testing credentials here!!
npx -y @g-digital/mcp-ead-factory
You will need Okta credentials (OKTA_CLIENT_ID + OKTA_CLIENT_SECRET) and at least the Evidence Manager + Signature Manager base URLs for the environment you target (see Environment URLs).
This MCP is published to every major MCP distribution channel by the g-digital MCP distribution pipeline. Pick whichever fits your stack:
| Channel | Install command / URL |
|---|---|
| npm | npx -y @g-digital/mcp-ead-factory — npmjs.com/package/@g-digital/mcp-ead-factory |
| Docker Hub | docker pull gdigital/ead-factory:latest — hub.docker.com/r/gdigital/ead-factory |
| MCP Official Registry | Auto-discovered as io.github.g-digital-by-Garrigues/ead-factory by any client that reads the registry — registry.modelcontextprotocol.io |
| n8n community node | In n8n Settings → Community Nodes → install @g-digital/n8n-nodes-ead-factory (works with the AI Agent node via usableAsTool) — npmjs.com/package/@g-digital/n8n-nodes-ead-factory |
| Smithery | smithery mcp install g-digital/ead-factory (from v1.0.7) — smithery.ai/servers/g-digital/ead-factory |
Every channel ships the same MCP server contract; the tools and env-var configuration below apply regardless of which install path you choose.
| Tool | Description |
|---|---|
generate_evidence | Full workflow: authenticate → SHA-256 hash → register evidence → upload file to S3 → poll until COMPLETED/ERROR |
get_evidence | Retrieve full evidence details by ID (status, timestamps, custody, metadata) |
| Tool | Description |
|---|---|
create_signature_request | Creates a new signature request (DRAFT). Supports fullFlow=true to complete the entire flow in one call using preconfigured participants |
add_document_to_signature_request | Adds a document to a DRAFT signature request and uploads the file to S3 |
add_signatory_to_document | Adds a signatory to a document within a signature request |
add_validator_to_signatory | Adds a validator to a signatory (must approve before the signatory can sign) |
add_observer_to_document | Adds an observer to a document (receives notifications but does not sign) |
activate_signature_request | Activates a signature request (DRAFT → ACTIVE), triggering notifications to signatories |
get_signature_request | Retrieves full details of a signature request by ID (status, documents, participants, history) |
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"servers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
{
"mcpServers": {
"ead-factory": {
"args": [
"-y",
"@g-digital/mcp-ead-factory"
],
"command": "npx",
"env": {
"API_BASE_URL": "",
"FULL_FLOW_EMAIL_BASE": "",
"FULL_FLOW_FILE_PATH": "",
"HTTP_PORT": "",
"OKTA_CLIENT_ID": "",
"OKTA_CLIENT_SECRET": "<PASTE_OKTA_CLIENT_SECRET_HERE>",
"OKTA_SCOPE": "",
"OKTA_TOKEN_URL": "",
"POLL_INTERVAL_MS": "",
"POLL_MAX_ATTEMPTS": "",
"SIGNATURE_API_BASE_URL": "",
"TRANSPORT": ""
}
}
}
}
Need credentials? See: https://eadtrust.example.com/onboarding
| Name | Required | Secret | Description |
|---|---|---|---|
API_BASE_URL | Yes | No | Evidence Manager API base URL |
FULL_FLOW_EMAIL_BASE | Yes | No | Full flow base email — used to compose participant emails (user+signatory@domain, etc.) |
FULL_FLOW_FILE_PATH | Yes | No | Full flow default file path |
HTTP_PORT | Yes | No | HTTP_PORT |
OKTA_CLIENT_ID | Yes | No | OKTA_CLIENT_ID |
OKTA_CLIENT_SECRET | Yes | Yes | OKTA_CLIENT_SECRET (See https://eadtrust.example.com/onboarding for credential acquisition.) |
OKTA_SCOPE | Yes | No | OKTA_SCOPE |
OKTA_TOKEN_URL | Yes | No | OAuth credentials (Okta client_credentials flow) Used both for calling Evidence Manager API and for verifying incoming Bearer tokens (HTTP mode) |
POLL_INTERVAL_MS | Yes | No | Polling configuration for evidence status |
POLL_MAX_ATTEMPTS | Yes | No | POLL_MAX_ATTEMPTS |
SIGNATURE_API_BASE_URL | Yes | No | Signature Manager API base URL |
TRANSPORT | Yes | No | Transport: "stdio" for local Claude Code, "http" for remote deployment with auth |
| Environment | API_BASE_URL | OKTA_TOKEN_URL |
|---|---|---|
| INT | https://api.int.gcloudfactory.com/digital-trust | https://legalappfactory.okta.com/oauth2/aus5zlw4kr0vhHKyx417/v1/token |
| PRE | https://api.pre.gcloudfactory.com/digital-trust | https://sso.garrigues.io.builders/oauth2/aus653dgdgTFL2mhw417/v1/token |
| PRO | https://api.gcloudfactory.com/digital-trust | https://legalappfactory.okta.com/oauth2/aus657e2pcoS6hOS6417/v1/token |
| Environment | API_BASE_URL |
|---|---|
| INT | https://api.int.eadtrust.gcloudfactory.com/digital-trust |
| PRO | https://api.eadtrust.gcloudfactory.com/digital-trust |
Set TRANSPORT=http to run the server as an HTTP service. The /mcp endpoint requires a valid Okta Bearer token (verified against the introspection endpoint derived from OKTA_TOKEN_URL). The /health endpoint is unauthenticated for monitoring.
Client (Claude Code / MCP client)
│
├─ stdio ──► McpServer
│
└─ HTTP ──► Express + Bearer auth (Okta introspect) ──► StreamableHTTP ──► McpServer
│
tools/call
│
▼
workflow.service
├── auth.service (Okta client_credentials → token cache)
├── hash.service (SHA-256 from local file)
├── evidence.service (POST /api/v1/private/evidences)
└── s3-upload.service (PUT presigned URL + retry)
generate_evidence — Input schema| Field | Type | Required | Description |
|---|---|---|---|
filePath | string | Yes | Absolute path to the file on disk |
evidenceId | string (UUID) | Yes | Unique ID for idempotency |
title | string | Yes | Human-readable title |
createdBy | string | Yes | Creator name (max 50 chars) |
capturedAt | string (ISO 8601) | Yes | Capture datetime |
custodyType | INTERNAL | EXTERNAL | No | Defaults to INTERNAL |
testimonyTSP | boolean | No | TSP via EADTrust (default true) |
testimonyDLT | boolean | No | DLT via Lacnet (requires tenant activation) |
requiredTestimonyProviders | string | No | Comma-separated: "TSP", "DLT", "TSP,DLT" |
metadata | string (JSON) | No | Custom key-value pairs as a JSON string |
POST {OKTA_TOKEN_URL} — OAuth client_credentials tokenPOST {API_BASE_URL}/api/v1/private/evidences — register evidenceGET {API_BASE_URL}/api/v1/private/evidences/{id} — fetch evidencePUT <presigned-s3-url> — upload file binaryMIT
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.