# How to integrate Dropbox sign MCP with CrewAI

```json
{
  "title": "How to integrate Dropbox sign MCP with CrewAI",
  "toolkit": "Dropbox sign",
  "toolkit_slug": "dropbox_sign",
  "framework": "CrewAI",
  "framework_slug": "crew-ai",
  "url": "https://composio.dev/toolkits/dropbox_sign/framework/crew-ai",
  "markdown_url": "https://composio.dev/toolkits/dropbox_sign/framework/crew-ai.md",
  "updated_at": "2026-05-12T10:09:55.194Z"
}
```

## Introduction

This guide walks you through connecting Dropbox sign to CrewAI using the Composio tool router. By the end, you'll have a working Dropbox sign agent that can send nda for signature to new hire, get status of recent signature requests, download signed contract from last week through natural language commands.
This guide will help you understand how to give your CrewAI agent real control over a Dropbox sign account through Composio's Dropbox sign MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Dropbox sign with

- [ChatGPT](https://composio.dev/toolkits/dropbox_sign/framework/chatgpt)
- [OpenAI Agents SDK](https://composio.dev/toolkits/dropbox_sign/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/dropbox_sign/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/dropbox_sign/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/dropbox_sign/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/dropbox_sign/framework/codex)
- [Cursor](https://composio.dev/toolkits/dropbox_sign/framework/cursor)
- [VS Code](https://composio.dev/toolkits/dropbox_sign/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/dropbox_sign/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/dropbox_sign/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/dropbox_sign/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/dropbox_sign/framework/cli)
- [Google ADK](https://composio.dev/toolkits/dropbox_sign/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/dropbox_sign/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/dropbox_sign/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/dropbox_sign/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/dropbox_sign/framework/llama-index)

## TL;DR

Here's what you'll learn:
- Get a Composio API key and configure your Dropbox sign connection
- Set up CrewAI with an MCP enabled agent
- Create a Tool Router session or standalone MCP server for Dropbox sign
- Build a conversational loop where your agent can execute Dropbox sign operations

## What is CrewAI?

CrewAI is a powerful framework for building multi-agent AI systems. It provides primitives for defining agents with specific roles, creating tasks, and orchestrating workflows through crews.
Key features include:
- Agent Roles: Define specialized agents with specific goals and backstories
- Task Management: Create tasks with clear descriptions and expected outputs
- Crew Orchestration: Combine agents and tasks into collaborative workflows
- MCP Integration: Connect to external tools through Model Context Protocol

## What is the Dropbox sign MCP server, and what's possible with it?

The Dropbox sign MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Dropbox Sign account. It provides structured and secure access to your e-signature workflows, so your agent can prepare signature requests, manage documents, track signing progress, and automate agreement workflows on your behalf.
- Automated signature requests: Have your agent create, send, and manage legally binding signature requests to one or multiple recipients, streamlining document approval processes.
- Template-based document preparation: Let your agent generate documents from templates, pre-fill fields, and quickly send out repeat agreements without manual editing.
- Status tracking and reminders: Ask your agent to monitor the progress of signature requests, check who has signed, and send automated reminders to outstanding signers as needed.
- Secure document storage and retrieval: Effortlessly fetch completed, pending, or archived documents, download signed agreements, and keep your workflow organized and compliant.
- Audit trails and activity logs: Access detailed audit trails and event histories for every document, so you can maintain compliance and always know who did what, and when.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `DROPBOX_SIGN_ADD_USER_TO_TEAM` | Invite User to Team | Tool to invite a user to your Team. Use when you need to add a member by email or account ID. |
| `DROPBOX_SIGN_ADD_USER_TO_TEMPLATE` | Add User to Template | Tool to grant a specified account access to a template. Use when you need to share a template with another user after confirming template and account identifiers. |
| `DROPBOX_SIGN_BULK_CREATE_EMBEDDED_SIG_REQ_WITH_TEMPLATE` | Bulk create embedded signature request with template | Tool to create a BulkSendJob for embedded templated signature requests. Use when you need to send up to 250 embedded signature requests at once via one or more templates for iFrame signing. |
| `DROPBOX_SIGN_BULK_SEND_WITH_TEMPLATE` | Bulk send with template | Tool to create a BulkSendJob for templated signature requests. Use when you need to send up to 250 signature requests at once via one or more templates. |
| `DROPBOX_SIGN_CANCEL_SIGNATURE_REQUEST` | Cancel Signature Request | Cancels an incomplete signature request. Use when you need to cancel a pending signature request that has not been completed. The operation is asynchronous and not reversible - once canceled, the signature request cannot be restored. |
| `DROPBOX_SIGN_CREATE_ACCOUNT` | Create Dropbox Sign Account | Tool to create a new Dropbox Sign account associated with a specified email address. Use when you need to programmatically register new users in the Dropbox Sign platform. |
| `DROPBOX_SIGN_CREATE_API_APP` | Create API App | Tool to create a new Dropbox Sign API App. Use when you need to register a new application for API integration. The app will have a client_id for authentication and can be configured with OAuth, callbacks, and white labeling. |
| `DROPBOX_SIGN_CREATE_EMBEDDED_SIGNATURE_REQUEST` | Create Embedded Signature Request | Tool to create an embedded signature request for signing in an iFrame. Use when you need to initiate a signature request that will be signed within your application rather than via email links. |
| `DROPBOX_SIGN_CREATE_EMBEDDED_SIGNATURE_REQUEST_WITH_TEMPLATE` | Create Embedded Signature Request With Template | Tool to create an embedded signature request based on a template. Use when you need to initiate a new signature request for embedded signing using pre-defined templates. Returns signature request details including signing URLs for embedded iFrame integration. |
| `DROPBOX_SIGN_CREATE_EMBEDDED_TEMPLATE_DRAFT` | Create Embedded Template Draft | Tool to create an embedded template draft. Use when initiating an embedded template workflow where users can edit the template in an iframe before finalizing it. |
| `DROPBOX_SIGN_CREATE_EMBEDDED_UNCLAIMED_DRAFT_WITH_TEMPLATE` | Create Embedded Unclaimed Draft with Template | Tool to create an embedded unclaimed draft using saved templates. Use when you need to create a draft that can be claimed and embedded in an iFrame for signature collection. |
| `DROPBOX_SIGN_CREATE_REPORT` | Create Report | Request creation of CSV report(s) for a specified date range. Reports are generated asynchronously and delivered via email. Available report types: user_activity (account activity), document_status (signature request status), sms_activity (SMS delivery info). You can request up to 2 report types per call. Date range can be up to 12 months, with start_date no more than 10 years in the past. Note: This feature may require a paid plan. |
| `DROPBOX_SIGN_CREATE_TEMPLATE` | Create Template | Tool to create a reusable template for document signing workflows. Use when you need to establish a template with pre-defined form fields, signer roles, and documents. |
| `DROPBOX_SIGN_CREATE_UNCLAIMED_DRAFT` | Create Unclaimed Draft | Tool to create an unclaimed draft that can be claimed via a unique URL. Use when you need to prepare a signature request or document send that will be finalized later by someone else through the claim URL. |
| `DROPBOX_SIGN_DELETE_API_APP` | Delete API App | Tool to delete an API App from your Dropbox Sign account by its client_id. Use when you need to remove an API App that is no longer needed. The API App must be owned by the requesting user. |
| `DROPBOX_SIGN_DELETE_FAX` | Delete Fax | Tool to delete a fax from the system by its fax_id. Use when you need to remove a fax from Dropbox Sign. Returns success if the fax is deleted or doesn't exist. |
| `DROPBOX_SIGN_DELETE_TEMPLATE` | Delete Template | Permanently deletes a template from your Dropbox Sign account by its template_id. Once deleted, the template cannot be recovered. Use this when you need to remove outdated or unused templates. Returns success if template is deleted or doesn't exist. |
| `DROPBOX_SIGN_DOWNLOAD_SIGNATURE_REQUEST_FILES` | Download Signature Request Files | Download files for a signature request as PDF (merged) or ZIP (individual documents). Returns immediately if files are ready, or indicates if files are still being prepared (409 status). |
| `DROPBOX_SIGN_EDIT_AND_RESEND_EMBEDDED_SIGNATURE_REQUEST` | Edit and Resend Embedded Signature Request | Tool to edit and resend an embedded signature request. Use when you need to modify and restart the embedded signing flow for an existing request. |
| `DROPBOX_SIGN_EDIT_AND_RESEND_SIGNATURE_REQUEST` | Edit and Resend Signature Request | Edits and resends an existing non-templated signature request with updated documents, signers, or settings. Use this tool when you need to modify an already-created signature request and resend it to signers. Note: This will reset signatures - anyone who already signed will need to sign again. Important: Edit and resend operations deduct from your signature request quota. Required: You must provide either 'files' or 'file_urls' (not both) and either 'signers' or 'grouped_signers' (not both). |
| `DROPBOX_SIGN_EDIT_AND_RESEND_UNCLAIMED_DRAFT` | Edit and Resend Unclaimed Draft | Tool to edit and resend a previously created unclaimed draft. Use when you have an existing signature_request_id and want to modify the draft before reissuing. |
| `DROPBOX_SIGN_EDIT_RESEND_EMBEDDED_SIGNATURE_REQUEST_TEMPLATE` | Edit and Resend Embedded Signature Request With Template | Tool to edit and resend an embedded signature request using templates. Use when you need to update request details or recipients and resend within an embedded signing flow. |
| `DROPBOX_SIGN_GET_ACCOUNT` | Get Dropbox Sign Account | Retrieves detailed information about a Dropbox Sign account including quotas, payment status, and settings. Use this tool to: - Check account quota limits (API requests, documents, templates remaining) - Verify account payment status (paid vs free tier) - Get account settings (SMS delivery, authentication options) - Retrieve account identifiers and contact information Requires either account_id (40-character identifier) or email_address, but not both. |
| `DROPBOX_SIGN_GET_API_APP` | Get API App | Tool to retrieve information about an API App by its client ID. Use when you need to fetch API App configuration, OAuth settings, white labeling options, or owner details. |
| `DROPBOX_SIGN_GET_BULK_SEND_JOB` | Get Bulk Send Job | Tool to retrieve the status of a bulk send job. Use when you need up-to-date job progress and request details. |
| `DROPBOX_SIGN_GET_CURRENT_TEAM` | Get Current Team Membership | Tool to get the current team membership status and details. Use when you need to check if the authenticated user is part of a team and retrieve team information. Returns is_on_team False if user is not part of any team (no retries needed for this case). |
| `DROPBOX_SIGN_GET_EMBEDDED_SIGN_URL` | Get Embedded Sign URL | Retrieves an embedded signing URL for a specific signer's signature. Use this after creating an embedded signature request to get a temporary URL that can be embedded in an iFrame for the signer to complete signing. The URL expires after 60 minutes or upon first access, but you can generate a new URL anytime using the same signature_id. Note: Requires the signature_id (per signer), not the signature_request_id. |
| `DROPBOX_SIGN_GET_EMBEDDED_TEMPLATE_EDIT_URL` | Get Embedded Template Edit URL | Tool to generate an edit URL for embedded template editing. Use after selecting or uploading a template to allow users to modify it in an iframe. |
| `DROPBOX_SIGN_GET_FAX_LINE_AREA_CODES` | Get Available Fax Line Area Codes | Tool to retrieve available fax line area codes for a given country, state/province, and city. Use when you need to determine which area codes are available for purchasing or provisioning a fax line in a specific location. |
| `DROPBOX_SIGN_GET_SIGNATURE_REQUEST` | Get Signature Request | Retrieves the current status and complete details of a signature request by ID. Use this action to: - Check if signers have viewed, signed, or declined the request - Get signer information and signature timestamps - Access form field responses and custom field values - Retrieve URLs for document downloads and management - Monitor signature request progress and completion status Returns detailed information including signer names, emails, signing status, custom fields, response data, attachments, and signing options. Handles errors gracefully with structured error responses for invalid or non-existent signature request IDs. |
| `DROPBOX_SIGN_GET_SIGNATURE_REQUEST_FILES_AS_DATA_URI` | Get Signature Request Files as Data URI | Tool to download signature request files as a base64-encoded data URI. Use when you need the document content as a data URI string for embedding or transmission. Returns immediately if files are ready (status 200), or indicates if files are still being prepared (status 409). |
| `DROPBOX_SIGN_GET_SIGNATURE_REQUEST_FILES_AS_FILE_URL` | Get Signature Request Files as File URL | Retrieves a copy of the current documents and returns a JSON object with a URL to the file (PDFs only). Use this action when you need a temporary download link for signature request documents instead of downloading the files directly. The returned URL will expire after a certain time period indicated by the expires_at field. |
| `DROPBOX_SIGN_GET_TEAM_INFO` | Get Team Info | Retrieves information about a Dropbox Sign team, including team name, member count, and sub-team count. Use when you need to get team details. If team_id is provided, retrieves info for that specific team; otherwise retrieves info for the authenticated user's team. |
| `DROPBOX_SIGN_GET_TEMPLATE` | Get Template | Tool to return the specified template. Use when you need to fetch full template details by ID. |
| `DROPBOX_SIGN_GET_TEMPLATE_FILES` | Download Template Files | Tool to download documents associated with a template. Use after confirming the template is created; returns a PDF or ZIP archive of the documents. |
| `DROPBOX_SIGN_GET_TEMPLATE_FILES_AS_DATA_URI` | Get Template Files as Data URI | Tool to retrieve template documents as base64-encoded data URI. Use when you need template files in data URI format instead of downloading binary files. |
| `DROPBOX_SIGN_GET_TEMPLATE_FILES_AS_FILE_URL` | Get Template Files as File URL | Tool to retrieve a copy of template documents and return a JSON object with a URL to the file (PDFs only). Use this action when you need a temporary download link for template documents instead of downloading the files directly. |
| `DROPBOX_SIGN_LIST_API_APPS` | List API Apps | Tool to list API Apps. Use when you need to retrieve a paginated list of API Apps accessible to your account. |
| `DROPBOX_SIGN_LIST_BULK_SEND_JOBS` | List Bulk Send Jobs | Tool to list bulk send jobs. Use when you need to retrieve all bulk send job summaries the authenticated user can access. Supports pagination via page and page_size. |
| `DROPBOX_SIGN_LIST_FAXES` | List Faxes | Tool to list faxes and their properties. Use when you need to retrieve paginated faxes with information about transmissions and status. |
| `DROPBOX_SIGN_LIST_FAX_LINES` | List Fax Lines | Tool to list fax lines and their properties. Use when you need to retrieve available fax lines for an account, optionally paging or including team lines. |
| `DROPBOX_SIGN_LIST_SIGNATURE_REQUESTS` | List Signature Requests | Tool to list signature requests. Use when you need to retrieve paginated signature requests with optional filters. |
| `DROPBOX_SIGN_LIST_SUB_TEAMS` | List Sub-Teams | Lists all sub-teams belonging to a parent team with pagination support. Returns team identifiers and names for each sub-team. Use this to discover the organizational structure of teams within Dropbox Sign. Requires a valid team_id from the parent team. Returns empty list if the team has no sub-teams or if team features are not available for the account. |
| `DROPBOX_SIGN_LIST_TEAM_MEMBERS` | List Team Members | Lists all members and their roles for a specific team. Returns a paginated list of team members with their account IDs, email addresses, and roles. Requires team_id which can be obtained from LIST_TEAMS or GET_TEAM_INFO actions. Supports pagination for teams with many members. |
| `DROPBOX_SIGN_LIST_TEAMS` | List All Teams | Lists all Dropbox Sign teams accessible to the authenticated user, including the current team and its sub-teams. Returns team IDs and names which can be used with other team-related actions. Returns an empty list if the account doesn't have team features enabled. |
| `DROPBOX_SIGN_LIST_TEMPLATES` | List Templates | Tool to list templates. Use when you need to retrieve a paginated list of templates accessible to your account. |
| `DROPBOX_SIGN_O_AUTH_AUTHORIZE` | Generate OAuth Authorization URL | Tool to generate an OAuth authorization URL. Use before directing the user to grant access. |
| `DROPBOX_SIGN_RELEASE_SIGNATURE_REQUEST_HOLD` | Release Signature Request Hold | Release a held signature request to send it to signers. Use this when a signature request was created from an unclaimed draft with hold_request=true and has been claimed but not yet sent. After releasing, the request will be sent to all designated signers. |
| `DROPBOX_SIGN_REMOVE_USER_FROM_TEMPLATE` | Remove User from Template | Tool to remove an account's access to a template. Use when you need to revoke a user's permission on a template after confirming template ID and target account. |
| `DROPBOX_SIGN_SEND_SIGNATURE_REQUEST` | Send Signature Request | Tool to create and send a new signature request with documents. Use when you need to send documents for electronic signature. The action sends emails to all specified signers with links to view and sign the documents. Supports multiple signers, CC recipients, custom fields, form fields, and various signing options. Documents can be uploaded directly or provided via publicly accessible URLs. |
| `DROPBOX_SIGN_SEND_SIGNATURE_REQUEST_REMINDER` | Send Request Reminder | Sends an email reminder to a signer about a pending signature request. Use this when a signer needs a reminder to complete their signature. Important constraints: - Cannot send a reminder within 1 hour of the last reminder (automatic or manual) - Cannot be used with embedded signature requests - The signature request must exist and not be completed - The email address must match a signer on the request |
| `DROPBOX_SIGN_UPDATE_ACCOUNT` | Update Dropbox Sign Account | Tool to update Dropbox Sign account properties and settings. Use when you need to modify callback URLs or locale settings for an account. |
| `DROPBOX_SIGN_UPDATE_API_APP` | Update API App | Tool to update an existing API App in Dropbox Sign. Use when you need to modify API App settings such as name, callback URL, domains, OAuth configuration, branding options, or custom logo. |
| `DROPBOX_SIGN_UPDATE_SIGNATURE_REQUEST` | Update Signature Request | Updates the email address and/or name for a specific signer on a signature request. Use this when you need to correct or update signer contact information before they complete signing. Important: This endpoint only works for signature requests created with explicit form_fields_per_document (no appended signature page). At least one of email_address or name must be provided. |
| `DROPBOX_SIGN_UPDATE_TEMPLATE_FILES` | Update Template Files | Tool to update files for an existing template. Overlays new files with the overlay of an existing template. Use when you need to replace the documents in a template while keeping the field configuration. The update is processed asynchronously; completion is communicated via callback events (template_created or template_error). |
| `DROPBOX_SIGN_VERIFY_ACCOUNT` | Verify Dropbox Sign Account | Tool to verify whether a Dropbox Sign account exists for the given email. Use when you need to check account existence before sending signature requests. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Dropbox sign MCP server is an implementation of the Model Context Protocol that connects your AI agent to Dropbox sign. It provides structured and secure access so your agent can perform Dropbox sign operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before starting, make sure you have:
- Python 3.9 or higher
- A Composio account and API key
- A Dropbox sign connection authorized in Composio
- An OpenAI API key for the CrewAI LLM
- Basic familiarity with Python

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install dependencies

**What's happening:**
- composio connects your agent to Dropbox sign via MCP
- crewai provides Agent, Task, Crew, and LLM primitives
- crewai-tools[mcp] includes MCP helpers
- python-dotenv loads environment variables from .env
```bash
pip install composio crewai crewai-tools[mcp] python-dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's happening:
- COMPOSIO_API_KEY authenticates with Composio
- USER_ID scopes the session to your account
- OPENAI_API_KEY lets CrewAI use your chosen OpenAI model
```bash
COMPOSIO_API_KEY=your_composio_api_key_here
USER_ID=your_user_id_here
OPENAI_API_KEY=your_openai_api_key_here
```

### 4. Import dependencies

**What's happening:**
- CrewAI classes define agents and tasks, and run the workflow
- MCPServerHTTP connects the agent to an MCP endpoint
- Composio will give you a short lived Dropbox sign MCP URL
```python
import os
from composio import Composio
from crewai import Agent, Task, Crew
from crewai_tools import MCPServerAdapter
import dotenv

dotenv.load_dotenv()

COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set")
```

### 5. Create a Composio Tool Router session for Dropbox sign

**What's happening:**
- You create a Dropbox sign only session through Composio
- Composio returns an MCP HTTP URL that exposes Dropbox sign tools
```python
composio_client = Composio(api_key=COMPOSIO_API_KEY)
session = composio_client.create(user_id=COMPOSIO_USER_ID, toolkits=["dropbox_sign"])

url = session.mcp.url
```

### 6. Initialize the MCP Server

**What's Happening:**
- Server Configuration: The code sets up connection parameters including the MCP server URL, streamable HTTP transport, and Composio API key authentication.
- MCP Adapter Bridge: MCPServerAdapter acts as a context manager that converts Composio MCP tools into a CrewAI-compatible format.
- Agent Setup: Creates a CrewAI Agent with a defined role (Search Assistant), goal (help with internet searches), and access to the MCP tools.
- Configuration Options: The agent includes settings like verbose=False for clean output and max_iter=10 to prevent infinite loops.
- Dynamic Tool Usage: Once created, the agent automatically accesses all Composio Search tools and decides when to use them based on user queries.
```python
server_params = {
    "url": url,
    "transport": "streamable-http",
    "headers": {"x-api-key": COMPOSIO_API_KEY},
}

with MCPServerAdapter(server_params) as tools:
    agent = Agent(
        role="Search Assistant",
        goal="Help users search the internet effectively",
        backstory="You are a helpful assistant with access to search tools.",
        tools=tools,
        verbose=False,
        max_iter=10,
    )
```

### 7. Create a CLI Chatloop and define the Crew

**What's Happening:**
- Interactive CLI Setup: The code creates an infinite loop that continuously prompts for user input and maintains the entire conversation history in a string variable.
- Input Validation: Empty inputs are ignored to prevent processing blank messages and keep the conversation clean.
- Context Building: Each user message is appended to the conversation context, which preserves the full dialogue history for better agent responses.
- Dynamic Task Creation: For every user input, a new Task is created that includes both the full conversation history and the current request as context.
- Crew Execution: A Crew is instantiated with the agent and task, then kicked off to process the request and generate a response.
- Response Management: The agent's response is converted to a string, added to the conversation context, and displayed to the user, maintaining conversational continuity.
```python
print("Chat started! Type 'exit' or 'quit' to end.\n")

conversation_context = ""

while True:
    user_input = input("You: ").strip()

    if user_input.lower() in ["exit", "quit", "bye"]:
        print("\nGoodbye!")
        break

    if not user_input:
        continue

    conversation_context += f"\nUser: {user_input}\n"
    print("\nAgent is thinking...\n")

    task = Task(
        description=(
            f"Conversation history:\n{conversation_context}\n\n"
            f"Current request: {user_input}"
        ),
        expected_output="A helpful response addressing the user's request",
        agent=agent,
    )

    crew = Crew(agents=[agent], tasks=[task], verbose=False)
    result = crew.kickoff()
    response = str(result)

    conversation_context += f"Agent: {response}\n"
    print(f"Agent: {response}\n")
```

## Complete Code

```python
from crewai import Agent, Task, Crew, LLM
from crewai_tools import MCPServerAdapter
from composio import Composio
from dotenv import load_dotenv
import os

load_dotenv()

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")

# Initialize Composio and create a session
composio = Composio(api_key=COMPOSIO_API_KEY)
session = composio.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["dropbox_sign"],
)
url = session.mcp.url

# Configure LLM
llm = LLM(
    model="gpt-5",
    api_key=os.getenv("OPENAI_API_KEY"),
)

server_params = {
    "url": url,
    "transport": "streamable-http",
    "headers": {"x-api-key": COMPOSIO_API_KEY},
}

with MCPServerAdapter(server_params) as tools:
    agent = Agent(
        role="Search Assistant",
        goal="Help users with internet searches",
        backstory="You are an expert assistant with access to Composio Search tools.",
        tools=tools,
        llm=llm,
        verbose=False,
        max_iter=10,
    )

    print("Chat started! Type 'exit' or 'quit' to end.\n")

    conversation_context = ""

    while True:
        user_input = input("You: ").strip()

        if user_input.lower() in ["exit", "quit", "bye"]:
            print("\nGoodbye!")
            break

        if not user_input:
            continue

        conversation_context += f"\nUser: {user_input}\n"
        print("\nAgent is thinking...\n")

        task = Task(
            description=(
                f"Conversation history:\n{conversation_context}\n\n"
                f"Current request: {user_input}"
            ),
            expected_output="A helpful response addressing the user's request",
            agent=agent,
        )

        crew = Crew(agents=[agent], tasks=[task], verbose=False)
        result = crew.kickoff()
        response = str(result)

        conversation_context += f"Agent: {response}\n"
        print(f"Agent: {response}\n")
```

## Conclusion

You now have a CrewAI agent connected to Dropbox sign through Composio's Tool Router. The agent can perform Dropbox sign operations through natural language commands.
Next steps:
- Add role-specific instructions to customize agent behavior
- Plug in more toolkits for multi-app workflows
- Chain tasks for complex multi-step operations

## How to build Dropbox sign MCP Agent with another framework

- [ChatGPT](https://composio.dev/toolkits/dropbox_sign/framework/chatgpt)
- [OpenAI Agents SDK](https://composio.dev/toolkits/dropbox_sign/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/dropbox_sign/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/dropbox_sign/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/dropbox_sign/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/dropbox_sign/framework/codex)
- [Cursor](https://composio.dev/toolkits/dropbox_sign/framework/cursor)
- [VS Code](https://composio.dev/toolkits/dropbox_sign/framework/vscode)
- [OpenCode](https://composio.dev/toolkits/dropbox_sign/framework/opencode)
- [OpenClaw](https://composio.dev/toolkits/dropbox_sign/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/dropbox_sign/framework/hermes-agent)
- [CLI](https://composio.dev/toolkits/dropbox_sign/framework/cli)
- [Google ADK](https://composio.dev/toolkits/dropbox_sign/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/dropbox_sign/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/dropbox_sign/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/dropbox_sign/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/dropbox_sign/framework/llama-index)

## Related Toolkits

- [Google Drive](https://composio.dev/toolkits/googledrive) - Google Drive is a cloud storage platform for uploading, sharing, and collaborating on files. It's perfect for keeping your documents accessible and organized across devices.
- [Google Docs](https://composio.dev/toolkits/googledocs) - Google Docs is a cloud-based word processor that enables document creation and real-time collaboration. Its seamless sharing and version history make team editing and content management a breeze.
- [Google Super](https://composio.dev/toolkits/googlesuper) - Google Super is an all-in-one suite combining Gmail, Drive, Calendar, Sheets, Analytics, and more. It gives you a unified platform to manage your digital life, boosting productivity and organization.
- [Affinda](https://composio.dev/toolkits/affinda) - Affinda is an AI-powered document processing platform that automates data extraction from resumes, invoices, and more. It streamlines document-heavy workflows by turning files into structured, actionable data.
- [Agility cms](https://composio.dev/toolkits/agility_cms) - Agility CMS is a headless content management system for building and managing digital experiences across platforms. It lets teams update content quickly and deliver omnichannel experiences with ease.
- [Algodocs](https://composio.dev/toolkits/algodocs) - Algodocs is an AI-powered platform that automates data extraction from business documents. It delivers fast, secure, and accurate processing without templates or manual training.
- [Api2pdf](https://composio.dev/toolkits/api2pdf) - Api2Pdf is a REST API for generating PDFs from HTML, URLs, and documents using powerful engines like wkhtmltopdf and Headless Chrome. It streamlines document conversion and automation for developers and businesses.
- [Aryn](https://composio.dev/toolkits/aryn) - Aryn is an AI-powered platform for parsing, extracting, and analyzing data from unstructured documents. Use it to automate document processing and unlock actionable insights from your files.
- [Boldsign](https://composio.dev/toolkits/boldsign) - Boldsign is a digital eSignature platform for sending, signing, and tracking documents online. Organizations use it to automate agreements and manage legally binding workflows efficiently.
- [Boloforms](https://composio.dev/toolkits/boloforms) - BoloForms is an eSignature platform built for small businesses, offering unlimited signatures, templates, and forms. It simplifies digital document signing and team collaboration at a predictable, fixed price.
- [Box](https://composio.dev/toolkits/box) - Box is a cloud content management and file sharing platform for businesses. It helps teams securely store, organize, and collaborate on files from anywhere.
- [Carbone](https://composio.dev/toolkits/carbone) - Carbone is a blazing-fast report generator that turns JSON data into PDFs, Word docs, spreadsheets, and more using flexible templates. It lets you automate document creation at scale with minimal code.
- [Castingwords](https://composio.dev/toolkits/castingwords) - CastingWords is a transcription service specializing in human-powered, accurate transcripts via a simple API. Get seamless audio-to-text conversion for interviews, meetings, podcasts, and more.
- [Cloudconvert](https://composio.dev/toolkits/cloudconvert) - CloudConvert is a powerful file conversion service supporting over 200 file formats. It streamlines converting, compressing, and managing documents, media, and more, all in one place.
- [Cloudlayer](https://composio.dev/toolkits/cloudlayer) - Cloudlayer is a document and asset generation service for creating PDFs and images via API or SDKs. It lets you automate high-quality doc creation, saving dev time and reducing manual work.
- [Cloudpress](https://composio.dev/toolkits/cloudpress) - Cloudpress is a content export tool for Google Docs and Notion. It automates publishing to your favorite Content Management Systems.
- [Contentful graphql](https://composio.dev/toolkits/contentful_graphql) - Contentful graphql is a content delivery API that lets you access Contentful data using GraphQL queries. It gives you efficient, flexible ways to fetch and manage structured content for any digital project.
- [Conversion tools](https://composio.dev/toolkits/conversion_tools) - Conversion Tools is an online service for converting documents between formats such as PDF, Word, Excel, XML, and CSV. It lets you automate complex document workflows with just a few clicks.
- [Convertapi](https://composio.dev/toolkits/convertapi) - ConvertAPI is a robust file conversion service for documents, images, and spreadsheets. It streamlines programmatic format changes and lets developers automate complex workflows with a single API.
- [Craftmypdf](https://composio.dev/toolkits/craftmypdf) - CraftMyPDF is a web-based service for designing and generating PDFs with templates and live data. It streamlines document creation by automating personalized PDFs at scale.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Dropbox sign MCP?

With a standalone Dropbox sign MCP server, the agents and LLMs can only access a fixed set of Dropbox sign tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Dropbox sign and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with CrewAI?

Yes, you can. CrewAI fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Dropbox sign tools.

### Can I manage the permissions and scopes for Dropbox sign while using Tool Router?

Yes, absolutely. You can configure which Dropbox sign scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Dropbox sign data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
