Dropbox Sign MCP server for AI agents

Live

API KEY

E-SIGNATURE

Files & Documents

Dropbox Sign gives your agent e-signature workflows: send signature requests from documents or templates, remind and update signers, download signed PDFs, track bulk send jobs, and send faxes.

  • Per-user credentials: each call uses the actual user's API key, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Dropbox Sign
agent · Acme Q3
Run
Which signature requests are still waiting on signers?
S
dropboxsign_signature_requests_list
106ms
Contracts agent
6 signature requests are incomplete. The Globex MSA has been waiting on 1 signer for 8 days.
Sources: Dropbox Sign, 6 requests
dropboxsign
6 requests
18:29
Message Claude...

Tools your contracts agent reaches for on Dropbox Sign, scoped per user.

CALL ANY TOOL
39 tools for e-signature in Dropbox Sign: send signature requests from documents or templates, remind, update, and cancel them, download signed files, manage templates and team access, track bulk send jobs, and send faxes.
dropboxsign_account_get
Get account
Get a Dropbox Sign account's details and quotas. Returns account_id, email_address, role_code, team_id, quotas, usage, and the is_paid_hs / is_paid_hf plan flags. Use it with no inputs to identify the connected account, or pass an account ID or email to look up a team member. Use dropboxsign_account_verify to check whether an email has any Dropbox Sign account.
Parameters
Name
Type
Required
Description
account_id
string
Optional
ID of the account to return. Leave empty (and email_address empty) to get the connected account. If both are set, account_id wins. Example: "5008b25c7f67153e57d5a357b1687968068fb465".
email_address
string
Optional
Email address of the account to return. Leave empty (and account_id empty) to get the connected account. Example: "jane@example.com".
dropboxsign_account_verify
Verify account
dropboxsign_bulk_send_job_get
Get bulk send job
dropboxsign_bulk_send_jobs_list
List bulk send jobs
dropboxsign_document_fields_detect
Document fields detect
dropboxsign_fax_delete
Delete fax
dropboxsign_fax_line_get
Get fax line
dropboxsign_fax_lines_list
List fax lines
dropboxsign_fax_send
Send fax
dropboxsign_faxes_list
List faxes
dropboxsign_signature_request_cancel
Cancel signature request
dropboxsign_signature_request_edit
Signature request edit
dropboxsign_signature_request_edit_with_template
Signature request edit with template
dropboxsign_signature_request_files_url_get
Get signature request files url
dropboxsign_signature_request_get
Get signature request
dropboxsign_signature_request_release_hold
Signature request release hold
dropboxsign_signature_request_remove
Remove signature request
dropboxsign_signature_request_send
Send signature request
dropboxsign_signature_request_update
Update signature request
dropboxsign_sub_teams_list
List sub teams
dropboxsign_team_info_get
Get team info
dropboxsign_team_invites_list
List team invites
dropboxsign_team_members_list
List team members
dropboxsign_template_create
Create template
dropboxsign_template_delete
Delete template
dropboxsign_template_files_update
Update template files
dropboxsign_template_files_url_get
Get template files url
dropboxsign_template_user_add
Add template user
dropboxsign_template_user_remove
Remove template user
dropboxsign_unclaimed_draft_create
Create unclaimed draft

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Dropbox Sign tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["dropboxsign"], toolNames: [
    "dropboxsign_signature_request_send_with_template",
    "dropboxsign_signature_requests_list",
    "dropboxsign_signature_request_remind"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "List signature requests still waiting on signers" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["dropboxsign"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "List signature requests still waiting on signers" }],
  tools,
});

// Execute the tool call with the user's vaulted Dropbox Sign API key
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["dropboxsign"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "List signature requests still waiting on signers" }],
  tools,
});

// Tool call runs with the user's vaulted Dropbox Sign API key
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["dropboxsign"] }, pageSize: 100,
});

const agent = new Agent({
  name: "contracts_agent",
  model: "gemini-2.5-pro",
  instruction: "Dropbox Sign tools scoped to this user",
  tools,
});

await agent.run("List signature requests still waiting on signers");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Dropbox Sign tool. Click to copy, paste into your agent, done.
Send
Copy the prompt
Copied
Send the Acme NDA template to jane@acme.com for signature.
Copy the prompt
Copied
Send this PDF to sam@globex.com and tom@globex.com to sign.
Copy the prompt
Copied
Detect the form fields in this contract PDF.
Track
Copy the prompt
Copied
List signature requests that are still incomplete.
Copy the prompt
Copied
Remind jane@acme.com to sign the Acme NDA.
Copy the prompt
Copied
Get a download link for the signed Globex MSA.
Templates and team
Copy the prompt
Copied
List our templates and their signer roles.
Copy the prompt
Copied
Give tom@acme.com access to the Sales NDA template.
Copy the prompt
Copied
List the pending invitations to our team.
SEE HOW AUTH WORKS
Each user connects their own Dropbox Sign API key once, and Scalekit sends it with every call. Keys stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Dropbox Sign
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Dropbox Sign
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Dropbox Sign
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Dropbox Sign
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other documents and e-signature connectors.
People Ops and HR teams
Offer letter routing agent
Drafts the offer in PandaDoc, blocks on the hiring manager's approval in Slack, then emails the candidate their e-signature link. Every call runs as the recruiter who triggered it, never a shared HR bot.
GTM and RevOps Teams
Deal room sync
Pulls opportunity context from Salesforce, captures key decisions from Slack, and syncs a running summary to the deal room doc in Google Drive, but only when the deal actually changed.
Test other agents
See the same per-user auth pattern across other documents and e-signature connectors.
PEOPLE OPS
Offer letter routing agent
Draft the offer in PandaDoc, gate it on hiring manager approval in Slack, then email the candidate their signature link.
GTM
Deal room sync agent
Pull opportunity context from Salesforce, capture decisions from Slack, and keep the Google Drive deal room doc current.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Dropbox Sign API key looks fine in a demo. In production every signature request looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared key
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Dropbox Sign today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Dropbox Sign as the user or through a shared API key?
As the user. Each user connects their own Dropbox Sign API key once, and Scalekit sends it with every call. Signature requests the agent sends, edits, or cancels are attributed to that user in your audit trail, not a shared service account.
Where is the Dropbox Sign API key stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new API key. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Dropbox Sign?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example request and template read tools without dropboxsign_signature_request_cancel, which cannot be undone, and dropboxsign_template_delete. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Dropbox Sign access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent send faxes through Dropbox Sign?
Yes, if the account has the Dropbox Fax API. dropboxsign_fax_send faxes documents given by public URL, and dropboxsign_faxes_list and dropboxsign_fax_get report each transmission's status.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""dropboxsign"": {
""url"": ""https://mcp.scalekit.com/dropboxsign"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.dropboxsign]
url = ""https://mcp.scalekit.com/dropboxsign""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""dropboxsign"": {
""url"": ""https://mcp.scalekit.com/dropboxsign"",
""type"": ""http""
}
}
}