# Copper

```json
{
  "name": "Copper",
  "slug": "copper",
  "url": "https://composio.dev/toolkits/copper",
  "markdown_url": "https://composio.dev/toolkits/copper.md",
  "logo_url": "https://logos.composio.dev/api/copper",
  "categories": [
    "crm"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-04T16:13:48.071Z"
}
```

![Copper logo](https://logos.composio.dev/api/copper)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Copper MCP or direct API to create leads, update contacts, manage opportunities, and log activities through natural language.

## Summary

Copper is a customer relationship management (CRM) platform for managing contacts, leads, opportunities, tasks, and projects.
Built to centralize customer data and streamline sales workflows.

## Categories

- crm

## Toolkit Details

- Tools: 65

## Images

- Logo: https://logos.composio.dev/api/copper

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for Copper.
  - Setup:
    - Configure Api Key credentials for Copper.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Create a new lead from email
- List open opportunities assigned to me
- Log a call and attach meeting notes

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `COPPER_BULK_CREATE_ACTIVITIES` | Bulk Create Activities (Beta) | Attempt to create 1-10 user-category Copper activities and return ordered per-item successes or validation failures. Deleting these activities is a soft delete: successful cleanup may leave an activity fetchable as an is_deleted=true stub rather than make it fully disappear. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_BULK_CREATE_COMPANIES` | Bulk Create Companies (Beta) | Attempt to create 1-10 Copper companies and return ordered per-item successes or validation failures. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_BULK_CREATE_LEADS` | Bulk Create Leads | Create 1-10 Copper leads in one beta bulk request and return ordered per-item outcomes. Copper can return HTTP 500 after applying the write; treat failures as indeterminate and read records back before retrying to avoid duplicates. |
| `COPPER_BULK_CREATE_OPPORTUNITIES` | Bulk Create Opportunities (Beta) | Attempt to create 1-10 Copper opportunities and return ordered per-item successes or validation failures. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_BULK_CREATE_PEOPLE` | Bulk Create People (Beta) | Attempt to create 1-10 Copper people and return ordered per-item successes or validation failures. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_BULK_UPDATE_COMPANIES` | Bulk Update Companies (Beta) | Attempt to update 1-10 Copper companies and return ordered per-item successes or validation failures. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_BULK_UPDATE_LEADS` | Bulk Update Leads | Update 1-10 Copper leads in one beta bulk request and return ordered per-item outcomes. Copper can return HTTP 500 after applying the write; treat failures as indeterminate and read records back before retrying. |
| `COPPER_BULK_UPDATE_PEOPLE` | Bulk Update People (Beta) | Attempt to update 1-10 Copper people and return ordered per-item successes or validation failures. This Copper bulk endpoint is beta, accepts 1-10 records per request, returns results in request order, and has an additional limit of 3 requests per second. |
| `COPPER_CONVERT_LEAD` | Convert Lead | Convert a Copper lead into a person and optionally a company and opportunity; the original lead is removed. |
| `COPPER_CREATE_ACTIVITY` | Create Activity | Create a user-category activity such as a note on an existing Copper lead, person, company, opportunity, project, or task; system activities are read-only. |
| `COPPER_CREATE_COMPANY` | Create Company | Create a Copper company with domain, contact, ownership, tag, and custom-field data. |
| `COPPER_CREATE_CUSTOM_ACTIVITY_TYPE` | Create Custom Activity Type | Create a named Copper custom activity type with a supported icon. Custom activity types cannot be deleted; retire one with UPDATE_CUSTOM_ACTIVITY_TYPE using is_disabled=true. |
| `COPPER_CREATE_CUSTOM_FIELD_DEFINITION` | Create Custom Field Definition | Create a Copper custom field for selected record types. |
| `COPPER_CREATE_LEAD` | Create Lead | Create a Copper lead with contact, ownership, source, status, tag, and custom-field data. |
| `COPPER_CREATE_OPPORTUNITY` | Create Opportunity | Create a Copper opportunity. Only the name is required; Copper can supply the default pipeline and stage, and the primary contact is optional. |
| `COPPER_CREATE_PERSON` | Create Person | Create a Copper person with contact, company, ownership, tag, and custom-field data. |
| `COPPER_CREATE_PROJECT` | Create Project | Create a Copper project, optionally related to another record and assigned to a user. |
| `COPPER_CREATE_RELATED_LINK` | Create Related Link | Connect two existing Copper records through a Connect custom field. |
| `COPPER_CREATE_TASK` | Create Task | Create a Copper task with optional assignment, related record, due/reminder times, priority, tags, and custom fields. |
| `COPPER_DELETE_ATTACHED_FILE` | Delete Attached File | Permanently delete one file attached to a Copper lead, person, opportunity, company, or project. |
| `COPPER_DELETE_CUSTOM_FIELD_DEFINITION` | Delete Custom Field Definition | Permanently delete one Copper custom-field definition by ID. |
| `COPPER_DELETE_LEAD` | Delete Lead | Permanently delete one Copper lead by ID. |
| `COPPER_DELETE_RECORD` | Delete Record | Delete one Copper person, company, opportunity, project, task, or activity by type and ID. Deleting an activity is a soft delete: successful cleanup may leave it fetchable as an is_deleted=true stub rather than make it fully disappear. |
| `COPPER_DELETE_RELATED_LINK` | Delete Related Link | Delete one Copper Connect-field connection by related-link ID. |
| `COPPER_GET_ACCOUNT` | Get Account | Return the connected Copper account, timezone, and feature settings; use it to preflight features such as Leads. |
| `COPPER_GET_ATTACHED_FILE_METADATA` | Get Attached File Metadata | Get metadata for one file attached to a Copper lead, person, opportunity, company, or project. |
| `COPPER_GET_CURRENT_USER` | Get Current User | Return the Copper user represented by the connected account, including the user ID used for assignments. |
| `COPPER_GET_CUSTOM_ACTIVITY_TYPE` | Get Custom Activity Type | Return one Copper custom activity type's name, icon, enabled state, interaction behavior, and ownership metadata by ID. |
| `COPPER_GET_CUSTOM_FIELD_DEFINITION` | Get Custom Field Definition | Return one Copper custom field's data type, record availability, filterability, options, and currency configuration by definition ID. |
| `COPPER_GET_FIELD_LAYOUT` | Get Field Layout | Return enabled and create/edit requiredness metadata for one Copper entity type. Opportunities require pipeline_id; other entity types do not accept it. |
| `COPPER_GET_LEAD` | Get Lead | Return one Copper lead's contact, ownership, source, status, tags, and custom-field data by lead ID. |
| `COPPER_GET_PERSON_BY_EMAIL` | Get Person by Email | Return the unique Copper person record matching an exact email address. |
| `COPPER_GET_RECORD` | Get Record | Fetch one user, person, company, opportunity, project, task, or activity by its type and ID. |
| `COPPER_LIST_ATTACHED_FILES` | List Attached Files | List all files attached to one Copper lead, person, opportunity, company, or project. |
| `COPPER_LIST_CUSTOM_ACTIVITY_TYPES` | List Custom Activity Types | List Copper's default user-entered activity types and account-created custom activity types; system activity types and Notes are available through LIST_REFERENCE_VALUES with activity_types. |
| `COPPER_LIST_CUSTOM_FIELD_DEFINITIONS` | List Custom Field Definitions | Return Copper custom-field IDs, types, availability, and options needed to read, filter, and write custom field values. |
| `COPPER_LIST_ENTITY_ACTIVITIES` | List Lead, Person, or Company Activities | List selected activity types related to one Copper lead, person, or company; company results may also include activities from related people. |
| `COPPER_LIST_LEAD_STATUSES` | List Lead Statuses | List Copper lead status IDs, names, display order, and default selection for use in lead writes and searches. |
| `COPPER_LIST_PIPELINES` | List Pipelines | Return all configured Copper pipelines with their stages and win probabilities for opportunity creation and updates. |
| `COPPER_LIST_PIPELINE_STAGES` | List Pipeline Stages | List Copper opportunity stages for one pipeline, or omit pipeline_id for a flat cross-pipeline list; use LIST_PIPELINES when pipeline context and win probabilities are needed. |
| `COPPER_LIST_REFERENCE_VALUES` | List Reference Values | List one bounded set of Copper IDs used in write schemas: activity types, customer sources, contact types, or opportunity loss reasons. |
| `COPPER_LIST_RELATED_LINKS` | List Related Links | List Connect-field connections for one Copper source record, optionally narrowed to one Connect field. |
| `COPPER_LIST_RELATED_RECORDS` | List Related Records | List records related to one Copper entity, optionally restricted to a target record type. |
| `COPPER_LIST_TAGS` | List Tags | Return one alphabetical page of Copper tag names for filtering or assigning records. |
| `COPPER_LIST_USERS` | List Users | Return one page of Copper users for resolving assignee and owner IDs. |
| `COPPER_RELATE_RECORDS` | Relate Records | Create a direct relationship between two existing Copper records, preserving both record types and IDs. |
| `COPPER_SEARCH_ACTIVITIES` | Search Activities | Search Copper activities globally or for one parent record by activity type and date range, returning one page. |
| `COPPER_SEARCH_COMPANIES` | Search Companies | Search Copper companies by name, domain, ownership, contact type, location, date, or custom-field criteria and return one page. |
| `COPPER_SEARCH_LEADS` | Search Leads | Search Copper leads by identity, ownership, status, source, location, value, activity, date, tags, socials, or custom fields and return one page. |
| `COPPER_SEARCH_OPPORTUNITIES` | Search Opportunities | Search Copper opportunities by pipeline, stage, status, contact, company, value, date, ownership, or custom-field criteria and return one page. |
| `COPPER_SEARCH_PEOPLE` | Search People | Search Copper people by contact, company, ownership, tag, date, or custom-field criteria and return one page. |
| `COPPER_SEARCH_PROJECTS` | Search Projects | Search Copper projects by name, owner, tag, status, or custom-field criteria and return one page. |
| `COPPER_SEARCH_TASKS` | Search Tasks | Search Copper tasks by name, owner, tag, related project or opportunity, status, due date, or custom-field criteria and return one page. |
| `COPPER_UNRELATE_RECORDS` | Unrelate Records | Remove a direct relationship between two existing Copper records without deleting either record. |
| `COPPER_UPDATE_ACTIVITY` | Update Activity | Update the details, date, or both for an existing user-category Copper activity; at least one change is required, and system or deleted activities cannot be modified. |
| `COPPER_UPDATE_COMPANY` | Update Company | Update selected writable fields of an existing Copper company without replacing omitted fields. |
| `COPPER_UPDATE_CUSTOM_ACTIVITY_TYPE` | Update Custom Activity Type | Rename, change the icon, or enable or disable a Copper custom activity type. To retire a type, disable it with is_disabled=true; custom activity types cannot be deleted. |
| `COPPER_UPDATE_CUSTOM_FIELD_DEFINITION` | Update Custom Field Definition | Update one Copper custom-field definition by ID. |
| `COPPER_UPDATE_LEAD` | Update Lead | Update selected fields of a Copper lead without replacing omitted fields. |
| `COPPER_UPDATE_OPPORTUNITY` | Update Opportunity | Update selected writable fields of an existing Copper opportunity without replacing omitted fields. |
| `COPPER_UPDATE_PERSON` | Update Person | Update selected writable fields of an existing Copper person without replacing omitted fields. |
| `COPPER_UPDATE_PROJECT` | Update Project | Update selected writable fields of an existing Copper project without replacing omitted fields. |
| `COPPER_UPDATE_TASK` | Update Task | Update selected writable fields of an existing Copper task without replacing omitted fields. |
| `COPPER_UPLOAD_ATTACHED_FILE` | Upload Attached File | Get upload authorization from Copper, upload up to 20 MB of file bytes to Copper's fixed Amazon S3 bucket, and attach the uploaded key to one Copper lead, person, opportunity, company, or project. If a failure occurs after the S3 upload starts, the file may already be uploaded or attached; verify the record before retrying to avoid duplicate attachments. |
| `COPPER_UPSERT_LEAD` | Upsert Lead | Create or update a Copper lead by exact name, email, or custom-field match. Copper resolves matches through a search index that can lag recent writes by seconds, so upserting a just-created lead may insert a duplicate; wait and verify before retrying. Copper rejects ambiguous matches. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute Copper Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Copper actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'YOUR_SPECIFIC_PROMPT_HERE'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'YOUR_SPECIFIC_PROMPT_HERE'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK for Python or TypeScript
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Initialize Client and Create Tool Router Session

Import and initialize the Composio client, then create a Tool Router session for Copper
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });
const session = await composio.create('your-user-id');
console.log(`Tool Router session created: ${session.mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent (Anthropic Claude or Mastra)
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Copper tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('YOUR_SPECIFIC_PROMPT_HERE')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: session.mcp.url,
    headers: {
      'x-api-key': 'your-composio-api-key',
    },
  },
});

const tools = await client.tools();
const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{
    role: 'user',
    content: 'YOUR_SPECIFIC_PROMPT_HERE'
  }],
  maxSteps: 5,
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native Copper Integration

- Supports both Copper MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Copper data

### 2. Managed Auth

- Central place to manage, scope, and revoke Copper API keys
- Per-user and per-environment credential handling instead of hard-coded keys
- Composio stores credentials securely and ties actions to users for audit

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Copper
- Scoped, least privilege access to Copper resources
- Full audit trail of agent actions to support review and compliance

## Use Copper with any AI Agent Framework

Choose a framework you want to connect Copper with:

- [ChatGPT](https://composio.dev/toolkits/copper/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/copper/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/copper/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/copper/framework/atomic-agent)

## Related Toolkits

- [HubSpot](https://composio.dev/toolkits/hubspot) - HubSpot is an all-in-one marketing, sales, and customer service platform. It lets teams nurture leads, automate outreach, and track every customer interaction in one place.
- [Pipedrive](https://composio.dev/toolkits/pipedrive) - Pipedrive is a sales management platform offering pipeline visualization, lead tracking, and workflow automation. It helps sales teams keep deals moving forward efficiently and never miss a follow-up.
- [Salesforce](https://composio.dev/toolkits/salesforce) - Salesforce is a leading CRM platform that helps businesses manage sales, service, and marketing. It centralizes customer data, enabling teams to drive growth and build strong relationships.
- [Apollo](https://composio.dev/toolkits/apollo) - Apollo is a CRM and lead generation platform that helps businesses discover contacts and manage sales pipelines. Use it to streamline customer outreach and track your deals from one place.
- [Attio](https://composio.dev/toolkits/attio) - Attio is a customizable CRM and workspace for managing your team's relationships and workflows. It helps teams organize contacts, automate tasks, and collaborate more efficiently.
- [Acculynx](https://composio.dev/toolkits/acculynx) - AccuLynx is a cloud-based roofing business management software for contractors. It streamlines project tracking, lead management, and document sharing.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Affinity](https://composio.dev/toolkits/affinity) - Affinity is a relationship intelligence CRM that helps private capital investors find, manage, and close more deals. It streamlines deal flow and surfaces key connections to help you win opportunities.
- [Agencyzoom](https://composio.dev/toolkits/agencyzoom) - AgencyZoom is a sales and performance platform built for P&C insurance agencies. It helps agents boost sales, retain clients, and analyze producer results in one place.
- [Agile CRM](https://composio.dev/toolkits/agile_crm) - Agile CRM is a unified customer management platform combining contacts, sales pipelines, marketing, and support. Use it to centralize customer data, automate campaigns, and manage deals and tickets in one place.
- [Bettercontact](https://composio.dev/toolkits/bettercontact) - Bettercontact is a smart contact enrichment tool for finding emails and phone numbers. It helps boost lead generation with automated, waterfall search across multiple sources.
- [Blackbaud](https://composio.dev/toolkits/blackbaud) - Blackbaud provides cloud-based software for nonprofits, schools, and healthcare institutions. It streamlines fundraising, donor management, and mission-driven operations.
- [Blitz API](https://composio.dev/toolkits/blitz_api) - Blitz API is a people, company, and job search API with contact and company enrichment. Use it to enrich leads and accelerate sales outreach with accurate contact and firmographic data.
- [Brilliant directories](https://composio.dev/toolkits/brilliant_directories) - Brilliant Directories is an all-in-one platform for building and managing online membership communities and business directories. It streamlines listings, member management, and engagement tools into a single, easy interface.
- [Capsule crm](https://composio.dev/toolkits/capsule_crm) - Capsule CRM is a user-friendly CRM platform for managing contacts and sales pipelines. It helps businesses organize relationships and streamline their sales process efficiently.
- [Centralstationcrm](https://composio.dev/toolkits/centralstationcrm) - CentralStationCRM is an easy-to-use CRM software focused on collaboration and long-term customer relationships. It helps teams manage contacts, deals, and communications all in one place.
- [Clarify MCP](https://composio.dev/toolkits/clarify_mcp) - Clarify MCP is a CRM platform for managing companies, people, deals, meetings, tasks, lists, and campaigns. Use it to centralize CRM data and streamline sales and marketing workflows.
- [Clay](https://composio.dev/toolkits/clay) - Clay is a go-to-market data enrichment and workflow automation platform for searching people and companies, running routines, and querying workspace tables. It helps teams enrich leads, automate GTM workflows, and keep workspace data synchronized.
- [Clay MCP](https://composio.dev/toolkits/clay_mcp) - Clay MCP is a prospect enrichment service for researching companies and contacts. It runs enrichment providers and Clay functions to return enriched prospect data.
- [Clientary](https://composio.dev/toolkits/clientary) - Clientary is a platform for managing clients, invoices, projects, proposals, and more. It streamlines client work and saves you serious admin time.

## Frequently Asked Questions

### Do I need my own developer credentials to use Copper with Composio?

Yes, Copper requires you to configure your own API key credentials. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

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