# Teamgate MCP by usefulapi (remote · teamgate.usefulapi.io)

Manage Teamgate CRM leads, people, companies, deals, activities and notes.

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

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

## Channel facts

- Endpoint: `https://teamgate.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- 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-17.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 81/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4381 tokens (~128/item across 34 items; 34 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 34 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Teamgate MCP by usefulapi server?

Teamgate MCP by usefulapi is a hosted endpoint at https://teamgate.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-teamgate 'https://teamgate.usefulapi.io/mcp'
```

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-teamgate": {
      "type": "http",
      "url": "https://teamgate.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-17 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-15 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 63, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-13 (score 61, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-12 (score 60)

First indexed and scored.

## MCP tools (34)

### `teamgate_list_users` (~125 tokens)

List users

List the Teamgate users of the account with id, name and username. Use the ids as owner_id filters and values. GET /users.

Input parameters:

- `email` (string): Exact email of the user.
- `is_active` (boolean): Only active (true) or only inactive (false) users.
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the user's first name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_get_user` (~35 tokens)

Get user

One Teamgate user by id. GET /users/{id}.

Input parameters:

- `user_id` (integer, required): Teamgate user id.

### `teamgate_list_leads` (~283 tokens)

List leads

List or search leads (unqualified prospects) with owner, status, source, industry and contact details. Filter by name, email, phone, status, owner, source, star or creation date. GET /leads.

Input parameters:

- `created_after` (string): Only leads created at or after this RFC 3339 date or date-time.
- `created_before` (string): Only leads created at or before this RFC 3339 date or date-time.
- `email` (string): Part of an email address (at least 3 characters).
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the lead's name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `owner_id` (integer): Only leads owned by this user id.
- `phone` (string): The last digits of a phone number (at least 3 characters).
- `source` (string): Exact source name.
- `starred` (boolean): Only starred (true) or not starred (false) leads.
- `status` (string): Exact lead status name, e.g. 'New'. See teamgate_list_lead_statuses.

### `teamgate_get_lead` (~58 tokens)

Get lead

One lead by id with all its details. GET /leads/{id}.

Input parameters:

- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `lead_id` (integer, required): Teamgate lead id.

### `teamgate_list_lead_statuses` (~80 tokens)

List lead statuses

List the lead statuses of the account (use the names as the status filter or value on leads). GET /leadsStatuses.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_people` (~245 tokens)

List people

List or search people (contacts) with job title, company, owner, source and contact details. Filter by name, email, phone, owner, customer status or creation date. GET /people.

Input parameters:

- `created_after` (string): Only people created at or after this RFC 3339 date or date-time.
- `created_before` (string): Only people created at or before this RFC 3339 date or date-time.
- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `email` (string): Part of an email address (at least 3 characters).
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the person's name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `owner_id` (integer): Only people owned by this user id.
- `phone` (string): The last digits of a phone number (at least 3 characters).

### `teamgate_get_person` (~56 tokens)

Get person

One person by id with all their details. GET /people/{id}.

Input parameters:

- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `person_id` (integer, required): Teamgate person id.

### `teamgate_list_companies` (~257 tokens)

List companies

List or search companies with owner, industry, source, customer and prospect status and contact details. Filter by name, email, phone, owner, VAT code or creation date. GET /companies.

Input parameters:

- `created_after` (string): Only companies created at or after this RFC 3339 date or date-time.
- `created_before` (string): Only companies created at or before this RFC 3339 date or date-time.
- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `email` (string): Part of an email address (at least 3 characters).
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the company name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `owner_id` (integer): Only companies owned by this user id.
- `phone` (string): The last digits of a phone number (at least 3 characters).
- `vat_code` (string): Exact VAT identification number.

### `teamgate_get_company` (~56 tokens)

Get company

One company by id with all its details. GET /companies/{id}.

Input parameters:

- `company_id` (integer, required): Teamgate company id.
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).

### `teamgate_list_company_people` (~81 tokens)

List people of a company

List the people who work at one company. GET /companies/{id}/people.

Input parameters:

- `company_id` (integer, required): Teamgate company id.
- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_deals` (~225 tokens)

List deals

List or search deals (sales opportunities) with value, stage, status, owner and expected closing date. Filter by name, status, stage, owner, source or creation date. GET /deals.

Input parameters:

- `created_after` (string): Only deals created at or after this RFC 3339 date or date-time.
- `created_before` (string): Only deals created at or before this RFC 3339 date or date-time.
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).
- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the deal name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `owner_id` (integer): Only deals owned by this user id.
- `source` (string): Exact source name.
- `stage_id` (integer): Only deals in this pipeline stage id (see teamgate_get_pipeline).
- `status` (string): Deal status.

### `teamgate_get_deal` (~66 tokens)

Get deal

One deal by id with value, stage, status, owner, buyer and dates. GET /deals/{id}.

Input parameters:

- `deal_id` (integer, required): Teamgate deal id.
- `include_custom_fields` (boolean): Include custom field values in the reply (default false).

### `teamgate_list_deal_stages` (~62 tokens)

List stages of a deal

List the pipeline stages that one deal can be in (id, name, win probability; the deal's current stage is marked selected). GET /deals/{id}/stages.

Input parameters:

- `deal_id` (integer, required): Teamgate deal id.

### `teamgate_list_contact_deals` (~113 tokens)

List deals of a person or company

List the deals that belong to one person or one company. GET /people/{id}/deals or /companies/{id}/deals.

Input parameters:

- `contact_id` (integer, required): Teamgate person or company id.
- `contact_type` (string, required): Whether contact_id is a person or a company.
- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_pipelines` (~89 tokens)

List pipelines

List the sales pipelines (id and name). Use teamgate_get_pipeline for the stages of one. GET /pipelines.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the pipeline name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_get_pipeline` (~39 tokens)

Get pipeline

One sales pipeline by id, with its stages. GET /pipelines/{id}.

Input parameters:

- `pipeline_id` (integer, required): Teamgate pipeline id.

### `teamgate_list_activities` (~71 tokens)

List activities

List activities (tasks, calls, appointments and notes) across the account. GET /events.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_record_activities` (~125 tokens)

List activities of a record

List the activities (tasks, calls, appointments, notes) linked to one lead, person, company or deal. GET /{leads|people|companies|deals}/{id}/events.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `record_id` (integer, required): Teamgate id of the lead, person, company or deal.
- `record_type` (string, required): The kind of record.

### `teamgate_get_activity` (~42 tokens)

Get activity

One activity (task, call, appointment or note) by id. GET /events/{id}.

Input parameters:

- `activity_id` (integer, required): Teamgate activity id.

### `teamgate_search` (~98 tokens)

Search records

Search leads, people, companies and deals by name in one request. GET /global.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `modules` (array): Which kinds of record to search (default all four).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `query` (string, required): Text to find in record names.

### `teamgate_list_sources` (~70 tokens)

List sources

List the lead/deal sources of the account (where records come from). GET /sources.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_industries` (~65 tokens)

List industries

List the industries of the account. GET /industries.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_products` (~80 tokens)

List products

List the products of the catalogue (id, name, price). GET /products.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `name` (string): Part of the product name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_list_custom_fields` (~74 tokens)

List custom fields

List the custom field definitions of the account (id, name, type, module). GET /customFields.

Input parameters:

- `limit` (integer): Results per page, 1-100 (default 25).
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.

### `teamgate_create_lead` (~216 tokens)

Create lead

WRITE: create a lead. Give a person's name, or a company_name for a company lead. Teamgate may start workflows or notifications for new leads. POST /leads.

Input parameters:

- `company_name` (string): Company name for a company lead (required unless name is given).
- `email` (string): Email address.
- `industry` (string): Industry name (created if it does not exist).
- `job_title` (string): Job title (used only together with company_name).
- `name` (string): Person's full name (required unless company_name is given).
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `phone` (string): Phone number.
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `status` (string): Lead status name, e.g. 'New' (created if it does not exist).
- `tags` (array): Tags to set on the record.

### `teamgate_update_lead` (~145 tokens)

Update lead

WRITE: change fields of one lead. Only the fields you pass are sent; this overwrites their current values. PUT /leads/{id}.

Input parameters:

- `industry` (string): Industry name (created if it does not exist).
- `lead_id` (integer, required): Teamgate lead id.
- `name` (string): New name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `status` (string): New lead status name.
- `tags` (array): Tags to set on the record.

### `teamgate_create_person` (~192 tokens)

Create person

WRITE: create a person (contact). Optionally link them to a company with their job title. POST /people.

Input parameters:

- `company_id` (integer): Id of the company the person works at.
- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `email` (string): Email address.
- `industry` (string): Industry name (created if it does not exist).
- `job_title` (string): Job title (used only together with company_id).
- `name` (string, required): Person's full name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `phone` (string): Phone number.
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `tags` (array): Tags to set on the record.

### `teamgate_update_person` (~156 tokens)

Update person

WRITE: change fields of one person. Only the fields you pass are sent; this overwrites their current values. PUT /people/{id}.

Input parameters:

- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `industry` (string): Industry name (created if it does not exist).
- `name` (string): New name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `person_id` (integer, required): Teamgate person id.
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `tags` (array): Tags to set on the record.

### `teamgate_create_company` (~154 tokens)

Create company

WRITE: create a company. POST /companies.

Input parameters:

- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `email` (string): Email address.
- `industry` (string): Industry name (created if it does not exist).
- `name` (string, required): Company name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `phone` (string): Phone number.
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `tags` (array): Tags to set on the record.
- `vat_code` (string): VAT identification number.

### `teamgate_update_company` (~167 tokens)

Update company

WRITE: change fields of one company. Only the fields you pass are sent; this overwrites their current values. PUT /companies/{id}.

Input parameters:

- `company_id` (integer, required): Teamgate company id.
- `customer_status` (integer): 0 = non customer, 1 = past customer, 2 = customer.
- `industry` (string): Industry name (created if it does not exist).
- `name` (string): New name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `source` (string): Source name (created if it does not exist).
- `starred` (boolean): Star the record.
- `tags` (array): Tags to set on the record.
- `vat_code` (string): VAT identification number.

### `teamgate_create_deal` (~190 tokens)

Create deal

WRITE: create a deal for a buyer (a person or company). POST /deals.

Input parameters:

- `buyer_id` (integer, required): Id of the person or company that buys, as returned by the list tools.
- `estimated_closure_date` (string): Expected closing date-time (RFC 3339 with timezone).
- `name` (string, required): Deal name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `price_currency` (string): Currency code, e.g. EUR.
- `price_value` (number): Deal value.
- `source` (string): Source name (created if it does not exist).
- `stage_id` (integer): Pipeline stage id (see teamgate_get_pipeline).
- `starred` (boolean): Star the record.
- `status` (string): Deal status.
- `tags` (array): Tags to set on the record.

### `teamgate_update_deal` (~220 tokens)

Update deal

WRITE: change fields of one deal, for example move it to another stage or mark it won or lost. Only the fields you pass are sent; this overwrites their current values. PUT /deals/{id}.

Input parameters:

- `buyer_id` (integer): New buyer (person or company id).
- `deal_id` (integer, required): Teamgate deal id.
- `estimated_closure_date` (string): Expected closing date-time (RFC 3339 with timezone).
- `name` (string): New deal name.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `price_currency` (string): Currency code, e.g. EUR.
- `price_value` (number): Deal value.
- `source` (string): Source name (created if it does not exist).
- `stage_id` (integer): Pipeline stage id (see teamgate_get_pipeline).
- `starred` (boolean): Star the record.
- `status` (string): Deal status.
- `tags` (array): Tags to set on the record.

### `teamgate_create_activity` (~153 tokens)

Create activity

WRITE: create a task, call or appointment, optionally linked to leads, companies or deals. Teamgate may send reminders to the owner. POST /events.

Input parameters:

- `company_ids` (array): Companies to link.
- `deal_ids` (array): Deals to link.
- `description` (string): Details.
- `end` (string): End (RFC 3339 date-time with timezone).
- `lead_ids` (array): Leads to link.
- `name` (string, required): Activity title.
- `owner_id` (integer): Owner user id (see teamgate_list_users).
- `start` (string): Start (RFC 3339 date-time with timezone).
- `type` (string, required): Kind of activity.

### `teamgate_add_note` (~83 tokens)

Add note

WRITE: add a note to one or more leads, companies or deals. The note cannot be edited or removed with these tools. POST /events.

Input parameters:

- `company_ids` (array): Companies to link.
- `deal_ids` (array): Deals to link.
- `lead_ids` (array): Leads to link.
- `text` (string, required): The note text.

## Diagnostics

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

## Score history

- 2026-10-17: 65
- 2026-10-16: 64
- 2026-10-15: 64
- 2026-10-14: 63
- 2026-10-13: 61
- 2026-10-12: 60

## Common questions

### What is the Teamgate MCP by usefulapi server?

Teamgate MCP by usefulapi is listed in the public MCP registry as io.usefulapi/teamgate. Manage Teamgate CRM leads, people, companies, deals, activities and notes. This page covers its hosted endpoint (https://teamgate.usefulapi.io/mcp).

### Is the Teamgate MCP by usefulapi server safe to use?

Teamgate MCP by usefulapi scores 65 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 Teamgate MCP by usefulapi server expose?

Teamgate MCP by usefulapi exposes 34 tools: teamgate_list_users, teamgate_get_user, teamgate_list_leads, teamgate_get_lead, teamgate_list_lead_statuses, and 29 more. Their descriptions and schemas cost roughly 4,171 tokens of context every time the server is loaded.

### Does the Teamgate MCP by usefulapi server require authentication?

Yes. Teamgate MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Teamgate MCP by usefulapi server still maintained?

Teamgate MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 17 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://teamgate.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/teamgate/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-teamgate/teamgate.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-teamgate/teamgate.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-teamgate/teamgate
