<!-- Generated by `just docs` from catalog/toolkits/dropbox_sign.yaml, catalog/expansions/dropbox_sign.yaml, catalog/evals/scorecard.json. Edit the source, not this file. -->

# Dropbox Sign

Electronic signatures, formerly HelloSign. Send a document or template for signature, chase it, and download the signed files.

| Property | Value |
| --- | --- |
| Slug | `dropbox_sign` |
| Definition version | `0.1.0` |
| Base URL | `https://api.hellosign.com/v3` |
| Auth schemes | `api_key`, `oauth2` |
| Action tools | 31 |
| By class | 11 read, 14 write, 6 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |

## Measured routing accuracy

62 golden cases replayed through the router over the whole index: measured over corpus `ea4f12ad2948` (65 toolkits, 2283 tools indexed and 13 declared uncallable), 31 cases written by hand and 31 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

| Measure | Cases | Share |
| --- | --- | --- |
| top-1 | 28/62 | 45.2% |
| top-8 | 57/62 | 91.9% |

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. `just eval-live` measures the same cases through the live reranker.

## Authentication

Connect an entity with `ConnectionsService.InitiateConnection`, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

### `api_key`

| Property | Value |
| --- | --- |
| Placement | `header` |
| Name | `Authorization` |
| Rendered as | `Basic {key}` |

Submit the key with `ConnectionsService` rather than putting it in a request; it is sealed at rest and never returned.

### `oauth2`

| Property | Value |
| --- | --- |
| Authorization URL | `https://app.hellosign.com/oauth/authorize` |
| Token URL | `https://app.hellosign.com/oauth/token` |
| Default scopes | `basic_account_info`, `request_signature`, `account_access`, `signature_request_access`, `template_access`, `team_access` |
| Refresh tokens | yes, the refresh daemon renews ahead of expiry |

## Tools

31 action tools. The catalog-wide slug is `dropbox_sign.<tool>`, which is what `search_tools` returns and `call_tool` takes.

### `dropbox_sign.send_signature_request`

Create and send a Dropbox Sign signature request from one or more hosted document URLs. Use when the user wants to get a document, contract, or form out for signature from scratch. Documents are passed as file_urls; to send from a saved template use send_signature_request_with_template instead.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/send`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cc_email_addresses` | array of string | no | Email addresses to CC a copy to once completed; they don't sign. |
| `file_urls` | array of string | **yes** | URLs of the documents to sign, in the order they should appear. |
| `message` | string | no | Message body shown above the documents in the signing email. |
| `signers` | array of object | **yes** | People who must sign, in signing order. |
| `signers[].email_address` | string | **yes** | Signer's email address. |
| `signers[].name` | string | **yes** | Signer's full name. |
| `signers[].order` | integer | no | 0-based signing order; omit for parallel signing. |
| `subject` | string | no | Subject line shown in the signing email. |
| `test_mode` | boolean | no | Send as a test request that doesn't count against the account's quota. Default false. |
| `title` | string | **yes** | Internal title for the signature request. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.details_url` | string |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |
| `signature_request.signatures[].signer_name` | string |  |
| `signature_request.signatures[].status_code` | string |  |
| `signature_request.signing_url` | string |  |
| `signature_request.title` | string |  |

Also retrieved by: "get this contract out to sam for his signature", "kick off a new signing request for this file", "push this document out for people to sign", "start the paperwork moving toward a signature", "fire off this agreement to whoever needs to sign it".

### `dropbox_sign.send_signature_request_with_template`

Create and send a Dropbox Sign signature request from one or more saved templates, filling in a real signer for each template role. Use when the user wants to send a document using a template rather than uploading files from scratch. Roles come from get_template.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/send_with_template`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `ccs` | array of object | no | Real recipients assigned to each of the templates' CC roles. |
| `ccs[].email_address` | string | **yes** | Recipient's email address. |
| `ccs[].role` | string | **yes** | CC role name as defined on the template. |
| `custom_fields` | array of object | no | Values to pre-fill into the templates' custom merge fields. |
| `custom_fields[].name` | string | **yes** |  |
| `custom_fields[].value` | string | **yes** |  |
| `message` | string | no | Message body shown above the documents in the signing email. |
| `signers` | array of object | **yes** | Real signers assigned to each of the templates' roles. |
| `signers[].email_address` | string | **yes** | Signer's email address. |
| `signers[].name` | string | **yes** | Signer's full name. |
| `signers[].role` | string | **yes** | Role name as defined on the template. |
| `subject` | string | no | Subject line shown in the signing email. |
| `template_ids` | array of string | **yes** | Templates to send from, from list_templates. |
| `test_mode` | boolean | no | Send as a test request that doesn't count against the account's quota. Default false. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.details_url` | string |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |
| `signature_request.signatures[].signer_name` | string |  |
| `signature_request.signatures[].status_code` | string |  |
| `signature_request.signing_url` | string |  |
| `signature_request.title` | string |  |

Also retrieved by: "send out a document built from one of our saved forms", "use our standard NDA form and get it in front of the client", "fire off the usual paperwork with someone's info filled in", "run this deal through our boilerplate agreement".

### `dropbox_sign.create_embedded_signature_request`

Create a Dropbox Sign signature request meant for embedded (in-app) signing rather than an email invite, from hosted document URLs. Use when the user wants a signing flow that stays inside your own app. Follow up with get_embedded_sign_url to get the actual signing link.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/create_embedded`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `client_id` | string | **yes** | Dropbox Sign API app client id that will host the embedded signing. |
| `file_urls` | array of string | **yes** | URLs of the documents to sign, in the order they should appear. |
| `message` | string | no | Message body, shown if an email fallback is triggered. |
| `signers` | array of object | **yes** | People who must sign, in signing order. |
| `signers[].email_address` | string | **yes** | Signer's email address. |
| `signers[].name` | string | **yes** | Signer's full name. |
| `signers[].order` | integer | no | 0-based signing order; omit for parallel signing. |
| `subject` | string | no | Subject line, shown if an email fallback is triggered. |
| `test_mode` | boolean | no | Send as a test request that doesn't count against the account's quota. Default false. |
| `title` | string | **yes** | Internal title for the signature request. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |
| `signature_request.signatures[].status_code` | string |  |
| `signature_request.title` | string |  |

Also retrieved by: "set up a signing flow that stays inside our own app", "build a document for someone to sign right here in our product", "get a file ready for in-app signing, not an email invite", "prep this for a signing session hosted inside our own product".

### `dropbox_sign.create_embedded_signature_request_with_template`

Create a Dropbox Sign signature request for embedded (in-app) signing from one or more saved templates, filling in a real signer for each role. Use when the user wants an in-app signing flow built from a template instead of uploaded files. Follow up with get_embedded_sign_url for the signing link.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/create_embedded_with_template`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `client_id` | string | **yes** | Dropbox Sign API app client id that will host the embedded signing. |
| `message` | string | no | Message body, shown if an email fallback is triggered. |
| `signers` | array of object | **yes** | Real signers assigned to each of the templates' roles. |
| `signers[].email_address` | string | **yes** | Signer's email address. |
| `signers[].name` | string | **yes** | Signer's full name. |
| `signers[].role` | string | **yes** | Role name as defined on the template. |
| `subject` | string | no | Subject line, shown if an email fallback is triggered. |
| `template_ids` | array of string | **yes** | Templates to build the request from, from list_templates. |
| `test_mode` | boolean | no | Send as a test request that doesn't count against the account's quota. Default false. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |
| `signature_request.signatures[].status_code` | string |  |
| `signature_request.title` | string |  |

Also retrieved by: "build an in-app signing flow off our standard form", "get our saved contract ready for someone to sign inside our app", "set up in-product signing using the boilerplate we already have", "prep the usual paperwork for a signing session hosted in our app".

### `dropbox_sign.get_signature_request`

Get one Dropbox Sign signature request's current status by id: who has signed, who hasn't, and whether it's complete or declined. Use when the user already has a signature request id or wants to check where a specific document stands.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /signature_request/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `signature_request_id` | string | **yes** | Signature request to look up. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.cc_email_addresses` | array of string |  |
| `signature_request.details_url` | string |  |
| `signature_request.files_url` | string |  |
| `signature_request.has_error` | boolean |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.is_declined` | boolean |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].error` | string |  |
| `signature_request.signatures[].last_viewed_at` | string |  |
| `signature_request.signatures[].order` | integer |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signed_at` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |
| `signature_request.signatures[].signer_name` | string |  |
| `signature_request.signatures[].status_code` | string |  |
| `signature_request.subject` | string |  |
| `signature_request.title` | string |  |

Also retrieved by: "has this contract been signed yet", "where does this agreement stand right now", "check on that paperwork I sent last week", "pull up the details for that document I'm waiting on".

### `dropbox_sign.list_signature_requests`

List or search Dropbox Sign signature requests visible to the account, newest first. Use when the user asks what's out for signature, what still needs signing, or wants to find a document by keyword rather than a known id.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /signature_request/list`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `page` | integer | no | Page number to fetch, 1-based. Default 1. |
| `page_size` | integer | no | Results per page, default 20, max 100. |
| `query` | string | no | Free-text search, e.g. "signer:sam@acme.com" or a title keyword. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `list_info` | object |  |
| `list_info.num_pages` | integer |  |
| `list_info.num_results` | integer |  |
| `list_info.page` | integer |  |
| `signature_requests` | array of object |  |
| `signature_requests[].is_complete` | boolean |  |
| `signature_requests[].is_declined` | boolean |  |
| `signature_requests[].signature_request_id` | string |  |
| `signature_requests[].title` | string |  |

Also retrieved by: "what's still hanging out there waiting for somebody to sign", "show me every agreement I've got out with people right now", "what paperwork is pending on my end", "find that contract I put out a while back".

### `dropbox_sign.cancel_signature_request`

Cancel a Dropbox Sign signature request that hasn't been completed by every signer yet. Use when the user wants to cancel, kill, or stop a document that's out for signature before everyone has signed it. Irreversible; a fully completed request cannot be cancelled.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /signature_request/cancel/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `signature_request_id` | string | **yes** | Signature request to cancel. |

Also retrieved by: "kill this deal before anyone else signs it", "pull the plug on that paperwork, it fell through", "this agreement is off, stop it before it's finished", "yank that document back, don't let anyone else sign it".

### `dropbox_sign.remove_signature_request`

Permanently remove your access to a completed or cancelled Dropbox Sign signature request. Use when the user wants a finished request cleared out of their own view. Doesn't affect other people's access to it or delete the underlying record for them.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /signature_request/remove/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `signature_request_id` | string | **yes** | Signature request to remove access to. |

Also retrieved by: "clear this old finished paperwork out of my view", "take this off my list, I don't need to see it anymore", "tidy up my account, this one's done and I'm through with it".

### `dropbox_sign.send_signature_request_reminder`

Resend the signing email notification to one recipient who hasn't yet completed a Dropbox Sign signature request. Use when the user wants to nudge, remind, or poke someone who hasn't signed yet. Doesn't change the document or recipient list.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/remind/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email_address` | string | **yes** | Email address of the signer to remind. |
| `signature_request_id` | string | **yes** | Signature request to send a reminder on. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.is_complete` | boolean |  |
| `signature_request.signature_request_id` | string |  |

Also retrieved by: "give sam a nudge, he still hasn't gotten to it", "poke the person who's been sitting on this paperwork", "follow up with whoever hasn't finished their part yet", "ping the last holdout on this agreement".

### `dropbox_sign.update_signature_request`

Change one signer's email address on a Dropbox Sign signature request that's still pending. Use when the user wants to fix a mistyped address or redirect a pending signature to a different person at the same email.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /signature_request/update/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email_address` | string | **yes** | New email address for that signer. |
| `signature_id` | string | **yes** | Signature (recipient) within the request to update, from get_signature_request. |
| `signature_request_id` | string | **yes** | Signature request to update. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `signature_request` | object |  |
| `signature_request.signature_request_id` | string |  |
| `signature_request.signatures` | array of object |  |
| `signature_request.signatures[].signature_id` | string |  |
| `signature_request.signatures[].signer_email_address` | string |  |

Also retrieved by: "fix the email I typed wrong for one of the parties", "redirect this to the correct address, I mistyped it", "swap out the address for one of the people on this deal".

### `dropbox_sign.download_signature_request_files`

Download the completed document behind a Dropbox Sign signature request, signed or not, as one combined PDF. Use when the user wants the actual file rather than just its status. Answers with a short-lived download link rather than with the bytes themselves.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /signature_request/files_as_file_url/{{params.signature_request_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `signature_request_id` | string | **yes** | Signature request whose files to download. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `expires_at` | integer |  |
| `file_url` | string |  |

Also retrieved by: "grab the actual file, not just its status", "give me a copy of the finished paperwork", "save the pdf from that agreement locally", "get me the zip of the original files from that deal".

### `dropbox_sign.get_embedded_sign_url`

Get a one-time embedded signing URL for a signer on a Dropbox Sign signature request, to load inside your own app instead of emailing an invite. Use after create_embedded_signature_request. The URL expires after a short window.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /embedded/sign_url/{{params.signature_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `signature_id` | string | **yes** | Signature (recipient) to generate the embedded signing URL for. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `embedded` | object |  |
| `embedded.expires_at` | string |  |
| `embedded.sign_url` | string |  |

Also retrieved by: "give me the link to load inside our app for someone to sign", "I need the in-app link for this person", "generate a one-time link for this recipient to use in our product".

### `dropbox_sign.get_embedded_template_edit_url`

Get a one-time embedded editor URL for building or revising a Dropbox Sign template's fields inside your own app. Use after create_embedded_draft_template, or when the user wants to open a template's field editor rather than just view its details.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `POST /embedded/edit_url/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `template_id` | string | **yes** | Template to open in the embedded editor. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `embedded` | object |  |
| `embedded.edit_url` | string |  |
| `embedded.expires_at` | string |  |

Also retrieved by: "open the field editor for our saved form inside our app", "give me the link to edit the fields on this boilerplate", "I want to build out the fields for this saved document".

### `dropbox_sign.list_templates`

List the reusable Dropbox Sign templates visible to the account, with each template's name and id. Use when the user asks what templates exist or wants to find one to send from.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /template/list`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `page` | integer | no | Page number to fetch, 1-based. Default 1. |
| `page_size` | integer | no | Results per page, default 20, max 100. |
| `query` | string | no | Free-text match against template title. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `list_info` | object |  |
| `list_info.num_pages` | integer |  |
| `list_info.num_results` | integer |  |
| `list_info.page` | integer |  |
| `templates` | array of object |  |
| `templates[].is_locked` | boolean |  |
| `templates[].message` | string |  |
| `templates[].template_id` | string |  |
| `templates[].title` | string |  |

Also retrieved by: "what saved forms do we have on file", "show me every boilerplate we can send from", "what reusable documents exist in the account", "find the standard form we use for new clients".

### `dropbox_sign.get_template`

Get one Dropbox Sign template's full details by id: its signer roles, CC roles, and documents. Use after list_templates, or before sending from a template, to see what roles need real signers assigned.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /template/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `template_id` | string | **yes** | Template to look up. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `template` | object |  |
| `template.cc_roles` | array of string |  |
| `template.documents` | array of object |  |
| `template.documents[].index` | integer |  |
| `template.documents[].name` | string |  |
| `template.is_locked` | boolean |  |
| `template.message` | string |  |
| `template.signer_roles` | array of object |  |
| `template.signer_roles[].name` | string |  |
| `template.signer_roles[].order` | integer |  |
| `template.template_id` | string |  |
| `template.title` | string |  |

Also retrieved by: "what roles does this saved form need filled in", "show me the details on our standard NDA", "what does this boilerplate actually contain".

### `dropbox_sign.create_embedded_draft_template`

Create a new Dropbox Sign template as an unfinished draft from hosted document URLs, ready to have its fields placed in the embedded template editor. Use when the user wants to build a new reusable template rather than send a one-off document. Follow up with get_embedded_template_edit_url to open the field editor.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /template/create_embedded_draft`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `cc_roles` | array of string | no | Placeholder CC role names, filled in later when sending from this template. |
| `client_id` | string | **yes** | Dropbox Sign API app client id that will host the embedded editor. |
| `file_urls` | array of string | **yes** | URLs of the documents that make up the template. |
| `message` | string | no | Default message shown when the template is used to send. |
| `signer_roles` | array of object | **yes** | Placeholder signer roles to fill in later when sending from this template. |
| `signer_roles[].name` | string | **yes** | Role name, e.g. "Client". |
| `signer_roles[].order` | integer | no | 0-based signing order for this role. |
| `test_mode` | boolean | no | Mark as a test template that doesn't count against the account's quota. Default false. |
| `title` | string | **yes** | Template name. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `template` | object |  |
| `template.template_id` | string |  |
| `template.title` | string |  |

Also retrieved by: "build a new reusable form from this file", "save this contract as a boilerplate for next time", "turn this document into something we can reuse later".

### `dropbox_sign.update_template_files`

Replace the documents on an existing Dropbox Sign template with a new set of files, keeping the same template id and roles. Use when the user wants to swap out or update the underlying document a template sends, without recreating the roles from scratch.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /template/update_files/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `client_id` | string | **yes** | Dropbox Sign API app client id that will host the embedded editor. |
| `file_urls` | array of string | **yes** | URLs of the new documents. |
| `template_id` | string | **yes** | Template whose files to replace. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `template` | object |  |
| `template.template_id` | string |  |
| `template.title` | string |  |

Also retrieved by: "swap the underlying file on our saved form", "replace the document behind this boilerplate with a newer version", "update the paperwork this form sends without touching the roles".

### `dropbox_sign.delete_template`

Permanently delete a Dropbox Sign template by id. Use when the user wants to remove or get rid of a saved template. Irreversible; signature requests already sent from it are unaffected.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /template/delete/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `template_id` | string | **yes** | Template to delete. |

Also retrieved by: "get rid of this old boilerplate, we don't use it anymore", "remove this saved form for good", "clean out that old standard document from the account".

### `dropbox_sign.add_template_user`

Grant another account access to use and edit a Dropbox Sign template, by email address. Use when the user wants to share a template with a teammate so they can send from it too.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /template/add_user/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email_address` | string | **yes** | Email address of the account to add. |
| `template_id` | string | **yes** | Template to share. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `template` | object |  |
| `template.accounts` | array of object |  |
| `template.accounts[].account_id` | string |  |
| `template.accounts[].email_address` | string |  |
| `template.template_id` | string |  |

Also retrieved by: "let priya use our standard contract too", "share this boilerplate with a teammate", "give someone else access to send from this saved form".

### `dropbox_sign.remove_template_user`

Revoke another account's access to a Dropbox Sign template, by email address. Use when the user wants to take a teammate off a shared template so they can no longer send from or edit it. The template owner's own access can't be removed.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /template/remove_user/{{params.template_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email_address` | string | **yes** | Email address of the account to remove. |
| `template_id` | string | **yes** | Template to revoke access to. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `template` | object |  |
| `template.accounts` | array of object |  |
| `template.accounts[].account_id` | string |  |
| `template.accounts[].email_address` | string |  |
| `template.template_id` | string |  |

Also retrieved by: "take priya off this shared boilerplate", "revoke a teammate's access to our standard form", "cut someone's access to this saved document".

### `dropbox_sign.create_unclaimed_draft`

Upload a document to Dropbox Sign as an unclaimed draft: a file that's staged but not yet assigned to any signer, returning a claim link someone can use to pick it up and set who signs it. Use when the user wants to build a custom upload flow instead of naming signers up front.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /unclaimed_draft/create`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `file_urls` | array of string | **yes** | URLs of the documents to stage. |
| `message` | string | no | Message body shown above the documents once the draft is claimed. |
| `subject` | string | no | Subject line shown in the signing email once the draft is claimed. |
| `test_mode` | boolean | no | Mark as a test draft that doesn't count against the account's quota. Default false. |
| `type` | string, one of send_document, request_signature | **yes** | send_document lets the claimer just send it as-is; request_signature lets them add signers. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `unclaimed_draft` | object |  |
| `unclaimed_draft.claim_url` | string |  |
| `unclaimed_draft.signing_redirect_url` | string |  |

Also retrieved by: "stage this file so someone else can pick who signs it", "upload this document without naming signers yet", "get this ready for someone else to finish setting up".

### `dropbox_sign.create_unclaimed_draft_with_template`

Create an unclaimed draft from a saved Dropbox Sign template instead of raw files, returning a claim link for someone to pick up and finish assigning signers. Use when the user wants a custom claim flow built from a template rather than a fresh upload.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `POST /unclaimed_draft/create_embedded_with_template`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `client_id` | string | **yes** | Dropbox Sign API app client id that will host the embedded claim flow. |
| `requester_email_address` | string | **yes** | Email address credited as the request's creator once claimed. |
| `template_ids` | array of string | **yes** | Templates to build the draft from. |
| `test_mode` | boolean | no | Mark as a test draft that doesn't count against the account's quota. Default false. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `unclaimed_draft` | object |  |
| `unclaimed_draft.claim_url` | string |  |
| `unclaimed_draft.signing_redirect_url` | string |  |

Also retrieved by: "stage our standard form for someone else to finish assigning", "get a claim link built off our boilerplate ready to hand off", "prep the usual contract for someone else to pick up and complete".

### `dropbox_sign.get_account`

Get the connected Dropbox Sign account's own details: email, locked status, and remaining quota for templates and API signature requests. Use when the user asks about their own account or how much quota is left.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /account`.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `account` | object |  |
| `account.account_id` | string |  |
| `account.email_address` | string |  |
| `account.is_locked` | boolean |  |
| `account.quotas` | object |  |
| `account.quotas.api_signature_requests_left` | integer |  |
| `account.quotas.documents_left` | integer |  |
| `account.quotas.templates_left` | integer |  |
| `account.role_code` | string |  |

Also retrieved by: "how much quota do we have left this month", "what's the status of our own account here", "check our remaining allowance for sending documents".

### `dropbox_sign.update_account`

Update the connected Dropbox Sign account's own callback URL, used to receive event notifications. Use when the user wants to change where the account's webhooks get delivered.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /account`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `callback_url` | string | no | New URL to receive account-level event callbacks. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `account` | object |  |
| `account.account_id` | string |  |
| `account.callback_url` | string |  |
| `account.email_address` | string |  |

Also retrieved by: "we changed servers, tell them where to ping us now", "point our webhooks at a new url", "update the callback endpoint on our own account".

### `dropbox_sign.get_team`

Get the connected Dropbox Sign account's team: its name and every member's email and role. Use when the user asks who's on the team or wants a member's email before adding or removing them.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /team`.

Takes no arguments.

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `team` | object |  |
| `team.accounts` | array of object |  |
| `team.accounts[].account_id` | string |  |
| `team.accounts[].email_address` | string |  |
| `team.accounts[].role_code` | string |  |
| `team.name` | string |  |

Also retrieved by: "who's on our team right now", "show me everyone with access to this account", "list the people on our team and their roles".

### `dropbox_sign.update_team_name`

Rename the connected Dropbox Sign account's team. Use when the user wants to rename or relabel the team, not change who's on it.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /team`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `name` | string | **yes** | New team name. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `team` | object |  |
| `team.name` | string |  |

Also retrieved by: "rename our team to something else", "change what our team is called", "give our team a new label".

### `dropbox_sign.add_team_member`

Invite someone to join the Dropbox Sign team by email address. Use when the user wants to add a colleague or teammate to the account's team.

Class `write` (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls `PUT /team/add_member`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `email_address` | string | **yes** | Email address of the person to invite. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `team` | object |  |
| `team.accounts` | array of object |  |
| `team.accounts[].account_id` | string |  |
| `team.accounts[].email_address` | string |  |
| `team.name` | string |  |

Also retrieved by: "invite priya to join our team", "bring a new colleague onto the account", "add someone new to work alongside us here".

### `dropbox_sign.remove_team_member`

Remove a member from the Dropbox Sign team by email address or account id. Use when the user wants to take someone off the team, for example after they leave. That person keeps their own individual account; only their team membership ends.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `POST /team/remove_member`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `account_id` | string | no | Account id of the member to remove, if email isn't known. |
| `email_address` | string | no | Email address of the member to remove. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `team` | object |  |
| `team.accounts` | array of object |  |
| `team.accounts[].account_id` | string |  |
| `team.accounts[].email_address` | string |  |
| `team.name` | string |  |

Also retrieved by: "take priya off the team, she left the company", "remove a colleague from our roster", "drop someone from the team, keep their own account intact".

### `dropbox_sign.delete_team`

Disband the connected Dropbox Sign account's entire team, moving every member off it. Use when the user wants to dissolve or shut down the team itself, not just remove one member. Irreversible.

Class `destructive` (held by the mutation gate until the call's own arguments carry `"confirm": true`). No scopes beyond the connection's defaults. Calls `DELETE /team/destroy`.

Takes no arguments.

Also retrieved by: "shut the whole team down", "dissolve our team entirely", "disband everyone off the team at once".

### `dropbox_sign.list_bulk_send_jobs`

List the Dropbox Sign bulk send jobs run on the account, each one a batch of signature requests created from a template for many signers at once. Use when the user asks about a past mail-merge-style signing batch.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /bulk_send_job/list`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `page` | integer | no | Page number to fetch, 1-based. Default 1. |
| `page_size` | integer | no | Results per page, default 20, max 100. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `bulk_send_jobs` | array of object |  |
| `bulk_send_jobs[].bulk_send_job_id` | string |  |
| `bulk_send_jobs[].is_complete` | boolean |  |
| `list_info` | object |  |
| `list_info.num_pages` | integer |  |
| `list_info.page` | integer |  |

Also retrieved by: "show me our past mail-merge style signing batches", "what large sends have we run before", "list the batches we sent to a bunch of people at once".

### `dropbox_sign.get_bulk_send_job`

Get one Dropbox Sign bulk send job's status by id: how many of its signature requests have gone out and finished. Use when the user asks how a batch of documents they sent all at once is progressing.

Class `read` (reads only). No scopes beyond the connection's defaults. Calls `GET /bulk_send_job/{{params.bulk_send_job_id}}`.

Arguments:

| Argument | Type | Required | Notes |
| --- | --- | --- | --- |
| `bulk_send_job_id` | string | **yes** | Bulk send job to look up. |

Result fields (the payload is trimmed to these before it reaches the model):

| Field | Type | Notes |
| --- | --- | --- |
| `bulk_send_job` | object |  |
| `bulk_send_job.bulk_send_job_id` | string |  |
| `bulk_send_job.is_complete` | boolean |  |
| `bulk_send_job.signature_request_ids` | array of string |  |

Also retrieved by: "how's that big batch of contracts coming along", "check the progress on that mass mailing we sent out", "what's the status of the large batch I kicked off earlier".
