# Teamleader Focus MCP by usefulapi (remote · teamleader-focus.usefulapi.io)

Read Teamleader Focus contacts, companies, deals, invoices, projects; create deals, tasks.

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

## Components

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

## Channel facts

- Endpoint: `https://teamleader-focus.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.5.3`

## 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-25.

- **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**: 76/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 5239 tokens (~145/item across 36 items; 36 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 82% 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 36 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 37 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 Teamleader Focus MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

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

- [functional] Server version: 1.5.0 → 1.5.3

### 2026-10-24 (score 61, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “teamleader_add_time_tracking”, which the server declares destructive
- [security] New tool “teamleader_complete_task”, which the server declares destructive
- [security] New tool “teamleader_create_event”, which the server declares destructive
- [functional regression] Schema quality: 3446 → 5239
- [functional regression] Schema quality: 3446 → 5223
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0
- [functional] Server version: 1.0.0 → 1.3.0
- [functional] New tool “teamleader_get_product”
- [functional] New tool “teamleader_get_quotation”
- [functional] New tool “teamleader_get_subscription”
- [functional] New tool “teamleader_list_activity_types”
- [functional] New tool “teamleader_list_departments”
- [functional] New tool “teamleader_list_events”
- [functional] New tool “teamleader_list_notes”
- [functional] New tool “teamleader_list_product_categories”
- [functional] New tool “teamleader_list_products”
- [functional] New tool “teamleader_list_quotations”
- [functional] New tool “teamleader_list_subscriptions”

### 2026-10-23 (score 61)

First indexed and scored.

## MCP tools (36)

### `teamleader_get_current_user` (~51 tokens)

Get the current user

Fetch the Teamleader user the sign-in belongs to: name, email, account id, language, time zone and teams. A cheap way to confirm the connection works. Teamleader: users.me.

### `teamleader_list_users` (~106 tokens)

List users

List the users (colleagues) in the Teamleader account. Use it to find a user id to assign deals or tasks to. Teamleader: users.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `status` (array): Filter by status.
- `term` (string): Search first name, last name, email and function.

### `teamleader_list_contacts` (~198 tokens)

List contacts

List or search contacts (people). Filter by search term, primary email, linked company, tags, status or last update. Teamleader: contacts.list.

Input parameters:

- `company_id` (string): Only contacts linked to this company id.
- `email` (string): Exact primary email address.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (string)
- `tags` (array): Only contacts carrying ALL of these tags.
- `term` (string): Search first name, last name, email and telephone.
- `updated_since` (string): Only contacts updated since (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).

### `teamleader_get_contact` (~56 tokens)

Get a contact

Fetch one contact in full: emails, telephones, addresses, linked companies (with position), tags, custom fields and remarks. Teamleader: contacts.info.

Input parameters:

- `contact_id` (string, required): The contact id (a UUID).

### `teamleader_list_companies` (~207 tokens)

List companies

List or search companies (organisations). Filter by search term, primary email, VAT number, tags, status or last update. Teamleader: companies.list.

Input parameters:

- `email` (string): Exact primary email address.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (string)
- `tags` (array): Only companies carrying these tag names.
- `term` (string): Search name, VAT number, emails and telephones.
- `updated_since` (string): Only companies updated since (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `vat_number` (string): Exact VAT number, e.g. BE 0899.623.035.

### `teamleader_get_company` (~56 tokens)

Get a company

Fetch one company in full: addresses, VAT number, responsible user, related contacts and companies, tags, custom fields and remarks. Teamleader: companies.info.

Input parameters:

- `company_id` (string, required): The company id (a UUID).

### `teamleader_list_deals` (~266 tokens)

List deals

List or search deals (sales opportunities). Filter by customer, phase, pipeline, status, responsible user, expected closing date or last update. Teamleader: deals.list.

Input parameters:

- `customer_id` (string): Only deals for this contact/company id.
- `customer_type` (string): With customer_id: the customer's type.
- `estimated_closing_date_from` (string): Expected closing date from (YYYY-MM-DD).
- `estimated_closing_date_until` (string): Expected closing date until (YYYY-MM-DD).
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `phase_id` (string): Only deals in this phase.
- `pipeline_ids` (array): Only deals in these pipelines.
- `responsible_user_id` (string): Only deals this user is responsible for.
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (array): Deal statuses.
- `term` (string): Search term.
- `updated_since` (string): Only deals updated since (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).

### `teamleader_get_deal` (~66 tokens)

Get a deal

Fetch one deal in full: lead (customer + contact person), value, probability, current phase, phase history, linked quotations, responsible users, lost reason and custom fields. Teamleader: deals.info.

Input parameters:

- `deal_id` (string, required): The deal id (a UUID).

### `teamleader_list_deal_pipelines` (~100 tokens)

List deal pipelines

List the sales pipelines; the reply's meta names the default pipeline. Use a pipeline id with teamleader_list_deal_phases. Teamleader: dealPipelines.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `status` (array)
- `term` (string): Search pipeline names.

### `teamleader_list_deal_phases` (~98 tokens)

List deal phases

List the phases (stages) of deal pipelines, in flow order, with their probability. Use a phase id when creating a deal. Teamleader: dealPhases.list.

Input parameters:

- `deal_pipeline_id` (string): Only phases of this pipeline.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).

### `teamleader_list_invoices` (~296 tokens)

List invoices

List or search outgoing invoices. Filter by term, invoice number, status (draft / outstanding / matched = paid), customer, deal, project, invoice date range or last update. Returns totals, due date and paid state. Teamleader: invoices.list.

Input parameters:

- `customer_id` (string): Only invoices for this contact/company id.
- `customer_type` (string): With customer_id: the customer's type.
- `deal_id` (string): The deal id (a UUID).
- `invoice_date_after` (string): Invoice date from, inclusive (YYYY-MM-DD).
- `invoice_date_before` (string): Invoice date until, inclusive (YYYY-MM-DD).
- `invoice_number` (string): Full invoice number, e.g. "2026 / 5".
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `project_id` (string): The project id (a UUID).
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (array)
- `term` (string): Search invoice number, PO number, payment reference and invoicee.
- `updated_since` (string): Only invoices updated since (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).

### `teamleader_get_invoice` (~63 tokens)

Get an invoice

Fetch one invoice in full: invoicee, grouped line items, discounts, totals and taxes, payment term, payments received, payment reference and Peppol status. Teamleader: invoices.info.

Input parameters:

- `invoice_id` (string, required): The invoice id (a UUID).

### `teamleader_list_projects` (~158 tokens)

List projects

List projects (the projects module). Filter by term, status, customer or deal. Returns budget, time tracked, billed/unbilled amounts, dates and owners. Teamleader: projects-v2/projects.list.

Input parameters:

- `customer_id` (string): Only projects for this contact/company id.
- `customer_type` (string): With customer_id: the customer's type.
- `deal_ids` (array): Only projects linked to these deals.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `status` (string)
- `term` (string): Search project number, title, customer, assignee and owner names.

### `teamleader_list_tasks` (~199 tokens)

List tasks

List tasks (to-dos). Filter by assigned user, completed, scheduled, due date range, search term or customer. Teamleader: tasks.list.

Input parameters:

- `completed` (boolean)
- `customer_id` (string): Only tasks for this contact/company id.
- `customer_type` (string): With customer_id: the customer's type.
- `due_by` (string): Due on or before (YYYY-MM-DD).
- `due_from` (string): Due on or after (YYYY-MM-DD).
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `scheduled` (boolean)
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `term` (string): Search the task description.
- `user_id` (string): Tasks assigned to this user or one of their teams.

### `teamleader_list_time_tracking` (~230 tokens)

List time tracking

List tracked time entries: who, when, duration (seconds), work type, subject, invoiceable flag and hourly rate. Filter by user, start range or subject. Teamleader: timeTracking.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `sort_order` (string): Sort by start time (starts_on).
- `started_after` (string): Entries that started on/after (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `started_before` (string): Entries that started on/before (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `subject_id` (string): Only entries tracked on this subject.
- `subject_type` (string): With subject_id: the subject's type.
- `user_id` (string): The user id (a UUID).

### `teamleader_list_tickets` (~136 tokens)

List tickets

List support tickets: subject, status, assignee, customer, project and last message time. Filter by customer, project or assignee. Teamleader: tickets.list.

Input parameters:

- `assignee_ids` (array): Only tickets assigned to one of these users.
- `customer_id` (string): Only tickets relating to this contact/company id.
- `customer_type` (string): With customer_id: the customer's type.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `project_ids` (array)

### `teamleader_list_work_types` (~89 tokens)

List work types

List work types (e.g. Design, Development), alphabetically. A work type id is REQUIRED to create a task. Teamleader: workTypes.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `term` (string): Search work type names.

### `teamleader_list_departments` (~80 tokens)

List departments

List the account's departments (company entities that issue invoices and quotations). A department id is needed to filter subscriptions and product categories or to create a deal for a specific entity. Teamleader: departments.list.

Input parameters:

- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (array): Filter by status.

### `teamleader_list_products` (~118 tokens)

List products

List or search products (the price list) by name or code. Teamleader: products.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `term` (string): Search the product name or code.
- `updated_since` (string): Only products updated since (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).

### `teamleader_get_product` (~54 tokens)

Get a product

Fetch one product in full: code, description, purchase and selling prices, tax rate, unit, stock and category. Teamleader: products.info.

Input parameters:

- `product_id` (string, required): The product id (a UUID).

### `teamleader_list_product_categories` (~48 tokens)

List product categories

List the product categories (each one is a ledger account), optionally for one department. Teamleader: productCategories.list.

Input parameters:

- `department_id` (string): Only categories of this department.

### `teamleader_list_quotations` (~101 tokens)

List quotations

List quotations (offers) with their status, totals and deal. Teamleader filters quotations only by id: to find a deal's quotations, take the ids from teamleader_get_deal. Teamleader: quotations.list.

Input parameters:

- `ids` (array): Only these quotations.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).

### `teamleader_get_quotation` (~53 tokens)

Get a quotation

Fetch one quotation in full: deal, grouped line items, discounts, totals, taxes, status and expiry. Teamleader: quotations.info.

Input parameters:

- `quotation_id` (string, required): The quotation id (a UUID).

### `teamleader_list_activity_types` (~84 tokens)

List activity types

List the activity types of calendar events (Teamleader has three: tasks, meetings and calls). An activity type id is REQUIRED to create a calendar event. Teamleader: activityTypes.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).

### `teamleader_list_events` (~306 tokens)

List calendar events

List calendar events (meetings, calls) in a time window. Filter by user, activity type, search term, an attending contact, a linked contact / company / deal, a task or done state. Teamleader: events.list.

Input parameters:

- `activity_type_id` (string): The activity type id (a UUID).
- `attendee_contact_id` (string): Only events this contact attends.
- `done` (boolean)
- `ends_after` (string): Start of the period: events ending after (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `link_id` (string): Only events linked to this contact, company or deal.
- `link_type` (string): With link_id: the linked record's type.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `sort_order` (string): Sort by start time (starts_at).
- `starts_before` (string): End of the period: events starting before (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `task_id` (string): Only events planned for this task.
- `term` (string): Search the title and description.
- `user_id` (string): Only this user's events.

### `teamleader_list_subscriptions` (~185 tokens)

List subscriptions

List subscriptions (recurring invoices): title, status, customer, billing cycle and next invoice date. Filter by customer, deal, department, status or the invoice a subscription generated. Teamleader: subscriptions.list.

Input parameters:

- `customer_id` (string): Only this contact's or company's subscriptions.
- `customer_type` (string): With customer_id: the customer's type.
- `deal_id` (string): Only subscriptions created from this deal.
- `department_id` (string): The department id (a UUID).
- `invoice_id` (string): The subscription that generated this invoice.
- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `sort_field` (string)
- `sort_order` (string): Sort order.
- `status` (array)

### `teamleader_get_subscription` (~55 tokens)

Get a subscription

Fetch one subscription in full: invoicee, line items, totals, billing cycle, start and end dates and payment term. Teamleader: subscriptions.info.

Input parameters:

- `subscription_id` (string, required): The subscription id (a UUID).

### `teamleader_list_notes` (~115 tokens)

List notes

List the notes on one contact, company, deal, invoice, quotation, project and more, with their text and date. Teamleader: notes.list.

Input parameters:

- `page` (integer): Page number, starting at 1.
- `page_size` (integer): Page size, 1-100 (Teamleader default 20).
- `subject_id` (string, required): The subject id (a UUID).
- `subject_type` (string, required): What the notes are attached to (nextgenProject = a project in the projects module).

### `teamleader_create_contact` (~117 tokens)

Create a contact

WRITE: create a new contact (person) in Teamleader. Only last_name is required. Returns the new contact's id. Teamleader: contacts.add.

Input parameters:

- `email` (string): Primary email address.
- `first_name` (string)
- `language` (string): Language code, e.g. en, nl, fr.
- `last_name` (string, required)
- `remarks` (string)
- `tags` (array): Tag names.
- `telephones` (array)
- `website` (string)

### `teamleader_create_company` (~145 tokens)

Create a company

WRITE: create a new company in Teamleader. Only name is required. Returns the new company's id. Teamleader: companies.add.

Input parameters:

- `business_type_id` (string): Legal structure id (e.g. NV/BV).
- `email` (string): Primary email address.
- `language` (string): Language code, e.g. en, nl, fr.
- `name` (string, required)
- `remarks` (string)
- `responsible_user_id` (string): The user id (a UUID).
- `tags` (array): Tag names.
- `telephones` (array)
- `vat_number` (string)
- `website` (string)

### `teamleader_create_deal` (~253 tokens)

Create a deal

WRITE: create a new deal for an existing contact or company. Requires the customer and a title; optionally a phase (see teamleader_list_deal_phases), value, probability and expected closing date. Returns the new deal's id. Teamleader: deals.create.

Input parameters:

- `contact_person_id` (string): For a company customer: the contact person.
- `customer_id` (string, required): The customer's contact or company id.
- `customer_type` (string, required): Whether the customer is a contact or a company.
- `department_id` (string): Department (company entity) id.
- `estimated_closing_date` (string): Expected closing date (YYYY-MM-DD).
- `estimated_probability` (number): Win probability, 0 to 1.
- `estimated_value_amount` (number): Expected value; needs estimated_value_currency.
- `estimated_value_currency` (string)
- `phase_id` (string): Starting phase; defaults to the default pipeline's first phase.
- `responsible_user_id` (string): The user id (a UUID).
- `source_id` (string): The deal source id (a UUID).
- `summary` (string): The deal's remarks field.
- `title` (string, required)

### `teamleader_create_task` (~222 tokens)

Create a task

WRITE: create a task (to-do). Requires a title, a due date and a work type id (see teamleader_list_work_types). Optionally assign it to a user or team and link a customer, deal, project or ticket. Returns the new task's id. Teamleader: tasks.create.

Input parameters:

- `assignee_id` (string): The assignee id (a UUID).
- `assignee_type` (string): With assignee_id.
- `customer_id` (string): The customer id (a UUID).
- `customer_type` (string): With customer_id.
- `deal_id` (string): The deal id (a UUID).
- `description` (string)
- `due_on` (string, required): Due date (YYYY-MM-DD).
- `estimated_duration_minutes` (integer)
- `project_id` (string): The project id (a UUID).
- `ticket_id` (string): The ticket id (a UUID).
- `title` (string, required)
- `work_type_id` (string, required): Work type id (required by Teamleader).

### `teamleader_add_note` (~120 tokens)

Add a note

WRITE: add a note to a contact, company, deal, invoice, quotation, project and more, e.g. a call summary. Optionally notify colleagues. Returns the new note's id. Teamleader: notes.create.

Input parameters:

- `content` (string, required): The note text.
- `notify_user_ids` (array): Users to notify about this note.
- `subject_id` (string, required): The subject id (a UUID).
- `subject_type` (string, required): What the note is attached to (nextgenProject = a project in the projects module).

### `teamleader_create_event` (~208 tokens)

Create a calendar event

WRITE: put a meeting or call on the Teamleader calendar. Requires a title, an activity type id (see teamleader_list_activity_types), a start and an end. Attendees are firm users only; link the customer or deal with links. Returns the new event's id. Teamleader: events.create.

Input parameters:

- `activity_type_id` (string, required): The activity type id (a UUID).
- `attendee_user_ids` (array): Firm users who attend.
- `description` (string)
- `ends_at` (string, required): End (ISO 8601 with offset).
- `links` (array): Contacts, companies or deals the event is about.
- `location` (string)
- `starts_at` (string, required): Start (ISO 8601 with offset, e.g. 2026-02-04T16:00:00+01:00).
- `title` (string, required)
- `work_type_id` (string): The work type id (a UUID).

### `teamleader_complete_task` (~50 tokens)

Complete a task

WRITE: mark a task (to-do) as complete. It can be reopened in Teamleader. Teamleader: tasks.complete.

Input parameters:

- `task_id` (string, required): The task id (a UUID).

### `teamleader_add_time_tracking` (~286 tokens)

Add tracked time

WRITE: record time spent, e.g. 90 minutes of development for a company. Give started_at plus duration_minutes or ended_at; optionally a work type, a description, the subject (customer, ticket, task, ...) and whether it is invoiceable. Teamleader splits an entry that passes midnight. Returns the new entry's id. Teamleader: timeTracking.add.

Input parameters:

- `description` (string)
- `duration_minutes` (integer): Time spent, in minutes. Give this or ended_at.
- `ended_at` (string): End; give this or duration_minutes (ISO 8601 with offset, e.g. 2026-01-31T00:00:00+00:00).
- `invoiceable` (boolean)
- `started_at` (string, required): Start (ISO 8601 with offset, e.g. 2026-02-04T09:00:00+01:00).
- `subject_id` (string): The subject id (a UUID).
- `subject_type` (string): With subject_id: what the time was spent on (todo = a task, nextgenTask = a task in the projects module).
- `user_id` (string): Record the time for another user (default: the signed-in user).
- `work_type_id` (string): The work type id (a UUID).

## Diagnostics

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

## Score history

- 2026-10-25: 62
- 2026-10-24: 61
- 2026-10-23: 61

## Common questions

### What is the Teamleader Focus MCP by usefulapi server?

Teamleader Focus MCP by usefulapi is listed in the public MCP registry as io.usefulapi/teamleader-focus. Read Teamleader Focus contacts, companies, deals, invoices, projects; create deals, tasks. This page covers its hosted endpoint (https://teamleader-focus.usefulapi.io/mcp).

### Is the Teamleader Focus MCP by usefulapi server safe to use?

Teamleader Focus MCP by usefulapi scores 62 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 Teamleader Focus MCP by usefulapi server expose?

Teamleader Focus MCP by usefulapi exposes 36 tools: teamleader_get_current_user, teamleader_list_users, teamleader_list_contacts, teamleader_get_contact, teamleader_list_companies, and 31 more. Their descriptions and schemas cost roughly 4,975 tokens of context every time the server is loaded.

### Does the Teamleader Focus MCP by usefulapi server require authentication?

Yes. Teamleader Focus 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 Teamleader Focus MCP by usefulapi server still maintained?

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