# io.usefulapi/copper (remote · copper.usefulapi.io)

Read and write Copper CRM people, companies, opportunities and activities.

- Trust score: 18/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `copper.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-copper/copper.md), [page](https://verifymcp.io/servers/io-usefulapi-copper/copper)

## Channel facts

- Endpoint: `https://copper.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 429, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint returned HTTP 429.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the io.usefulapi/copper MCP server?

io.usefulapi/copper is a hosted endpoint at https://copper.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-copper 'https://copper.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-copper": {
      "url": "https://copper.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-copper": {
      "type": "http",
      "url": "https://copper.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-copper]
url = "https://copper.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-copper": {
      "type": "remote",
      "url": "https://copper.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-copper --url 'https://copper.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-copper:
    url: "https://copper.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-copper": {
      "Transport": "http",
      "Url": "https://copper.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-copper -t streamable-http -u 'https://copper.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-copper": {
      "type": "http",
      "url": "https://copper.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-04 (score 18, −58)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] HTTPS: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-03 (score 76, +43)

- [security improvement] Authorization: unverified → pass
- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] First check of Authorization: partial
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100

### 2026-10-02 (score 33, +15)

- [security improvement] HTTPS: unverified → pass
- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.

### 2026-09-29 (score 18)

First indexed and scored.

## MCP tools (22)

### `copper_get_account` (~24 tokens)

Get account

Get details of the authenticated Copper account. Copper REST: GET /account.

### `copper_list_users` (~76 tokens)

List users

List users in the Copper account (id, name, email) — useful for resolving assignee ids. Copper REST: POST /users/search.

Input parameters:

- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).

### `copper_search_people` (~240 tokens)

Search people

Search/list people (contacts). All filters optional; returns a page of people. Copper REST: POST /people/search.

Input parameters:

- `assignee_ids` (array): Filter to people owned by these user ids.
- `city` (string): City filter.
- `company_ids` (array): Filter to people at these company ids.
- `country` (string): Country filter.
- `emails` (array): Filter to people with any of these email addresses.
- `name` (string): Full-name filter (substring match).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `phone_number` (string): Phone-number filter.
- `sort_by` (string): Field to sort by, e.g. 'name', 'date_created', 'date_modified' (default 'first_name').
- `sort_direction` (string): Sort direction — 'asc' or 'desc' (default asc).
- `state` (string): State/region filter.
- `tags` (array): Filter to people carrying any of these tags.

### `copper_get_person` (~38 tokens)

Get person

Get a single person (contact) by id. Copper REST: GET /people/{id}.

Input parameters:

- `id` (integer, required): The person id.

### `copper_search_companies` (~192 tokens)

Search companies

Search/list companies. All filters optional; returns a page of companies. Copper REST: POST /companies/search.

Input parameters:

- `assignee_ids` (array): Filter to companies owned by these user ids.
- `city` (string): City filter.
- `country` (string): Country filter.
- `name` (string): Company-name filter (substring match).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `sort_by` (string): Field to sort by, e.g. 'name', 'date_created' (default 'name').
- `sort_direction` (string): Sort direction — 'asc' or 'desc' (default asc).
- `state` (string): State/region filter.
- `tags` (array): Filter to companies carrying any of these tags.

### `copper_get_company` (~35 tokens)

Get company

Get a single company by id. Copper REST: GET /companies/{id}.

Input parameters:

- `id` (integer, required): The company id.

### `copper_search_opportunities` (~251 tokens)

Search opportunities

Search/list opportunities (deals). All filters optional; returns a page of opportunities. Copper REST: POST /opportunities/search.

Input parameters:

- `assignee_ids` (array): Filter to opportunities owned by these user ids.
- `company_ids` (array): Filter to opportunities at these company ids.
- `name` (string): Opportunity-name filter (substring match).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `pipeline_ids` (array): Filter to opportunities in these pipelines.
- `pipeline_stage_ids` (array): Filter to opportunities at these pipeline stages.
- `sort_by` (string): Field to sort by, e.g. 'name', 'date_created', 'monetary_value' (default 'name').
- `sort_direction` (string): Sort direction — 'asc' or 'desc' (default asc).
- `status_ids` (array): Filter by status id: 0=Open, 1=Won, 2=Lost, 3=Abandoned.
- `tags` (array): Filter to opportunities carrying any of these tags.

### `copper_get_opportunity` (~40 tokens)

Get opportunity

Get a single opportunity (deal) by id. Copper REST: GET /opportunities/{id}.

Input parameters:

- `id` (integer, required): The opportunity id.

### `copper_search_leads` (~223 tokens)

Search leads

Search/list leads. All filters optional; returns a page of leads. Copper REST: POST /leads/search.

Input parameters:

- `assignee_ids` (array): Filter to leads owned by these user ids.
- `city` (string): City filter.
- `country` (string): Country filter.
- `customer_source_ids` (array): Filter by customer-source ids.
- `emails` (array): Filter to leads with any of these email addresses.
- `name` (string): Lead-name filter (substring match).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `sort_by` (string): Field to sort by, e.g. 'name', 'date_created' (default 'name').
- `sort_direction` (string): Sort direction — 'asc' or 'desc' (default asc).
- `state` (string): State/region filter.
- `tags` (array): Filter to leads carrying any of these tags.

### `copper_get_lead` (~37 tokens)

Get lead

Get a single lead by id. Copper REST: GET /leads/{id}.

Input parameters:

- `id` (integer, required): The lead id.

### `copper_search_tasks` (~162 tokens)

Search tasks

Search/list tasks. All filters optional; returns a page of tasks. Copper REST: POST /tasks/search.

Input parameters:

- `assignee_ids` (array): Filter to tasks owned by these user ids.
- `name` (string): Task-name filter (substring match).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `sort_by` (string): Field to sort by, e.g. 'name', 'due_date', 'date_created' (default 'name').
- `sort_direction` (string): Sort direction — 'asc' or 'desc' (default asc).
- `status` (string): Filter by task status.

### `copper_get_task` (~35 tokens)

Get task

Get a single task by id. Copper REST: GET /tasks/{id}.

Input parameters:

- `id` (integer, required): The task id.

### `copper_list_activities` (~157 tokens)

List activities

List activities (notes, calls, meetings, system events) attached to a record. Copper REST: POST /activities/search.

Input parameters:

- `maximum_activity_date` (integer): Latest activity date, as a Unix timestamp (seconds).
- `minimum_activity_date` (integer): Earliest activity date, as a Unix timestamp (seconds).
- `page_number` (integer): 1-based page number to fetch (default 1).
- `page_size` (integer): Results per page (default 20, max 200).
- `parent_id` (integer): The id of the parent record to list activities for (requires parent_type).
- `parent_type` (string): Restrict to activities on a single record of this type (requires parent_id).

### `copper_list_activity_types` (~35 tokens)

List activity types

List the account's activity types (user + system), needed to log an activity. Copper REST: GET /activity_types.

### `copper_list_pipelines` (~31 tokens)

List pipelines

List sales pipelines and their stages (ids needed to place opportunities). Copper REST: GET /pipelines.

### `copper_create_person` (~140 tokens)

Create person

Create a new person (contact). Copper REST: POST /people.

Input parameters:

- `assignee_id` (integer): User id to own this person.
- `company_id` (integer): Id of the company this person works at.
- `company_name` (string): Company name (if not linking by company_id).
- `details` (string): Freeform description / notes.
- `emails` (array): Email addresses for the person.
- `name` (string, required): The person's full name (required).
- `phone_numbers` (array): Phone numbers for the person.
- `tags` (array): Tags to apply.
- `title` (string): Job title.

### `copper_update_person` (~142 tokens)

Update person

Update fields on an existing person. Only provided fields are changed. Copper REST: PUT /people/{id}.

Input parameters:

- `assignee_id` (integer): User id to own this person.
- `company_id` (integer): Id of the company this person works at.
- `details` (string): Freeform description / notes.
- `emails` (array): Replace the person's email addresses.
- `id` (integer, required): The person id to update.
- `name` (string): The person's full name.
- `phone_numbers` (array): Replace the person's phone numbers.
- `tags` (array): Replace the person's tags.
- `title` (string): Job title.

### `copper_create_company` (~101 tokens)

Create company

Create a new company. Copper REST: POST /companies.

Input parameters:

- `assignee_id` (integer): User id to own this company.
- `details` (string): Freeform description / notes.
- `email_domain` (string): The company's email domain, e.g. example.com.
- `name` (string, required): The company name (required).
- `phone_numbers` (array): Phone numbers for the company.
- `tags` (array): Tags to apply.

### `copper_create_opportunity` (~188 tokens)

Create opportunity

Create a new opportunity (deal). `name` and `primary_contact_id` are required by Copper. Copper REST: POST /opportunities.

Input parameters:

- `assignee_id` (integer): User id to own this opportunity.
- `close_date` (string): Expected close date, formatted MM/DD/YYYY.
- `company_id` (integer): Id of the associated company.
- `details` (string): Freeform description / notes.
- `monetary_value` (number): Deal value (in the account's currency).
- `name` (string, required): The opportunity name (required).
- `pipeline_id` (integer): Id of the pipeline to place the opportunity in.
- `pipeline_stage_id` (integer): Id of the pipeline stage.
- `primary_contact_id` (integer, required): Id of the primary contact (person) for this opportunity (required by Copper).
- `tags` (array): Tags to apply.

### `copper_create_lead` (~148 tokens)

Create lead

Create a new lead. Copper REST: POST /leads.

Input parameters:

- `assignee_id` (integer): User id to own this lead.
- `company_name` (string): Company name the lead is associated with.
- `customer_source_id` (integer): Id of the customer source.
- `details` (string): Freeform description / notes.
- `email` (object): The lead's email.
- `monetary_value` (number): Estimated value of the lead.
- `name` (string, required): The lead's name (required).
- `phone_numbers` (array): Phone numbers for the lead.
- `tags` (array): Tags to apply.
- `title` (string): Job title.

### `copper_create_task` (~156 tokens)

Create task

Create a new task. Copper REST: POST /tasks.

Input parameters:

- `assignee_id` (integer): User id to own this task.
- `details` (string): Freeform description / notes.
- `due_date` (integer): Due date as a Unix timestamp (seconds).
- `name` (string, required): The task name (required).
- `priority` (string): Task priority.
- `related_resource_id` (integer): Id of the record to attach the task to (requires related_resource_type).
- `related_resource_type` (string): Type of record to attach the task to (requires related_resource_id).
- `reminder_date` (integer): Reminder date as a Unix timestamp (seconds).
- `tags` (array): Tags to apply.

### `copper_log_activity` (~138 tokens)

Log activity

Log a user activity (e.g. a note or call) on a record. Get the activity_type_id from copper_list_activity_types. Copper REST: POST /activities.

Input parameters:

- `activity_date` (integer): When the activity occurred, as a Unix timestamp (seconds). Defaults to now.
- `activity_type_id` (integer, required): Id of a 'user' activity type (from copper_list_activity_types).
- `details` (string, required): The activity note / description text.
- `parent_id` (integer, required): The id of the record to attach the activity to.
- `parent_type` (string, required): The kind of record to attach the activity to.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-copper/copper#diagnostics

## Score history

- 2026-10-04: 18
- 2026-10-03: 76
- 2026-10-02: 33
- 2026-10-01: 18
- 2026-09-30: 18
- 2026-09-29: 18

## Common questions

### What is the io.usefulapi/copper MCP server?

io.usefulapi/copper is an MCP server listed in the public MCP registry as io.usefulapi/copper. Read and write Copper CRM people, companies, opportunities and activities. This page covers its hosted endpoint (https://copper.usefulapi.io/mcp).

### Is the io.usefulapi/copper MCP server safe to use?

io.usefulapi/copper scores 18 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.usefulapi/copper MCP server expose?

io.usefulapi/copper exposes 22 tools: copper_get_account, copper_list_users, copper_search_people, copper_get_person, copper_search_companies, and 17 more. Their descriptions and schemas cost roughly 2,589 tokens of context every time the server is loaded.

### Does the io.usefulapi/copper MCP server require authentication?

Its publisher declares no required credentials for io.usefulapi/copper. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the io.usefulapi/copper MCP server still maintained?

io.usefulapi/copper is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://copper.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-copper/copper.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-copper/copper.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-copper/copper
