{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T20:25:57.127Z","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign.md","server":{"slug":"io-usefulapi-oksign","name":"OKSign MCP by usefulapi","registryName":"io.usefulapi/oksign","description":"Read documents, signatures, contacts and credits; manage contacts and remove documents.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"oksign","type":"remote","identifier":"https://oksign.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign","version":"1.8.3","transport":null,"scoredAt":"2026-11-05T15:00:51.142Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-45,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":67},{"date":"2026-10-31","total":66},{"date":"2026-10-30","total":63},{"date":"2026-10-29","total":63},{"date":"2026-10-28","total":62}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"oksign","type":"remote","identifier":"https://oksign.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign.md"}],"facts":[{"label":"Endpoint","value":"https://oksign.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.8.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"oksign_get_credits","title":"Get credits and storage","description":"The account's remaining credits (quantity), when they expire (validuntil), the plan (subscription), whether it is paid, and storage used (account_size) versus the maximum (max_account_size) in bytes. GET /v1/credits/retrieve.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":63},{"name":"oksign_list_users","title":"List users","description":"The users of the OKsign account: name, email, mobile, role, status, language and the immutable signerid (use it to tell who signed). GET /v1/users/retrieve.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":103},{"name":"oksign_list_email_templates","title":"List email templates","description":"The email templates defined in the account: id, name, subject, HTML body, reminder_days and repeat. GET /v1/email-templates/retrieve.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":96},{"name":"oksign_list_contacts","title":"List contacts","description":"The account's contact list: name, email, mobile, actingas (capacity) and group. GET /v1/contacts/retrieve.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":92},{"name":"oksign_list_active_documents","title":"List active documents","description":"Documents in the account's Active Documents tab: docid, filename, creator, createdate, signatures required/valid, orgtoken, status (1 active, 10 briefcase, 11 document in a briefcase, 12 reusable, 14 template), viaapi and signed_docid when signed. OKsign allows this call only once every 3 minutes (429 otherwise). GET /v1/documents/active.","inputs":[{"name":"filename_contains","type":"string","required":false,"description":"Only documents whose filename contains this text (case-insensitive)."},{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."},{"name":"orgtoken","type":"string","required":false,"description":"Only documents uploaded with this organizational token."},{"name":"signed","type":"boolean","required":false,"description":"true = only documents that have a signed copy, false = only those without."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":206},{"name":"oksign_list_signed_documents","title":"List signed documents","description":"Documents uploaded through the API that were signed between two moments: signed_docid, source_docid, filename, signerid, signing source, signature counts, completed fields, credits per signer and timestamp. Keep the window short; OKsign allows this call only once every 3 minutes (429 otherwise). GET /v1/documents/signed.","inputs":[{"name":"end","type":"string","required":true,"description":"End of the window, ISO 8601 with a timezone."},{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."},{"name":"start","type":"string","required":true,"description":"Start of the window, ISO 8601 with a timezone."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":171},{"name":"oksign_list_notification_errors","title":"List email and SMS delivery errors","description":"Email and SMS delivery problems (hard_bounce, soft_bounce, blocked, spam, invalid_email, deferred) for signing invitations sent between two moments: recipient, source_docid, reason, orgtoken and timestamp. Only error events are reported. OKsign allows this call only once every 3 minutes (429 otherwise). GET /v1/webhooks/retrieve.","inputs":[{"name":"end","type":"string","required":true,"description":"End of the window, ISO 8601 with a timezone."},{"name":"limit","type":"integer","required":false,"description":"Items to return, 1-500 (default 100). OKsign has no paging; the list is cut here."},{"name":"offset","type":"integer","required":false,"description":"Items to skip (default 0). Pass the previous reply's next_offset."},{"name":"start","type":"string","required":true,"description":"Start of the window, ISO 8601 with a timezone."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":176},{"name":"oksign_document_exists","title":"Check a document exists","description":"Whether a (signed) document still exists on the platform; returns its filename and whether it is a template. GET /v1/document/exists.","inputs":[{"name":"docid","type":"string","required":true,"description":"OKsign document id (docid, source_docid or signed_docid) like 670816-483B7F54-8591-DDF9-FA77-9042AED3E8FD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":91},{"name":"oksign_get_document_metadata","title":"Get signed document metadata","description":"Metadata of a signed document (pass the signed_docid): filename, size, signatures required/valid, who signed, and the values of all completed fields (can contain personal data). Metadata v2. GET /v2/metadata/retrieve.","inputs":[{"name":"signed_docid","type":"string","required":true,"description":"OKsign document id (docid, source_docid or signed_docid) like 670816-483B7F54-8591-DDF9-FA77-9042AED3E8FD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":113},{"name":"oksign_get_form_descriptor","title":"Get a document's form descriptor","description":"The form descriptor of an uploaded document: its signature and form fields (type, page, position, signer, required, signing options) and the signing URL of each signer. The URLs let their holders sign, so share them only with the signer. GET /v1/formdesc/retrieve.","inputs":[{"name":"docid","type":"string","required":true,"description":"OKsign document id (docid, source_docid or signed_docid) like 670816-483B7F54-8591-DDF9-FA77-9042AED3E8FD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":121},{"name":"oksign_get_linked_document","title":"Find the source or signed copy of a document","description":"Given a source_docid, the signed_docid of its signed copy (absent if not signed yet) and the timestamp; given a signed_docid, the source_docid. An empty result means the document never existed here or was removed. GET /v1/linkedlist/retrieve.","inputs":[{"name":"docid","type":"string","required":true,"description":"OKsign document id (docid, source_docid or signed_docid) like 670816-483B7F54-8591-DDF9-FA77-9042AED3E8FD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":123},{"name":"oksign_upsert_contacts","title":"Add or update contacts","description":"WRITE: add contacts to the account's contact list, or update them when a contact with the same email AND name exists (its other fields are replaced). Existing contacts are never cleared. Contacts OKsign rejects are skipped and reported. POST /v1/contacts/upload.","inputs":[{"name":"contacts","type":"array","required":true,"description":"Contacts to add or update."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":77},{"name":"oksign_remove_contacts","title":"Remove contacts","description":"WRITE: permanently remove contacts from the account's contact list. A contact is identified by its email AND name. Cannot be undone (re-add with oksign_upsert_contacts). POST /v1/contacts/remove.","inputs":[{"name":"contacts","type":"array","required":true,"description":"Contacts to remove (email and name)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":67},{"name":"oksign_remove_document","title":"Remove a document","description":"WRITE: permanently remove a (signed) document from the OKsign platform. This deletes the file and its pending webhook events and cannot be undone. A signed document removed right after its callback may answer 'Too soon': retry later. DELETE /v1/document/remove.","inputs":[{"name":"docid","type":"string","required":true,"description":"OKsign document id (docid, source_docid or signed_docid) like 670816-483B7F54-8591-DDF9-FA77-9042AED3E8FD."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":114}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:00:51.000Z","track":"remote","endpoint":"https://oksign.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"oksign.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-28","recent":[{"id":"chg_01a19ade-6e72-7e27-ab3d-d0b5d0e6648b","kind":"check.unverifiable","summary":"Stability (0.13 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e72-7e27-ab3d-d0b5d0e6648b"},{"id":"chg_01a19ade-6e73-7dab-887e-74c382ac6ca7","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e73-7dab-887e-74c382ac6ca7"},{"id":"chg_01a19ade-6e74-7401-a0f5-4ba00002f992","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e74-7401-a0f5-4ba00002f992"},{"id":"chg_01a19ade-6e74-7883-9423-2cd747f740e5","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e74-7883-9423-2cd747f740e5"},{"id":"chg_01a19ade-6e74-7c82-9eba-6e1da96f7beb","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e74-7c82-9eba-6e1da96f7beb"},{"id":"chg_01a19ade-6e75-7146-a58e-aaebf7e5b038","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e75-7146-a58e-aaebf7e5b038"},{"id":"chg_01a19ade-6e75-75b3-b182-bf81e5a271ce","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e75-75b3-b182-bf81e5a271ce"},{"id":"chg_01a19ade-6e75-7a69-aca1-54cb75eeff5c","kind":"score.total_changed","summary":"Trust score (67 → 18)","materiality":"functional","direction":"regression","scoreDelta":-49,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a19ade-6e75-7a69-aca1-54cb75eeff5c"},{"id":"chg_01a195b7-3cda-71c9-a2e1-eeb7bc19b231","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a195b7-3cda-71c9-a2e1-eeb7bc19b231"},{"id":"chg_01a193fa-9dbe-7ed2-876f-2599566e0844","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dbe-7ed2-876f-2599566e0844"},{"id":"chg_01a193fa-9dc2-73f1-b73d-e318391975de","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc2-73f1-b73d-e318391975de"},{"id":"chg_01a193fa-9dc2-7c35-9781-3c051b5844e3","kind":"prompt.added","summary":"New prompt “add_or_update_signing_contacts”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc2-7c35-9781-3c051b5844e3"},{"id":"chg_01a193fa-9dc3-741c-8678-b9b872d080c2","kind":"prompt.added","summary":"New prompt “review_delivery_errors_and_account_credits”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc3-741c-8678-b9b872d080c2"},{"id":"chg_01a193fa-9dc3-7b90-915d-31f58e9717be","kind":"prompt.added","summary":"New prompt “review_documents_awaiting_signatures”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc3-7b90-915d-31f58e9717be"},{"id":"chg_01a193fa-9dc4-7418-9103-572766eec118","kind":"prompt.added","summary":"New prompt “review_recently_signed_documents”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc4-7418-9103-572766eec118"},{"id":"chg_01a193fa-9dc4-7c20-8dcf-5ee10eb7298b","kind":"server.version_changed","summary":"Server version (1.4.0 → 1.6.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc4-7c20-8dcf-5ee10eb7298b"},{"id":"chg_01a193fa-9dc5-75f9-adec-a0b347ae519f","kind":"protocol.version_changed","summary":"MCP protocol version (2025-06-18 → 2025-11-25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc5-75f9-adec-a0b347ae519f"},{"id":"chg_01a193fa-9dc5-7c70-affd-8663c7b04fc9","kind":"score.total_changed","summary":"Trust score (64 → 66)","materiality":"functional","direction":"improvement","scoreDelta":2,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a193fa-9dc5-7c70-affd-8663c7b04fc9"},{"id":"chg_01a1931e-c578-74a1-99c7-76f0e27eba1e","kind":"server.version_changed","summary":"Server version (1.3.0 → 1.4.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a1931e-c578-74a1-99c7-76f0e27eba1e"},{"id":"chg_01a191d5-47a3-78db-a90c-929a3da15255","kind":"server.version_changed","summary":"Server version (1.2.2 → 1.3.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign#chg-chg_01a191d5-47a3-78db-a90c-929a3da15255"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign","markdown":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-oksign/oksign.xml","external":[{"label":"Remote endpoint","href":"https://oksign.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/oksign/"}]}}