Can an AI agent use DocuSeal?

As of 6 Oct 2026, an AI agent gets into DocuSeal on its own and does 100% of the core work.

Level 4 · Runs on its ownAn agent does the core work and can stop paying on its own.
  • Find: Some docs for agents: llms.txt and an OpenAPI.
  • Access: Key by API.
  • Use: 100% of the work.
  • Pay: Reaches the checkout: Stopped at the card form.
  • Leave: Leaves on its own: Nothing to cancel, deletes its account.

To reach L5 · Autonomous: pay without a person.

What the levels mean

Driven 6 Oct 20261 drive so farRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverGet in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 13 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in DocuSeal.

On its own

  • Sign up for a free account and get an API key without any human help
  • Create, edit, clone, merge, organize and archive document templates
  • Send documents for signature with custom email text, track and update them, and download the signed file and its audit trail
1 more
  • In its own browser: sign, decline, fill a public signing link, upload an attachment, and add a witness

What it can't, and why

  • Sign or act as the person signing, through the APIsigning is only available on the signing web page, by design
  • Use production features like webhooks, reminders, bulk sending or team accountsthese require a paid plan; the free plan is a developer sandbox
  • Upgrade to the paid plan on its ownpayment only works through a checkout page needing a human's credit card
1 more
  • Delete the account through an API callaccount deletion is only available via the website's settings page
On its own, over the API

Can an AI agent sign up for DocuSeal on its own?

Yes, over the API, without a browser. web sign-up form submitted headless: no CAPTCHA, no phone, logged in at once

Docs search server only

Does DocuSeal have an MCP server, and can an agent connect to it?

DocuSeal's docs have an MCP server for searching them. The drive found no MCP server that works the product itself. The server lists 2 tools and speaks the older 18 Jun 2025 MCP spec.

A new agent can get in on its own: in the drive of 6 Oct 2026, our agent signed up and got its key without a person.

What the drive found

APIOpenAPIMCP · docsCLISDKllms.txtWebhooksSandbox
On its own, over the API

How does an AI agent get a DocuSeal API key?

In the drive of 6 Oct 2026, our agent got its DocuSeal API key over the API, without a browser or a person. API key shown in the console after an emailed 6-digit code

On its own, over the API

Can an AI agent delete its DocuSeal account?

Yes, over the API, without a browser. Settings > Account > Delete My Account web form posted with curl, no password asked; account scheduled for deletion within 2 months, API key 401 afterwards. No API/CLI route

Reaches the checkout

Can an AI agent pay for DocuSeal?

Reaches the checkout: stopped at the card form.

  • Stripe Checkout

It has a free plan.

What would let agents pay on their own
  1. Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.Step-by-step guide
  2. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).Step-by-step guide

No 402/x402/MPP/UCP, no registry listing; console Upgrade to Pro opens Stripe Checkout with card fields ($20/user/month). Not completed: no card

From the drive of 6 Oct 2026.

For the team behind DocuSeal.

Where agents stop in DocuSeal today, and the fixes that get them further, highest impact first.

Reaches the checkout

The fixes, highest impact first

  1. Add an API route to delete the account
  2. Label Basic keys as Developer Sandbox keys
  3. Return 404 and problem+json with rate-limit headers
3 more fixes
  1. Upgrade MCP to the 28 Jul 2026 spec with account tools
  2. Expose template recipient preferences in the API
  3. Offer a machine payment path for Pro Step-by-step guide
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L4 · Runs on its own badge

Behind the level.

The part scores and the measures behind them.

Part scores and the measures · paid plans

Part scores

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: not found
  • CLI: found

Not measured in this drive: Holds up, Docs match (part of an Audit).

The measures

  1. Work done100
  2. Reliability100
  3. Crash test–

Needs a paid plan

Not counted in the level. Our drive used free plan (Basic; API runs as the free Developer Sandbox).

Needs a paid plan
CapabilityPlan
Automated remindersPro
SMS phone verificationPro
ID card / KBAPro
QeS/AeSPro
Bulk sendPro
Private templatesPro
WebhooksPro
EmbeddingPro
Users and rolesPro
Teams/tenantsPro
SAML SSOPro
Company logoPro
Gmail/Outlook senderPro
Custom domainPro annual

For agents and builders.

The drive as data, every checkpoint and all 54 attempts.

How an agent connects · 5 tips
  • Start at www.docuseal.com/llms.txt and console.docuseal.com/openapi.json; auth is one header, X-Auth-Token
  • Reveal the API key in console with the email code; send X-CSRF-Token and Origin with the form posts
  • Use {{Name;role=Signer;type=text}} tags in PDFs; give HTML field tags an explicit width/height or they get no position
  • Signer steps need a browser: run the whole signing flow in one script, the form resets on reload; a share link accepts one submission per email
  • A missing id returns 403 Not authorized, not 404
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlesswww.docuseal.com/llms.txt, .md for every page, Accept: text/markdown honoured, OpenAPI 3.1.0 at console.docuseal.com/openapi.json
  2. Sign upHeadlessweb sign-up form submitted headless: no CAPTCHA, no phone, logged in at once
  3. VerifyNot neededno email verification required; the account worked immediately
  4. KeyHeadlessAPI key shown in the console after an emailed 6-digit code
  5. First callHeadlessGET https://api.docuseal.com/templates with X-Auth-Token -> 200
  6. First actionHeadlessPOST /templates/html created a template with fields
  7. PayNot triedNo 402/x402/MPP/UCP, no registry listing; console Upgrade to Pro opens Stripe Checkout with card fields ($20/user/month). Not completed: no card
  8. CancelNot neededNothing to cancel: our agent used the free plan.
  9. DeleteHeadlessSettings > Account > Delete My Account web form posted with curl, no password asked; account scheduled for deletion within 2 months, API key 401 afterwards. No API/CLI route
The attempt log · 54 attempts
Attempt log
CapabilityRouteResultEvidence
robots/aipref: Read robots.txt on docuseal.com and wwwnonedone ✓robots.txt: User-agent: * / Allow: / (www adds Sitemap). No Content-Usage or Content-signal lines; no Content-Usage response header on www.docuseal.com
llms.txt: Fetch llms.txtnonedone ✓https://www.docuseal.com/llms.txt 200 text/plain, H1 # DocuSeal, extensive sections; https://docuseal.com/llms.txt 404
markdown docs: Accept: text/markdown on docs page and .md URLnonedone ✓GET https://www.docuseal.com/docs/api with Accept: text/markdown -> 200 content-type text/markdown, vary: Accept-Encoding (no Vary: Accept). /docs/api.md -> 200 text/markdown
OpenAPI: Fetch OpenAPI specapidone ✓https://console.docuseal.com/openapi.json 200 application/json, openapi: 3.1.0, 17 paths/23 operations, servers api.docuseal.com and api.docuseal.eu; includes POST /submissions/emails
MCP version: POST server/discover to https://mcp.docuseal.com, then initializemcpdone ✓server/discover -> HTTP 400 JSON-RPC -32601 Unknown method (legacy). initialize offering 2026-07-28 -> protocolVersion 2025-06-18, serverInfo docuseal-mcp-server 1.0.0, capabilities tools. tools/list: search, load_resource (docs only, no account actions). No auth. /server-card 404, PRM 404
cards: Agent card, AI catalog, MCP server cardnonedone ✓https://www.docuseal.com/.well-known/agent-card.json 200 JSON, protocolVersion 1.0, supportedInterfaces url https://mcp.docuseal.com protocolBinding JSONRPC (that endpoint is an MCP server, not A2A). www ai-catalog.json 404. docuseal.com/.well-known/{ai-catalog.json,agent-card.json,agent.json,mcp/server-card.json} 200 application/json but empty body (no card)
oauth metadata: OAuth AS / PRM metadatanonedone ✓docuseal.com/.well-known/oauth-authorization-server: issuer https://docuseal.com/, authorization_code+refresh_token, client_secret_post; no registration_endpoint, no CIMD, no device flow, no agent_auth. /.well-known/oauth-protected-resource 200 text/plain empty
find docs: Find API docs, OpenAPI, llms.txtnonedone ✓llms.txt lists API reference (.md), OpenAPI 3.1 at console.docuseal.com/openapi.json, SDKs, CLI, MCP
sign up: Sign up with inbox via the web form, headless (curl)apidone ✓Web sign-up form (first/last name, company, password, server US) submitted headless; logged in at once (/settings/account 200). No CAPTCHA or bot check on the form
verify email: Wait for verification mailnonedone ✓No verification mail required: account usable immediately after sign-up; only mails received were API key access codes
get API key: Reveal API key in console.docuseal.com/api headlessapidone ✓console.docuseal.com/api: key masked; revealing it asks for the password or an emailed code. The 'API key access code' mail arrived in seconds; entering the code revealed the key
first API call: GET /templates with X-Auth-Tokenapidone ✓GET https://api.docuseal.com/templates -> 200, data[0] Sample Document id 6242063. Bad key -> 401 {"error":"Not authenticated"} application/json (not problem+json)
first real action: Create a template from HTMLapidone ✓POST /templates/html -> 200 id 6242096 with fields Company (text), Sig (signature); GET /templates/6242096 returns it
Create a fillable template from a PDF, DOCX or HTML file: Create templates from HTML and from a PDF with {{tag}} text tagsapidone ✓POST /templates/html -> 6242096; POST /templates/pdf (base64 PDF with {{Full Name;role=Signer;type=text}} and {{Signature;...}}) -> 6242098 with 2 detected fields each with 1 area; GET /templates/{id} confirms
Edit template fields and signer roles: Rename template, rename role, add a date field via a new documentapidone ✓PUT /templates/6242098 {name, roles:[Client], folder_name} -> GET shows role Client owning both fields; PUT /templates/6242096/documents (html with date-field) -> GET shows fields Company, Sig, Date and docs AD Test NDA.pdf, Annex.pdf
Organize templates into folders: Move template into folder AgentDrivesapidone ✓PUT /templates/6242098 folder_name=AgentDrives -> GET /templates shows folder_name AgentDrives (clone inherited it)
Clone an existing template: Clone template 6242098apidone ✓POST /templates/6242098/clone {name: AD Clone} -> id 6242100; GET /templates lists it with 2 fields, same folder
Merge multiple templates: Merge 6242096 and 6242098apidone ✓POST /templates/merge {template_ids:[6242096,6242098]} -> id 6242101 with 3 documents and 5 fields from both; GET /templates confirms fields 5, docs 3
Send a signature request: Send template 6242098 to our own inbox with a custom subject/bodyapidone ✓POST /submissions {template_id, send_email:true, submitters:[{role:Client,email:the agent's inbox}], message} -> submission 11928160, submitter 15434608 status sent; GET /submissions/11928160 status pending; invite mail with subject AgentDrives test request arrived in our inbox at 01:32:57
Customize email content sent to signers: Custom subject and body with variables on a submissionapidone ✓message.subject/body in POST /submissions; received mail subject AgentDrives test request, body Please sign AD PDF Agreement v2: <link> (variables {{template.name}} and {{submitter.link}} expanded)
Sign a document as a submitter: Open invite link, fill Full Name, type signature, Sign and Completebrowserdone ✓pw on https://docuseal.com/s/BKZHVeSzGiV2FT: page shows Document has been signed!; GET /submitters/15434608 status completed, values Full Name=AgentDrives Test, Signature png URL
Download signed documents and audit log: Fetch signed PDF and audit logapidone ✓GET /submissions/11928160/documents -> agreement url; downloaded signed.pdf (PDF 1.4, contains /ByteRange digital signature); audit_log_url -> audit.pdf (2 pages)
One-off signature request from HTML without a saved template: POST /submissions/html with a City text field and a signature fieldapidone ✓POST /submissions/html -> submission 11928471 (source api, submitter 15434935 awaiting, fields City/Sig); GET /submissions/11928471 status pending, template: null (no saved template appears in GET /templates)
Update a submission: Rename submission and set expiryapidone ✓PUT /submissions/11928471 {name, expire_at 2026-12-31 12:00 UTC} -> GET shows name AD One-off renamed, expire_at 2026-12-31T12:00:00.000Z
Pre-fill submitter values and re-send invitation: PUT submitter values City=Amsterdam, send_email trueapidone ✓PUT /submitters/15434935 -> GET status sent, sent_at 2026-10-06T01:35:27Z, values City=Amsterdam; invite mail You are invited to sign a document arrived 01:35:27
List and inspect submissions: GET /submissions?limit=5apidone ✓returns both submissions with status pending/completed and pagination {count,next,prev} cursor
List and inspect submitters: GET /submitters and /submitters/{id}apidone ✓GET /submitters lists 15434935 (sent) and 15434608 (completed, 2 values); GET /submitters/15434608 values match what was typed in the signing form
Decline to sign: Open invite link for submitter 15434935 and decline with a reasonbrowserdone ✓page: Form has been declined on October 6, 2026 at 1:36 AM; GET /submitters/15434935 status declined, declined_at 2026-10-06T01:36:29Z
Archive a submission: DELETE /submissions/11928471apidone ✓DELETE -> {id, archived_at}; GET shows archived_at set; GET /submissions?archived=false omits it; PUT {archived:false} unarchives (archived_at null)
Archive a template: DELETE /templates/6242100apidone ✓DELETE -> archived_at set; GET /templates/6242100 shows archived_at; GET /templates no longer lists 6242100
Collect via shared public signing link: Open https://docuseal.com/d/{template slug}, enter our second inbox, fill and signbrowserdone ✓GET /submissions?template_id=6242098 shows new submission 11928629 source link, submitter the agent's inbox completed
Collect a file attachment from a signer: One-off HTML submission with a file-field; signer uploads attach.txt in the signing formbrowserdone ✓POST /submissions/html (file-field) -> submitter 15435114; browser: CONTINUE, setInputFiles attach.txt, sign -> Document has been signed!; GET /submitters/15435114 values Upload=[.../attach.txt]; fetching that URL returns AgentDrives attachment test
Sign in person: Logged-in host opens submission 11928657 > SIGN IN-PERSON and signs on the same devicebrowserpartial ✓submission page shows SIGN IN-PERSON link to /s/R1wGK6n8BFiuRZ; signed in the host browser; GET /submitters/15435145 status completed; Event Log lists created via API, viewed, started, completed but no event that names in-person signing
pay step: Probe agent payment rails and the upgrade path, without payingnonedone ✓Unauthenticated API calls -> 401 {"error":"Not authenticated"}, no 402, no PAYMENT-REQUIRED / WWW-Authenticate: Payment; x402./mpp./agents.docuseal.com do not resolve; /.well-known/ucp empty (docuseal.com) or 404 (www); no x-payment-info in OpenAPI; not found in x402 Bazaar or mpp.dev/api/services; no x402/MPP/agentic commerce text in llms.txt or pricing.md. Console /plans Upgrade to Pro opens Stripe Checkout (checkout.stripe.com cs_live_..., card fields). Not completed: no card
cancel plan: Find how to cancel/downgradenoneskippedNo plan started. Docs (resources/manage-subscription.md): manage via Console Plans > Manage > Stripe billing page; no billing API in OpenAPI
Automated reminders: Check plan for Automated remindersnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Automated reminders: Basic No, Pro Yes
SMS phone verification: Check plan for SMS phone verificationnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Phone number 2FA: Basic No; Request signature via SMS: Basic No
ID card / KBA verification: Check plan for ID card / KBA verificationnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): ID card verification: Basic No ($2/verification); KBA: Basic No ($2/KBA)
QeS/AeS: Check plan for QeS/AeSnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): EU Qualified Signature: Basic No ($2-$4/QeS)
Bulk send from spreadsheet: Check plan for Bulk send from spreadsheetnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Bulk send from spreadsheet: Basic No
Private templates: Check plan for Private templatesnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Private templates: Basic No
Embedded signing/builder: Check plan for Embedded signing/buildernoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Embedded signing: Basic No; Embedded form builder: Basic No
Users and roles: Check plan for Users and rolesnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): User roles: Basic No
Teams/tenants: Check plan for Teams/tenantsnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Teams and Tenants: Basic No
SAML SSO: Check plan for SAML SSOnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): SAML SSO: Basic No
Company logo: Check plan for Company logononeplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Company logo: Basic No
Connected Gmail/Outlook sender: Check plan for Connected Gmail/Outlook sendernoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Console Cloud Plans lists Connect your Gmail or Outlook email under Pro
Custom domain: Check plan for Custom domainnoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Custom domain: Basic No, Pro annual plan only
Invite a witness to co-sign: Two-party template (Signer, Witness); enable Invite by Signer in template Preferences; Signer signs and invites an inbox as witnessbrowserdone ✓Template created via POST /templates/html; Preferences > Recipients > Invite by Signer saved in the web UI (GET /templates/6242698 shows Witness invite_by_uuid = Signer uuid); after signing, the form asked Invite Witness; GET /submissions/11928732 shows submitter 15435255 role Witness the agent's inbox status sent
Send a signature request: Error handling: invalid template id and invalid submitter emailapifailed ✓template_id 1 (not ours) -> 403 {"error":"Not authorized"}; role Nope + email not-an-email -> 422 {"error":"email is invalid in `submitters[0]`."}; GET /templates/999 -> 403 Not authorized (not 404). application/json, not problem+json; no RateLimit headers seen on any response
delete account: Settings > Account > Delete My Account, posted headless via the web formapidone ✓POST /settings/account _method=delete (web UI form, no password asked) -> 200 Your account will be permanently deleted within 2 months ... Your email address has been released immediately. Afterwards GET api.docuseal.com/templates with our key -> 401 Not authenticated; /settings/account -> 302 /sign_in
Collect a payment from a signer: Payment field in signing flownoneskippedPayment field needs a connected Stripe account (faq/how-to-set-up-subscription-payments-using-stripe-payment-field); not driven: no Stripe account and no spending allowed
Webhook notifications: Configure webhooknoneplan_gated ✓www.docuseal.com/pricing.md comparison table (cloud): Webhooks: Basic No, Pro Yes. console.docuseal.com/webhooks still shows a Test mode webhook form (URL + 11 events form.*, submission.*, template.*); delivery not driven
Automate from natural-language chat via AI agent integration: Check the agent integrationsmcpskippedOfficial MCP server https://mcp.docuseal.com exposes only search and load_resource (docs). Account actions from chat run through the Claude connector / ChatGPT app inside those products (OAuth at docuseal.com/oauth/authorize); not driven in this run

Also in E-signature.