signwell
signwell.
SignWell documents sent for signature — create, send, follow, fetch the signed PDF.
setup & usage
⚠ your signwell api key
create a key in SignWell: Settings → API → Create API key, then paste it into oto.
X-Api-Key header. The API's test mode (test_mode) is free and has no legal value.▸ send a document to sign, track it, retrieve the pdf
five tools, verb in op:
signwell_document(op="create", files=[{name, file_url}], recipients=[{id:"1", name, email}], text_tags=True) creates a draft; review it, then signwell_document(op="send", document_id=…)oto_project_files(op="list") returns a signed download_url: that is the file_url to passsignwell_document(op="get", document_id=…) — status, and for each recipient their signing_link, whether they received an email (emailed) and where they aresignwell_document(op="remind", document_id=…)signwell_document(op="completed_pdf", document_id=…, audit_page=True)embedded_signing=True at creation: each recipient gets a signing_link that opens in a browsersignwell_template(op="create_document", template_id=…, recipients=[{id, placeholder_name, name, email}])signwell_bulk_send(op="csv_template"), fill it in, op="validate_csv", then op="create" (a preview until dry_run=False is passed)signwell_webhook(op="create", callback_url="https://…")placing the fields in the file (text tags): oto_guide op=read slug="signwell-envoi".
· what the tools do differently from the api
POST /documents SENDS by default. Here op="create" (and signwell_template(op="create_document")) creates a draft unless draft=False is explicit; sending is op="send".signing_url or embedded_signing_url depending on the mode; the view always returns it under signing_link, with emailed saying whether SignWell writes to that person. full=True returns the raw payload.id returned at creation — it cannot be found afterwards.dry_run=True: identical validation, nothing is written or sent; a recipient change returns a real diff, an access code is never rewritten in clear.· observed live (2026-09-16), to know before sending
test_mode document goes to the account holder, subject prefixed [TEST], with the intended recipient's name in the body. An "I received nothing" test is read in the holder's mailbox.Created → Sending → Sent. A document stayed in Sending for several minutes without the invitation going out, while an identical document created just after reached Sent. Only Sent (or later) attests the send.get a few seconds later lists them all.embedded_signing=True and send_email: false, the holder still received an "unable to send this document" notice for an invalid recipient address: do not count on the total absence of SignWell email. Cause not established.· verification status
client and tools derived from the OpenAPI definitions of the SignWell reference pages (read on 2026-09-16), and exercised live on 2026-09-16 with a real key (Business account), through the tools themselves:
signwell_account(op="me"); signwell_document — creating a test-mode draft from a base64 .docx with text tags (15 fields detected, deferred), get, dry_run previews of create, send and update_recipients (real diff), delete; signwell_template — create with text tags and two roles, get (status Available), delete; signwell_bulk_send(op="list") and op="csv_template" (the returned header is derived from the template's roles and field labels); signwell_webhook(op="list"); the 401 (invalid key) and 404 refusals.send_email: false — hence the observations of the previous note.{message, meta: {error, message, messages[]}} — the useful reason is in meta.messages.send through the tool, remind, real update_recipients and update_authentication, the signed PDF and the NOM-151 certificate of a completed document, create_document from a template, validate_csv and bulk send creation, webhook creation and deletion, the API applications.⚙ multiple comptes
this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='signwell') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='signwell', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
chargement…
utilisation
claude code — installe le plugin oto —
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.cli —
pipx install oto-cli puis oto signwell …