{"name":"io.github.g-digital-by-Garrigues/ead-factory","slug":"g-digital-by-garrigues-ead-factory","title":null,"description":"MCP server for EAD Factory: qualified evidence, signature, notifications and chat via AI agents.","url":"https://mcp.market/server/g-digital-by-garrigues-ead-factory","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":25,"stars":0,"forks":0,"downloads_week":113,"last_push_at":"2026-09-09T09:39:46.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/g-digital-by-Garrigues/EAD-Factory-MCP","website":null,"version":"1.4.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@g-digital/mcp-ead-factory","version":"1.4.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to \"true\" to allow plain http:// fileUrl downloads in evidence_create (default https-only). Private/internal addresses are rejected regardless (resolution-time check; see the documented DNS TOCTOU limitation in the hosted-deployment runbook).","name":"MCP_ALLOW_INSECURE_FILE_URL"},{"description":"Escape hatch for MCP_HTTP_PUBLIC=true WITHOUT inbound-token introspection: set to \"true\" ONLY when an upstream gateway already verifies Bearer tokens. The server logs a prominent warning and forwards tokens upstream unverified.","name":"MCP_ALLOW_UNVERIFIED_BEARER"},{"description":"Comma-separated allowed Host headers. Empty = Host validation disabled (default). When set, requests with a Host outside the list are rejected.","name":"MCP_ALLOWED_HOSTS"},{"description":"Comma-separated allowed browser Origins (DNS-rebinding defense). Empty = reject any request carrying an Origin header; non-browser clients (CLI/SDK) send no Origin and are always allowed. Use '*' to allow all.","name":"MCP_ALLOWED_ORIGINS"},{"description":"Gateway ROOT URL (e.g. https://api.int.gcloudfactory.com) — each manager's path prefix is appended automatically; do NOT include a manager path here","name":"MCP_API_BASE_URL"},{"description":"Full base URL override for the chat manager, used as-is (default: https://api.gcloudfactory.com/chat-bot-manager)","name":"MCP_API_BASE_URL_CHAT"},{"description":"Full base URL override for the evidence manager, used as-is (default: https://api.gcloudfactory.com/digital-trust)","name":"MCP_API_BASE_URL_EVIDENCE"},{"description":"Full base URL override for the notification manager, used as-is (default: https://api.gcloudfactory.com/notifications)","name":"MCP_API_BASE_URL_NOTIFICATION"},{"description":"Full base URL override for the signature manager, used as-is (default: https://api.gcloudfactory.com/signature-manager)","name":"MCP_API_BASE_URL_SIGNATURE"},{"description":"Interface the HTTP transport binds to. Default 127.0.0.1 (localhost only). Set 0.0.0.0 to expose on all interfaces (containers do this automatically).","name":"MCP_HTTP_HOST"},{"description":"Maximum accepted POST /mcp request-body size in bytes (default 16777216 = 16 MiB — sized so base64 file uploads within the documented tool limits fit). Oversized requests get a 413 JSON-RPC error before/while reading — closes a memory-exhaustion DoS vector in public deployments. Note: base64 file sources are capped by this limit BEFORE MCP_FILE_MAX_BYTES applies.","name":"MCP_HTTP_MAX_BODY_BYTES"},{"description":"Set to \"true\" for public/multi-tenant deployments. Activates Host validation and refuses to start unless (1) MCP_ALLOWED_ORIGINS or MCP_ALLOWED_HOSTS is set AND (2) inbound Bearer introspection is configured (MCP_SVC_INTROSPECT_URL + MCP_SVC_CLIENT_ID/SECRET) or MCP_ALLOW_UNVERIFIED_BEARER=true is set explicitly (fail-closed).","name":"MCP_HTTP_PUBLIC"},{"description":"OAuth2 client_credentials client ID.","isRequired":true,"name":"MCP_SVC_CLIENT_ID"},{"description":"OAuth2 client_credentials client secret. (See https://digitaltrust.gcloudfactory.com for credential acquisition.)","isRequired":true,"isSecret":true,"name":"MCP_SVC_CLIENT_SECRET"},{"description":"RFC 7662 token introspection URL for inbound Bearer verification in HTTP mode. Opt-in, and required when MCP_HTTP_PUBLIC=true. Leave empty for stdio (local) use.","name":"MCP_SVC_INTROSPECT_URL"},{"description":"Optional OAuth2 scope for the service-account token request.","name":"MCP_SVC_SCOPE"},{"description":"Token endpoint URL for the OAuth2 client_credentials flow.","isRequired":true,"name":"MCP_SVC_TOKEN_URL"},{"description":"HTTP port when running in hosted (HTTP) mode; ignored in stdio mode","name":"PORT"}]}],"tools":[{"name":"activate_signature_request","description":"Activates a signature request, sending signing notifications to every added signatory \\u2014 after this, no more documents or signatories can be added (use add_validator_to_signatory / add_observer_to_document before activating if you need those roles). Requires: create_signature_request \\u2192 signatureRequestId, at least one document (add_document_to_signature_request) with its bytes uploaded, a","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_document_to_signature_request","description":"Adds a document to a signature request \\u2014 the first step of a 2-step upload (add, then PUT the file bytes to the returned upload URL). Use once per document that needs signing. Requires: create_signature_request \\u2192 signatureRequestId, and the document's SHA-256 hash (compute it before calling, or use the signature_request_full composite tool). Add signatories with add_signatory_to_document","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_observer_to_document","description":"Adds an observer to a signature request's document: a person who receives read-only visibility of the process and the signed result without signing. Add observers BEFORE activate_signature_request. Requires: create_signature_request \\u2192 signatureRequestId, add_document_to_signature_request \\u2192 documentId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_signatory_to_document","description":"Adds a signatory (by name + email) to a document within a signature request. Use once per person who needs to sign that specific document. Requires: create_signature_request \\u2192 signatureRequestId, add_document_to_signature_request \\u2192 documentId. Add all signatories before calling activate_signature_request \\u2014 signatories cannot be added after activation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_validator_to_signatory","description":"Adds a validator to a document's signatory: a person who must approve (validate) that signatory's identity or the document before the signature can proceed. Add validators BEFORE activate_signature_request. Requires: add_document_to_signature_request \\u2192 documentId, add_signatory_to_document \\u2192 signatoryId. The signature_request_full composite accepts validators inline.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_signature_request","description":"Creates a new signature request \\u2014 the top-level container for documents and signatories in a signing flow. Use this first, before add_document_to_signature_request. No prerequisites. Example: create_signature_request({ name: 'NDA \\u2014 Acme Corp', createdBy: 'jane@company.com' }) returns { id, ... } \\u2014 use the returned id as signatureRequestId in subsequent calls.","write_action":true,"price_micros":0,"input_schema":null},{"name":"ead_factory_help","description":"Returns an overview of EAD Factory's managers (Evidence, Signature, Notification, Chat), their key tools and starting points, and guidance on when to use a composite workflow tool (e.g. evidence_create_sealed) versus the atomic tools. Call this first if you're unsure which tool to use \\u2014 no credentials needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_create","description":"Creates a new case file \\u2014 the top-level container for evidence groups, evidence, and reports. Use this first, before any other Evidence-manager tool. No prerequisites. Unlike most create tools, `id` is CALLER-SUPPLIED (generate a fresh UUID v4 yourself, this API does not assign one) \\u2014 there is no `name` field, use `title` instead. Example: evidence_case_file_create({ id: '<generate a UUI","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_delete_bulk","description":"Permanently deletes SEVERAL case files in one call. Destructive and not reversible \\u2014 confirm the caseFileIds first (evidence_case_file_search) and prefer closing a case file via evidence_case_file_status_update when you only need to end work on it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_get","description":"Retrieves a case file's details by id. Use to confirm a case file exists, or to check its status before creating evidence groups or reports under it. Requires: evidence_case_file_create \\u2192 caseFileId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_relationship_assign","description":"Assigns a relationship on a case file, linking it to an external/related entity reference for traceability. Use after creating the case file when your workflow tracks which matter, client, or system record it belongs to. Requires: evidence_case_file_create \\u2192 caseFileId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_report_generate","description":"Generates the SIGNED evidentiary report of a case file (the certified document covering its sealed evidence). Returns a reportId \\u2014 then call evidence_case_file_report_pdf_url_get (PDF) or evidence_case_file_report_zip_url_get (full package) to download. Requires: evidence_case_file_create \\u2192 caseFileId; preview first with evidence_case_file_report_preview.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_report_pdf_url_get","description":"Retrieves a download URL for the signed PDF document of a case-file report. Requires: evidence_case_file_report_generate \\u2192 reportId (plus caseFileId). For the full evidence package (PDF + files + verification data) use evidence_case_file_report_zip_url_get.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_report_preview","description":"Generates an UNSIGNED preview of a case file's evidentiary report so you can check its content before producing the signed version with evidence_case_file_report_generate. Requires: evidence_case_file_create \\u2192 caseFileId, with sealed evidence groups inside.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_report_update","description":"Updates a previously generated case-file report's metadata. Requires: evidence_case_file_report_generate \\u2192 reportId (and the caseFileId it belongs to). Does not re-generate the report content \\u2014 generate a new report for updated evidence.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_report_zip_url_get","description":"Retrieves a download URL for the complete ZIP package of a case-file report (signed PDF plus evidence files and verification material). Requires: evidence_case_file_report_generate \\u2192 reportId (plus caseFileId).","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_search","description":"Searches case files with optional filters (name, status, dates, pagination). Use to find a caseFileId when you don't have it, or to list what exists before creating a new case file with evidence_case_file_create.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_status_update","description":"Changes a case file's lifecycle status (OPEN or CLOSE). Use CLOSE when work on the case file is finished and it should no longer accept new evidence groups; reopen with OPEN. Requires: evidence_case_file_create or evidence_case_file_search \\u2192 caseFileId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_update","description":"Updates a single case file's editable metadata (e.g. name, description). Requires: evidence_case_file_create or evidence_case_file_search \\u2192 caseFileId. To change its OPEN/CLOSE lifecycle state use evidence_case_file_status_update instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_case_file_update_bulk","description":"Updates the editable metadata of SEVERAL case files in one call (each entry carries its own caseFileId and changes). Prefer evidence_case_file_update for a single case file. Requires: the caseFileIds of every case file to update (evidence_case_file_search to find them).","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_delete","description":"Permanently deletes one evidence by evidenceId (no group path needed). Destructive; sealed content should not be deleted \\u2014 use only for drafts or mis-registered evidence. Requires: evidence_group_evidence_register or generate_evidence \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_download_url_create","description":"Creates a temporary download URL for an evidence's stored file when you only hold the evidenceId (no group path needed \\u2014 same bytes as evidence_group_evidence_download_url_create). Requires: generate_evidence or evidence_group_evidence_register \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_close","description":"Seals (closes) an evidence group, triggering qualified timestamping \\u2014 after this, no more evidence can be added. Use only after every evidence registered in the group has had its file bytes uploaded to the presigned URL from evidence_group_evidence_register. Requires: evidence_group_create \\u2192 evidenceGroupId, evidence_case_file_create \\u2192 caseFileId, and the current evidencesCount. ASY","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_create","description":"Creates an evidence group inside a case file \\u2014 evidence records are always registered inside a group, never standalone (except via the legacy generate_evidence tool). Use when starting a new batch of related evidence (e.g. all files for one incident). Like evidence_case_file_create, `id` is CALLER-SUPPLIED (generate a fresh UUID v4 yourself). Requires: evidence_case_file_create \\u2192 caseFil","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_delete_bulk","description":"Permanently deletes SEVERAL evidence groups of one case file in one call. Destructive \\u2014 prefer evidence_group_discard for a single group, and never delete sealed groups that back issued reports. Requires: caseFileId + the evidenceGroupIds to delete (evidence_group_search to find them).","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_discard","description":"Discards (deletes) an OPEN evidence group and its registered evidences \\u2014 use to abandon a group you no longer intend to seal. Destructive; sealed (CLOSED) groups are immutable evidence and should not be discarded. Requires: caseFileId + evidence_group_create \\u2192 evidenceGroupId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_evidence_delete","description":"Permanently deletes one evidence from an evidence group. Only makes sense while the group is still OPEN (sealed groups are immutable). Requires: caseFileId + evidenceGroupId + evidence_group_evidence_register \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_evidence_download_url_create","description":"Creates a temporary download URL for an evidence file stored in a group (INTERNAL custody). Use to retrieve the original bytes after upload. Requires: caseFileId + evidenceGroupId + evidence_group_evidence_register \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_evidence_get","description":"Gets one evidence's details (metadata, hash, custody, upload state) inside a specific evidence group. Requires: evidence_case_file_create \\u2192 caseFileId, evidence_group_create \\u2192 evidenceGroupId, evidence_group_evidence_register \\u2192 evidenceId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_evidence_register","description":"Register a new evidence in a group \\u2014 the first step of a 2-step upload (register, then PUT the file bytes to the returned upload URL). Use for each file you want to add to an OPEN evidence group. Requires: evidence_group_create \\u2192 evidenceGroupId, evidence_case_file_create \\u2192 caseFileId, and the file's SHA-256 hash (compute it before calling, or use the evidence_create_sealed composit","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_evidence_upload_url_create","description":"Creates a fresh presigned upload URL for an ALREADY-REGISTERED evidence in a group \\u2014 step 2 of the register-then-upload flow (PUT the file bytes to the returned URL). Use when the URL from evidence_group_evidence_register expired or was lost. Requires: caseFileId + evidenceGroupId + evidenceId. evidence_create_sealed does all of this automatically.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_get","description":"Gets one evidence group's details \\u2014 status (OPEN/CLOSED), seal information, and its evidences with their upload states. Use to verify every file was uploaded before evidence_group_close, or to check the seal after closing. Requires: caseFileId + evidence_group_create \\u2192 evidenceGroupId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_search","description":"Searches evidence groups across case files with optional filters (status, dates, pagination). Use to find an evidenceGroupId or list groups pending sealing; for one group's full detail use evidence_group_get.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_group_update","description":"Updates an evidence group's editable metadata (e.g. name, description). Only meaningful while the group is OPEN \\u2014 sealed groups are immutable. Requires: caseFileId + evidence_group_create \\u2192 evidenceGroupId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_group_update_bulk","description":"Updates the editable metadata of SEVERAL evidence groups in one call (each entry carries its own evidenceGroupId and changes). Prefer evidence_group_update for a single group. Requires: the evidenceGroupIds to update (evidence_group_search to find them).","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_multipart_upload_start","description":"Starts a MULTIPART upload session for a large evidence file (returns the upload coordinates for uploading the file in parts). Use when a single presigned PUT is not enough for the file size. Requires: an already-registered evidence (evidence_group_evidence_register or generate_evidence \\u2192 evidenceId) and the file name.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_report_delete","description":"Permanently deletes a generated report by its reportId. Destructive \\u2014 the signed document and its package stop being downloadable. Requires: evidence_case_file_report_generate \\u2192 reportId. The underlying case file and its evidence are NOT touched.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_report_pdf_url_get","description":"Retrieves a download URL for a report's signed PDF when you only hold the reportId (no caseFileId path needed \\u2014 same document evidence_case_file_report_pdf_url_get returns). Requires: evidence_case_file_report_generate \\u2192 reportId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_report_zip_url_get","description":"Retrieves a download URL for a report's complete ZIP package when you only hold the reportId (same package evidence_case_file_report_zip_url_get returns). Requires: evidence_case_file_report_generate \\u2192 reportId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_search","description":"Searches evidences across the tenant with optional filters (state, dates, pagination) \\u2014 not scoped to one group. Use to find an evidenceId or audit what exists; for one group's content use evidence_group_get instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_temp_file_upload_url_create","description":"Creates a presigned upload URL for a TEMPORARY file not yet registered as evidence. Use for staging content that another operation will reference; for real evidence prefer the register-then-upload flow (evidence_group_evidence_register) or the evidence_create_sealed composite, which handle registration and upload together.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_thumbnail_url_get","description":"Retrieves a temporary URL for an image evidence's thumbnail at the requested size \\u2014 use for quick visual verification without downloading the original file. Requires: caseFileId + evidenceGroupId + evidenceId (image-type evidence only) and a thumbnailSize path value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_update","description":"Updates a single evidence's editable metadata (e.g. name, description) by evidenceId. The file content and hash are immutable \\u2014 re-register a new evidence for changed files. Requires: evidence_group_evidence_register or generate_evidence \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_update_bulk","description":"Updates the editable metadata of SEVERAL evidences in one call (each entry carries its own evidenceId and changes). Prefer evidence_update for a single evidence. Requires: the evidenceIds to update (evidence_search to find them).","write_action":true,"price_micros":0,"input_schema":null},{"name":"evidence_upload_url_create","description":"Creates a fresh presigned upload URL for an already-registered evidence by evidenceId \\u2014 step 2 of the register-then-upload flow (PUT the file bytes to the returned URL). Pairs with generate_evidence the way evidence_group_evidence_upload_url_create pairs with evidence_group_evidence_register. Requires: generate_evidence \\u2192 evidenceId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"generate_evidence","description":"Register a new evidence (legacy top-level name; not scoped to a specific evidence group at creation time, unlike evidence_group_evidence_register). Use for standalone evidence outside the group-based flow, or for continuity with the legacy EAD-Factory-MCP integration. Requires the file's SHA-256 hash. Prefer evidence_create_sealed for a new, complete evidence group + evidence + seal flow. Custody ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_evidence","description":"Retrieves an evidence record's details and status by id (legacy top-level name). Use to check an evidence's timestamping status (IN_PROCESS / COMPLETED / ERROR) after registration. Requires: generate_evidence or evidence_group_evidence_register \\u2192 evidenceId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_signature_request","description":"Retrieves a signature request's details and status by id (legacy top-level name). Use to check signing progress after activation. Requires: create_signature_request \\u2192 signatureRequestId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"notification_certificate_generate","description":"Generates a delivery-certificate report for one or more notifications on a request. Use once notification_request_status shows the relevant notifications have left their in-flight state. Requires: notification_request_create \\u2192 requestId, notification_request_status \\u2192 notificationIds. Returns a reportId \\u2014 call notification_certificate_pdf_url_get with it to get the actual download UR","write_action":false,"price_micros":0,"input_schema":null},{"name":"notification_certificate_pdf_url_get","description":"Retrieves the download URL for a previously generated notification delivery certificate. Requires: notification_certificate_generate \\u2192 reportId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"notification_document_add","description":"Registers one or more document attachments (metadata only \\u2014 fileName + SHA-256 hash) on a draft notification request. Use once per batch of documents before activating. Requires: notification_request_create \\u2192 requestId. This only registers metadata; call notification_document_upload_url_create for each registered attachment to get a URL to PUT the actual file bytes to.","write_action":false,"price_micros":0,"input_schema":null},{"name":"notification_document_download_url_create","description":"Creates a presigned download URL for a document attachment on a notification request. Requires: notification_request_create \\u2192 requestId, notification_document_add \\u2192 attachmentId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"notification_document_upload_url_create","description":"Creates a presigned upload URL for a document attachment already registered via notification_document_add \\u2014 PUT the file bytes to the returned URL. Requires: notification_request_create \\u2192 requestId, notification_document_add \\u2192 attachmentId.","write_action":true,"price_micros":0,"input_schema":null},{"name":"notification_receiver_add","description":"Adds one or more receivers to a draft notification request \\u2014 each receiver becomes its own per-channel notification under the shared requestId (there is no separate receiverId; track receivers by the notificationIds this call returns). Use once per batch of receivers before calling notification_request_send. Requires: notification_request_create \\u2192 requestId. Each receiver's shape depends","write_action":false,"price_micros":0,"input_schema":null},{"name":"notification_request_create","description":"Creates a new notification request (draft) \\u2014 the top-level container for receivers and attachments in a certified-notification flow. Use this first, before any other Notification-manager tool. No prerequisites. Set `autosend: true` to also send immediately on activation of the first receiver batch, or leave it false to add receivers/documents over several calls before calling notification_req","write_action":true,"price_micros":0,"input_schema":null},{"name":"notification_request_send","description":"Activates a notification request, triggering delivery to every added receiver across their configured channels (email/SMS/Noticeman/WhatsApp/RCS). Runs as an MCP Task (bounded-polling until every receiver's notification leaves its in-flight state \\u2014 EAD Factory's upstream emits no events for this transition). Requires: notification_request_create -> requestId, at least one receiver added via n","write_action":true,"price_micros":0,"input_schema":null},{"name":"notification_request_status","description":"Searches notifications, optionally filtered by requestId and/or delivery state \\u2014 the closest equivalent to \"checking a request's status\": a request fans out into one notification per receiver, each with its own state history, so this returns every notification matching the filter with its current state. Omit requestId to search across every request. Requires: notification_request_create \\u219","write_action":false,"price_micros":0,"input_schema":null},{"name":"signature_certificate_generate","description":"Generates the well-signed appearance certificate document for a signature request. Use once every signatory has signed (check with get_signature_request). Requires: create_signature_request \\u2192 signatureRequestId. Unlike EAD Enterprise's equivalent tool (a GET that polls an already-generated URL), this triggers generation and returns the result in the same call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"signature_coordinate_set","description":"Sets the on-page (x, y, page) coordinates where a signatory's signature appears on a document. Use after add_signatory_to_document if the signature placement needs to be explicit rather than auto-positioned. Requires: create_signature_request \\u2192 signatureRequestId, add_document_to_signature_request \\u2192 documentId, add_signatory_to_document \\u2192 signatoryId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"signature_document_download_url_get","description":"Retrieves the download link for the FINAL, well-signed version of a document \\u2014 the actual signed file, once every signatory has signed. Requires: create_signature_request \\u2192 signatureRequestId, add_document_to_signature_request \\u2192 documentId. Use get_signature_request first to confirm signing is complete before calling this. Not to be confused with signature_certificate_generate, whic","write_action":false,"price_micros":0,"input_schema":null},{"name":"signature_request_cancel","description":"Cancels an active signature request \\u2014 no further signing can occur. Use when a request was activated in error or is no longer needed. Requires: create_signature_request \\u2192 signatureRequestId. Cannot be undone.","write_action":true,"price_micros":0,"input_schema":null},{"name":"signature_request_list","description":"List signature requests, optionally filtered by close condition among other criteria. Use to find a request when you don't have its id (e.g. by name or status). Signature-request close condition: ALL_REQUIRED = The request only closes once EVERY signatory has signed. | PARTIAL_ALLOWED = The request can close once the minimum required signatories have signed, even if others haven't yet.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":74,"grade":"B","scanned_at":"2026-09-19T20:59:00.741Z","report":{"scannerVersion":"0.1.7","scannedAt":"2026-09-19T20:59:00.682Z","components":{"code":{"score":20,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/server.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@g-digital/mcp-ead-factory","version":"1.4.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-09-09T09:47:12.020Z","repositoryUrl":"git+https://github.com/g-digital-by-Garrigues/EAD-Factory-MCP.git","weeklyDownloads":113}],"repo":{"found":true,"owner":"g-digital-by-Garrigues","repo":"EAD-Factory-MCP","archived":false,"pushedAt":"2026-09-09T09:39:46Z","stars":0,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/276937538?v=4","ownerCreatedAt":"2026-04-17T09:42:59Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/276937538?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":113,"license":"MIT","lastPushAt":"2026-09-09T09:39:46.000Z","score":25}}}},"grade_history":[],"reviews":[]}