Documentation
Two ways to build on Atlas: the REST API from your code, or the MCP server from an AI agent. Both cover the full signing lifecycle.
OpenAPI spec · llms.txt · REST API · MCP
Base URL: https://api.atlaswork.ai
Authenticate with an organization API key (format atlas_sk_...). Create and revoke keys in the dashboard. Pass the key as a Bearer token or in the x-api-key header.
Create an envelope from a document. Atlas detects the signature fields and returns a review URL along with the envelope ID.
curl -X POST https://api.atlaswork.ai/api/v1/envelopes \
-H "Authorization: Bearer atlas_sk_..." \
-H "Content-Type: application/json" \
-d '{
"document": { "url": "https://example.com/nda.pdf" },
"participants": [
{ "name": "Alice Chen", "email": "alice@example.com" }
]
}'Then dispatch it. The first signer gets email once you call send.
curl -X POST https://api.atlaswork.ai/api/v1/envelopes/{id}/send \
-H "Authorization: Bearer atlas_sk_..." \
-H "Content-Type: application/json" \
-d '{}'Write endpoints accept an optional Idempotency-Key header so a retried request cannot create or send twice.
POST /api/v1/envelopes
Create an envelope from a document URL, base64 content, text, or a deferred upload. Returns the envelope and a review URL.
GET /api/v1/envelopes
List envelopes, newest first. Filter by status, paginate with a cursor.
GET /api/v1/envelopes/{id}
Read one envelope with participants, fields, and detection state.
GET /api/v1/envelopes/{id}/status
Poll signing progress: status, signed count, current signer.
PUT /api/v1/envelopes/{id}/draft
Update a draft: document name, participants, fields.
POST /api/v1/envelopes/{id}/send
Send the envelope. The first signer gets email.
POST /api/v1/envelopes/{id}/remind
Email the next pending signer. Rate limited.
POST /api/v1/envelopes/{id}/void
Cancel the envelope so it can no longer be signed.
GET /api/v1/envelopes/{id}/events
Read the envelope event log for lifecycle updates.
GET /api/v1/envelopes/{id}/extract
Get structured parties, dates, and signed field values from a completed envelope.
POST /api/v1/envelopes/{id}/upload/complete
Finish a deferred document upload and start field detection.
GET /api/v1/templates
List saved templates.
GET /api/v1/templates/{id}
Read a template with its roles and prefill keys.
POST /api/v1/templates/{id}/envelopes
Create an envelope from a template by assigning recipients to roles.
Atlas does not push webhooks today. Poll GET /api/v1/envelopes/{id}/status for progress or read the event log at GET /api/v1/envelopes/{id}/events.
Full request and response shapes live in the OpenAPI spec.
Endpoint: https://mcp.atlaswork.ai/mcp
A hosted MCP server over Streamable HTTP. Auth is OAuth 2.1 with PKCE and dynamic client registration: point your client at the endpoint, sign in when prompted, and approve the scopes. API keys are for the REST API only and are never entered into an MCP client. For new documents, agents prepare the envelope and return a review URL, and a human clicks Send before any signer gets email. Sends from a saved template go out on their own unless you pass auto_send: false.
mcp.json and complete the OAuth prompt in the browser.{
"mcpServers": {
"atlas": {
"url": "https://mcp.atlaswork.ai/mcp"
}
}
}Clients that support OAuth discover all of this from the endpoint. The 401 challenge points at the protected-resource metadata, which names the authorization server. You only need these values if you are wiring a client by hand.
https://app.atlaswork.ai/api/authhttps://app.atlaswork.ai/.well-known/oauth-authorization-server/oauth2/authorize, /oauth2/token, /oauth2/register, /oauth2/revoke, /oauth2/introspectenvelopes:read, envelopes:write, documents:write, extract:read, offline_access. Read tools need envelopes:read. Write tools need envelopes:write.send_contract_for_review
Create a review-first envelope from text, a PDF or DOCX URL, a host attachment, or a deferred upload.
complete_upload_session
Finish a deferred upload after the user drops the file on the upload page.
send_contract_from_template
Create an envelope from a saved template by assigning signers to roles. Sends right away unless auto_send is false.
list_templates
List saved templates with names and IDs.
get_template
Read a template with its roles, prefill keys, and an example send call.
get_envelope
Read an envelope with participants, fields, and detection state.
check_signing_status
Poll signing progress: status, signed count, current signer.
list_envelopes
List envelopes with an optional status filter.
extract_contract_data
Get structured parties, dates, and signed field values from a completed envelope.
remind_signer
Email the next pending signer. Only after the envelope is sent. Rate limited.
void_envelope
Cancel an envelope so it can no longer be signed.