Capabilities & tools
What you can do today
Section titled “What you can do today”The Scrive MCP covers finding, preparing, sending and following up on documents, plus the basics of multi-document bundle flows. Most tools take a document or draft id that the agent gets from list_documents or list_flow_drafts; the agent chains them for you.
- Find documents by title, party name, status, tag or date.
- Prepare documents from an uploaded PDF or a template, with parties, eID authentication, delivery methods and signing order.
- Send and follow up: start signing, remind, cancel, download the signed PDF.
- Prepare bundle flows: create a bundle draft, add PDFs and participants.
- Report on daily or monthly usage.
Read and write actions
Section titled “Read and write actions”Some tools are read-only. The rest change data in Scrive. A few of those cannot be undone or reach other people, and are annotated as destructive so your AI client asks before running them: start_signing, cancel_document, start_flow and delete_flow_draft. remind_document sends email or SMS to parties too, so treat it the same way. Keep those confirmations on.
download_document does not change anything in Scrive, but it is not annotated as read-only, so some clients ask before running it too.
Links back to Scrive
Section titled “Links back to Scrive”Tool results link to the documents, flow drafts and flows they touch, and the MCP asks the agent to include the link whenever it tells you about one. Documents link to https://scrive.com/new/document/<id>, flow drafts to https://scrive.com/new/flow/editor/<id> and started flows to https://scrive.com/new/started-process/<flow_id>.
File uploads and downloads
Section titled “File uploads and downloads”Some tools move PDF files between your computer and Scrive: create_document, set_file, add_document_to_draft and download_document. They open a small panel inside your chat, built on the MCP Apps extension, where you pick the file to upload or click to download. Each PDF can be up to 30 MB, and add_document_to_draft takes up to 25 at once. Once an upload finishes, the panel shows an Open in Scrive link.
Clients without MCP Apps support see a text message asking you to pick a file and cannot complete the upload. Claude renders these panels; in clients that do not, create documents from templates with create_from_template instead.
Find and read
Section titled “Find and read”| Tool | Type | Description |
|---|---|---|
list_documents | Read | Lists your documents with filters and sorting. Matches titles and party names. |
get_document | Read | Returns a document’s full JSON, optionally narrowed to chosen properties. |
download_document | Read | Opens a panel to download the document’s main PDF, the sealed file once signed. |
Prepare
Section titled “Prepare”| Tool | Type | Description |
|---|---|---|
create_document | Write | Uploads a PDF from your computer as a new document in preparation. Opens a file picker. |
create_from_template | Write | Creates a new document from one of your templates. |
set_file | Write | Replaces the main PDF of a document in preparation. Opens a file picker. |
update_document | Write | Edits a document’s settings: title, deadlines, messages, language, tags, display options and parties. |
add_party | Write | Adds a signing party, viewer or approver to a document. |
update_party | Write | Changes a party’s role, details, authentication or delivery settings. |
Send and follow up
Section titled “Send and follow up”| Tool | Type | Description |
|---|---|---|
start_signing | Write, confirm | Starts the signing process and sends the invitations. |
remind_document | Write, confirm | Sends a reminder to every party who has not signed yet. |
cancel_document | Write, confirm | Cancels a pending document. |
Journey flows
Section titled “Journey flows”| Tool | Type | Description |
|---|---|---|
create_flow_draft | Write | Creates a new flow draft with a title. |
list_flow_drafts | Read | Lists your flow drafts, with pagination. |
get_flow_draft | Read | Returns a flow draft’s documents, participants and steps. |
add_document_to_draft | Write | Adds one or more PDFs to a flow draft. Opens a file picker. |
add_participant_to_draft | Write | Adds a participant with an action and regenerates the flow’s steps. |
start_flow | Write, confirm | Starts the flow and sends the first invitations. |
delete_flow_draft | Write, confirm | Deletes a flow draft. |
Account
Section titled “Account”| Tool | Type | Description |
|---|---|---|
get_usage_stats | Read | Daily or monthly usage statistics for you or your company. |
Four further tools with names starting with an underscore, such as _create_document_upload, exist only for the upload and download panels to call. They are hidden from the agent.
Find and read
Section titled “Find and read”list_documents
Section titled “list_documents”Lists documents with filtering and sorting. search_text matches document titles and party names, not the text inside documents.
| Input | Type | Description |
|---|---|---|
max_results | integer | Page size. Default 20. |
offset | integer | Number of documents to skip. Default 0. |
status | string[] | preparation, awaiting_start, pending, closed, canceled, timedout, rejected, document_error. |
mtime | object | start_time and end_time, ISO 8601: last modified within the range. |
tag | object | name and value: documents carrying that tag value. Ignored unless both are given. |
has_tag | string | Documents carrying a tag with this name. |
is_author | boolean | Only documents you authored. |
author_id | string | Only documents authored by this user id. |
user_can_sign | string | Only documents this user id can sign. |
search_text | string | Case-insensitive match on title and party names. |
is_template, is_not_template | boolean | Templates only, or documents only. |
is_in_trash, is_not_in_trash | boolean | Trashed only, or not trashed. |
is_signable_on_pad | boolean | Documents that can be signed in person on a pad. |
sorting | object[] | sort_by (title, status, mtime, author) and order (ascending, descending). |
Returns offset, total_matching and a compact documents list with id, title, status, mtime and url.
get_document
Section titled “get_document”Retrieves a document’s full JSON representation.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
properties | string[] | Only return these top-level properties: id, title, parties, file, sealed_file, author_attachments, ctime, mtime, timeout_time, auto_remind_time, status, days_to_sign, days_to_remind, display_options, invitation_message, sms_invitation_message, confirmation_message, sms_confirmation_message, lang, api_callback_url, object_version, access_token, date_format, timezone, tags, is_template, is_saved, is_shared, is_trashed, is_deleted. Omit for the whole document. |
The result always carries the document’s url, even when narrowed. A document with many parties runs to tens of thousands of tokens. The agent narrows properties when it only needs part of it.
download_document
Section titled “download_document”Opens a panel with a download button for the document’s main PDF: the sealed file once the document is closed, otherwise the current main file.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
Prepare
Section titled “Prepare”create_document
Section titled “create_document”Uploads a PDF file to Scrive as a new document in preparation. Takes no inputs: it opens a file picker in the chat for you to choose the PDF. Returns the new document’s id, and the panel links to it in Scrive. Add parties and start signing next.
create_from_template
Section titled “create_from_template”Creates a new document from a template.
| Input | Type | Description |
|---|---|---|
document_id | string | The template’s document id, found with list_documents and is_template. Required. |
Returns the new document’s id and link.
set_file
Section titled “set_file”Sets the main PDF of a document in preparation. Opens a file picker for the PDF.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
update_document
Section titled “update_document”Updates the metadata of a document in preparation. Only the keys provided in document change.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
document | object | The changes, see below. Required. |
object_version | integer | The document’s object_version as last seen. The update is rejected with a 409 if the document has changed since, which prevents overwriting a concurrent edit. |
return_properties | string[] | Narrow the returned document to these top-level properties, as for get_document. |
Returns the updated document with its url.
Keys accepted in document:
| Key | Type | Description |
|---|---|---|
title | string | Document title. |
days_to_sign | integer | 1 to 365. |
days_to_remind | integer or null | Days before an automatic reminder. |
invitation_message, confirmation_message | string | Email texts. |
sms_invitation_message, sms_confirmation_message | string | SMS texts. |
lang | string | cs, da, de, el, en, es, et, fi, fr, hu, is, it, lt, lv, nl, pl, pt, sv. |
api_callback_url | string or null | Callback URL for status changes. |
timezone | string | For example Europe/Stockholm. |
is_template | boolean | true turns the document into a template. One-way. |
tags | object[] | name and value pairs. |
display_options | object | show_header, show_pdf_download, show_reject_option, allow_reject_reason, show_footer, document_is_receipt, show_arrow, show_form, show_form_arrow. |
parties | object[] | Replaces the document’s party list. Entries are matched positionally, entries you omit are removed, and the first entry is always the author. Give an entry the id of an existing party to carry its data forward and change only the settings you pass. Each entry accepts the party settings listed under add_party. The author’s name and email cannot be changed and are ignored. |
add_party
Section titled “add_party”Adds a new party to a document in preparation.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
name | string | Full name; the first word becomes the first name. Required. |
email | string | Required. |
signatory_role | string | signing_party, viewer or approver. Required. |
Plus any of the party settings:
| Setting | Type | Description |
|---|---|---|
authentication_method_to_sign | string | standard, sms_pin, se_bankid, no_bankid, no_bankid_qes, dk_mitid, dk_mitid_erhverv, fi_tupas, freja, freja_orgid, nl_idin, oneid, onfido, onfido_document_check, onfido_document_and_photo_check, swisscom_qes, swisscom_qes_with_srs, verimi_qes, itsme_qes, smart_id_qes, scrive_qes, scrive_qes_global. eID methods generally need personal_number; sms_pin needs mobile_number. The method must be enabled on your account or start_signing fails. |
authentication_method_to_view, authentication_method_to_view_archived | string | standard, sms_pin, dk_mitid, dk_mitid_erhverv, fi_tupas, freja, freja_orgid, nl_idin, no_bankid, oneid, onfido, onfido_document_check, onfido_document_and_photo_check, se_bankid, verimi. Required to view the document before signing, or the archived document afterwards. |
personal_number | string | National identification number, used by eID methods. |
mobile_number | string | E.164 format. Required for sms_pin and mobile delivery. |
sign_order | integer | Signing turn, from 1. Parties sharing an order sign in parallel; a higher order is invited once every lower order has signed. |
delivery_method | string | email, mobile, email_mobile, pad, api. |
confirmation_delivery_method | string | email, mobile, email_mobile, email_link, email_link_mobile, none. |
notification_delivery_method | string | email, mobile, email_mobile, none. How reminders reach the party. |
allows_highlighting | boolean | Party may highlight areas of the PDF while signing. |
hide_personal_number | boolean | Hide the personal number on the finalised document. |
can_forward | boolean | Party may forward the signing process to someone else. |
is_visible | boolean or null | Viewers and approvers only; pass null for a signing party. |
sign_success_redirect_url, reject_redirect_url | string | Where the party lands after signing or rejecting. |
attachments | object[] | Files the party must upload before signing: name, description, required and add_to_sealed_file, both true by default. Replaces the party’s current list. |
fields | object[] | The party’s full field list, replacing the current one, so pass the existing fields plus your changes. See below. name, email, mobile_number and personal_number are applied on top of this list. |
Each entry in fields:
| Key | Type | Description |
|---|---|---|
type | string | name, full_name, email, mobile, company, personal_number, company_number, signature, checkbox, radiogroup, text, multi_line_text, date, sign_date. Required. |
name | string | Identifies a text, multi_line_text, checkbox, signature, radiogroup or date field, where it is required. |
order | integer | For name fields: 1 is the first name, 2 the last name. |
value | string or null | The field’s value. |
is_obligatory, should_be_filled_by_sender, editable_by_signatory | boolean | Must be filled before signing; filled by the sender; editable by the signatory. |
description | string or null | Field description. |
is_checked | boolean | checkbox only. |
values, selected_value | string[], string | radiogroup only: at least two distinct options, and the selected one. |
custom_validation | object | text only: pattern, positive_example and tooltip. |
configuration | object | date only, where it is required: start_date and end_date, each a number of days from first view or an absolute YYYY-MM-DD. Pass {} for no bounds. |
placements | object[] | Where the field is drawn: wrel, hrel and fsrel as fractions of the page, plus either page, xrel and yrel, or anchors that position it relative to text in the PDF. checkbox and radiogroup placements take fixed sizes, and a radiogroup needs one placement per value, all on one page. |
update_party
Section titled “update_party”Updates a party’s role, name, email, authentication or delivery settings on a document in preparation.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
party_id | string | The party id, from get_document. Required. |
Plus any of the party settings listed under add_party, including name, email and signatory_role.
Send and follow up
Section titled “Send and follow up”start_signing
Section titled “start_signing”Starts the signing process for a document in preparation and sends the invitations.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
remind_document
Section titled “remind_document”Sends a reminder invitation to every party who has not yet signed.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
cancel_document
Section titled “cancel_document”Cancels a pending document.
| Input | Type | Description |
|---|---|---|
document_id | string | The document id. Required. |
Journey flows
Section titled “Journey flows”Journey flows send several documents to several participants in one process, with signers, viewers, approvers and copy recipients. The agent uses them for anything more involved than a single document.
create_flow_draft
Section titled “create_flow_draft”| Input | Type | Description |
|---|---|---|
process_title | string | Title of the flow. Required. |
Returns the draft id and a link to the draft in the Scrive flow editor.
list_flow_drafts
Section titled “list_flow_drafts”| Input | Type | Description |
|---|---|---|
limit | integer | Page size. Default 20. |
page | string | Page cursor from an earlier call. |
Returns results, each with its url, and navigation with the next_page and previous_page cursors.
get_flow_draft
Section titled “get_flow_draft”| Input | Type | Description |
|---|---|---|
draft_id | string | The draft id. Required. |
Returns the draft with its documents, participants, steps and url.
add_document_to_draft
Section titled “add_document_to_draft”Adds one or more PDFs to a flow draft. Opens a file picker for up to 25 PDFs.
| Input | Type | Description |
|---|---|---|
draft_id | string | The draft id. Required. |
name | string | Document name. Defaults to the filename without extension. When several files are picked, every one gets this name, so leave it out. |
add_participant_to_draft
Section titled “add_participant_to_draft”Adds a participant and regenerates the draft’s steps: participants are grouped by action, and each acts on every document in the draft. Steps only cover documents already in the draft, so add the documents first.
| Input | Type | Description |
|---|---|---|
draft_id | string | The draft id. Required. |
name | string | Full name. Required. |
email | string | Required. |
action | string | sign (default), view, approve, receive_copy. |
invitation_method | string | email (default), sms, email_and_sms, link_only, kivra, eboks, eboks_private. |
confirmation_method | string | email (default), sms, email_and_sms, none, kivra, eboks, eboks_private. |
authentication_to_sign | string | onfido, sms_otp, se_bank_id, dk_mit_id, no_bank_id, ftn, no_bank_id_qes, swisscom, verimi, scrive_qes, scrive_qes_global. Journey names differ from the document tools. sms_otp needs mobile_number. |
authentication_to_view, authentication_to_view_archived | string | onfido, sms_otp, se_bank_id, dk_mit_id, no_bank_id, ftn. |
personal_number | string | National identification number, used by eID providers. |
mobile_number | string | E.164 format. Required for sms_otp. |
start_flow
Section titled “start_flow”Starts a flow draft, creating a running flow and sending the first invitations. Returns the flow id and a link to the started flow. No tool reads a flow once it has started, so follow it in Scrive.
| Input | Type | Description |
|---|---|---|
draft_id | string | The draft id. Required. |
delete_flow_draft
Section titled “delete_flow_draft”| Input | Type | Description |
|---|---|---|
draft_id | string | The draft id. Required. |
Account
Section titled “Account”get_usage_stats
Section titled “get_usage_stats”Retrieves usage statistics from Scrive.
| Input | Type | Description |
|---|---|---|
period | string | days for daily statistics (default last 30 days) or months for monthly (default last 12 months). Required. |
withCompany | boolean | Include the company summary. |
userGroupID | string | User group to report on, when withCompany is true. |
recursive | boolean | Include child user groups, when withCompany is true. |
includeZeroRecords | boolean | Include periods with no activity. |
fromDate, toDate | string | Bounds as YYYY-MM-DD or YYYY-MM. |
Compared with the Scrive API
Section titled “Compared with the Scrive API”| Scrive MCP | Scrive API | |
|---|---|---|
| Caller | AI assistants and agents deciding at runtime | Your code with explicit logic |
| Auth | Sign in with your Scrive account in the AI client | OAuth credentials from Account settings → Integrations |
| Coverage | Documents, templates, parties, signing, reminders, cancelling, downloads, flow drafts, usage | The whole platform |
| Best for | Asking questions, preparing and sending, following up | Automated pipelines and integrations |
Not covered yet
Section titled “Not covered yet”- Searching the text inside documents.
list_documentsmatches titles and party names only. - Deleting, trashing or restoring documents.
- Changing a document once signing has started, other than reminding or cancelling.
- Reading, reminding or cancelling a flow once it has started.
- Removing documents or participants from a flow draft, or reordering its steps.
Use the Scrive app or the Scrive API for these.
