> This page is for Agent Handler.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.merge.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.merge.dev/_mcp/server.

# Copper

**Authentication:** email and API key. See [Magic Link](/merge-agent-handler/features/magic-link) for the runtime auth flow.

## Sample use cases

* Find the person record for `alice@acme.com` and log a call activity against it
* Convert a qualified lead into a person, company, and opportunity in one step
* List opportunities in the `Enterprise` pipeline that have not moved stages in 30 days

## Available Tools

#### list_activities

Search activities, optionally scoped to one record with parent; this is how you read a contact's history. Set...

#### get_activity

Fetch one activity by ID, including its type, the record it belongs to and its text body. Use list_activities to...

#### create_activity

Log an activity (note, call, meeting) against a record. Copper requires a type, a parent and details. Call...

#### update_activity

Update a logged activity's text or date. Copper requires the type on every update even when unchanged; call...

#### delete_activity

Permanently delete a logged activity by ID. This cannot be undone. Only 'user' category activities can be deleted...

#### bulk_create_activities

Log up to 10 activities in one call, each with a type, a parent and details. Call list_activity_types first for...

#### list_companies

Search companies with server-side filters (name, email domains, assignee, contact type, tags, location, interaction...

#### get_company

Fetch one company by ID, including address, websites, tags and custom fields. Use list_companies to find the ID.

#### create_company

Create a company. Only a name is required. email_domain must be unique across the account or the call fails. Call...

#### update_company

Update a company by ID. Only the fields you supply change, but list fields such as websites and tags replace the...

#### delete_company

Permanently delete a company by ID. This cannot be undone and does not delete the people linked to it. Use...

#### bulk_create_companies

Create up to 10 companies in one call. Copper answers 200 even when individual records fail, so check the per-record...

#### bulk_update_companies

Update up to 10 companies in one call, each identified by company_id. Copper answers 200 even when individual...

#### list_leads

Search leads with server-side filters (name, emails, company, status, source, assignee, tags, location and value...

#### get_lead

Fetch one lead by ID, including email, company name, status, value and custom fields. Use list_leads to find the ID.

#### create_lead

Create a lead. Only a name is required. Call list_lead_statuses, list_customer_sources, list_users and...

#### update_lead

Update a lead by ID; change its status, owner, value or details. Only the fields you supply change, but list fields...

#### delete_lead

Permanently delete a lead by ID. This cannot be undone; to qualify a lead instead, use convert_lead. Use list_leads...

#### convert_lead

Convert a qualified lead into a person, and optionally a company and an opportunity. The lead is consumed and can no...

#### bulk_create_leads

Create up to 10 leads in one call. Copper answers 200 even when individual records fail, so check the per-record...

#### bulk_update_leads

Update up to 10 leads in one call, each identified by lead_id. Copper answers 200 even when individual records fail...

#### get_account

Fetch the Copper account this credential belongs to: its ID, name, timezone and which optional modules are enabled...

#### list_users

List the users in the Copper account. Call this first to get the user IDs that assignee_id takes on every create and...

#### list_pipelines

List the opportunity pipelines in the account. Call this to get the pipeline_id that create_opportunity and...

#### get_pipeline

Get one opportunity pipeline by ID, including its stages and whether it tracks revenue. Use this when list_pipelines...

#### list_pipeline_stages

List every opportunity pipeline stage in the account, each naming the pipeline it belongs to. Call this to get the...

#### list_activity_types

List the activity types in the account, split into the 'user' types an integration may write and the read-only...

#### list_contact_types

List the contact types in the account, e.g. 'Potential Customer'. Call this to get the contact_type_id that...

#### list_customer_sources

List the customer sources in the account, e.g. 'Cold Call'. Call this to get the customer_source_id that...

#### list_loss_reasons

List the loss reasons in the account. Call this to get the loss_reason_id to pass to update_opportunity when setting...

#### list_lead_statuses

List the lead statuses in the account. Call this to get the status_id that create_lead and update_lead take. Fails...

#### list_custom_field_definitions

List the custom field definitions configured on the account, with each field's data type, the entities it applies...

#### list_tags

List the tags already in use across the account. Call this before setting tags on a record so you reuse an existing...

#### list_opportunities

Search opportunities with server-side filters (pipeline, stage, status, priority, assignee, company, value...

#### get_opportunity

Fetch one opportunity by ID, including pipeline, stage, value, status and custom fields. Use list_opportunities to...

#### create_opportunity

Create an opportunity. Copper requires a name and a primary_contact_id; use list_people or get_person_by_email to...

#### update_opportunity

Update an opportunity by ID; move it to another stage, change its value, or close it by setting status to Won or...

#### delete_opportunity

Permanently delete an opportunity by ID. This cannot be undone; to close a deal instead, use update_opportunity with...

#### bulk_create_opportunities

Create up to 10 opportunities in one call. Each needs a name and a primary_contact_id. Copper answers 200 even when...

#### list_people

Search people with server-side filters (name, emails, company, assignee, contact type, tags, location, interaction...

#### get_person

Fetch one person by ID, including emails, phone numbers, company, tags and custom fields. Use list_people or...

#### get_person_by_email

Fetch one person by their exact email address. Use this when you have an email and need the person's ID; use...

#### create_person

Create a person. Only a name is required. Call list_contact_types, list_users, list_companies and...

#### update_person

Update a person by ID. Only the fields you supply change; omitted fields are left alone, but list fields such as...

#### delete_person

Permanently delete a person by ID. This cannot be undone. Use list_people to find the ID and confirm the record...

#### bulk_create_people

Create up to 10 people in one call. Copper answers 200 even when individual records fail, so check the per-record...

#### bulk_update_people

Update up to 10 people in one call, each identified by person_id. Copper answers 200 even when individual records...

#### list_projects

Search projects with server-side filters (name, assignee, status, tags and created/modified date ranges) and...

#### get_project

Fetch one project by ID, including its assignee, status, tags and custom fields. Use list_projects to find the ID.

#### create_project

Create a project. Only a name is required. Set an owner with assignee_id from list_users, and use...

#### update_project

Update a project by ID; reassign it, rename it, or close it by setting status to Completed. Only the fields you...

#### delete_project

Permanently delete a project by ID. This cannot be undone; to close a project instead, use update_project with...

#### list_related_items

List the records linked to one record; for example every opportunity and project attached to a person. Narrow with...

#### relate_record

Link two existing records, e.g. attach an opportunity to a person. Both must already exist; this creates the link...

#### unrelate_record

Remove the link between two records. The records themselves are not deleted, only the relationship...

#### list_tasks

Search tasks with server-side filters (assignee, status, priority, the project or opportunity a task hangs off...

#### get_task

Fetch one task by ID, including its assignee, status, due date and the record it is attached to. Use list_tasks to...

#### create_task

Create a task. Only a name is required. Attach it to a record with related_resource, and set an owner with...

#### update_task

Update a task by ID; reassign it, change its due date, or close it by setting status to Completed. Only the fields...

#### delete_task

Permanently delete a task by ID. This cannot be undone; to close a task instead, use update_task with status...

#### list_webhooks

List the webhook subscriptions registered on the account, each with the entity type and event it watches and the URL...

#### get_webhook

Fetch one webhook subscription by ID, including its target URL, watched entity type and event. Use list_webhooks to...

#### create_webhook

Register a webhook subscription so Copper posts to your URL when a record changes. The target must already be a live...

#### update_webhook

Update a webhook subscription by ID: its target URL, secret, or custom_field_computed_values. Copper cannot change...

#### delete_webhook

Delete a webhook subscription by ID. Copper stops posting notifications immediately. Use list_webhooks to find the ID.