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

Search Kayako cases, replies, customers and help-center articles, and reply to or create cases.

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

## Components

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

## Channel facts

- Endpoint: `https://kayako.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**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **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/kayako MCP server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-kayako": {
      "type": "http",
      "url": "https://kayako.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 33, −43)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.10 → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Tool safety: pass → unverified
- [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
- [functional regression] MCP protocol: unverified → fail
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.10
- [functional] Server version: 1.3.0 → 1.5.1

### 2026-10-02 (score 33, −42)

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

### 2026-10-01 (score 75, +18)

- [security improvement] Authorization: unverified → pass
- [security improvement] HTTPS: unverified → pass
- [security] First check of Authorization: partial
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.3.0

### 2026-09-30 (score 57, +39)

- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [security] First check of Judged manipulation: pass
- [security] Authorization: Authorisation not fully verified: this server exposes a tool marked destructive (kayako_create_case) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
- [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: 80

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

First indexed and scored.

## MCP tools (21)

### `kayako_get_me` (~51 tokens)

Get the current user

Fetch the Kayako user these credentials belong to (name, role, teams, locale). A cheap way to confirm the subdomain and credentials work. Kayako: GET /api/v1/me.json.

### `kayako_list_cases` (~307 tokens)

List cases

List cases (conversations / tickets), newest-updated first. Filter by status type, tags, max priority level, or a requester identity (email, Twitter screen name, Facebook username, phone); or fetch specific ids. Nested resources are references unless `include` expands them. Kayako: GET /api/v1/cases.json.

Input parameters:

- `fields` (string): Partial-output field rules, e.g. '+tags' to add tags to a case, or 'subject,status' to return only those.
- `identity_type` (string): Filter by the requester's identity type; requires identity_value.
- `identity_value` (string): Email, Facebook username, Twitter screen name or phone number, matching identity_type.
- `ids` (array): Fetch these case ids instead of filtering.
- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.
- `priority` (integer): Include cases whose priority level is less than or equal to this level.
- `status` (array): Status types to include, e.g. ['OPEN','PENDING'].
- `tags` (string): Comma-separated tags to filter by.

### `kayako_get_case` (~175 tokens)

Get a case

Fetch one case (conversation) by id: subject, requester, assignee, status, priority, type, SLA metrics, custom fields, last post preview. Use include (e.g. 'user,case_status,case_priority,team') to expand references and fields='+tags' for tags. Kayako: GET /api/v1/cases/{id}.json.

Input parameters:

- `case_id` (integer, required): The case id (integer).
- `fields` (string): Partial-output field rules, e.g. '+tags' to add tags to a case, or 'subject,status' to return only those.
- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.

### `kayako_list_case_posts` (~216 tokens)

List a case's posts

Read a case's timeline: customer messages, agent replies and internal notes (newest first). By default activities are excluded; filters='NOTES' for internal notes only, 'MESSAGES' for messages, 'ALL' to include activities. Paginate with before_id / after_id (one at a time). Kayako: GET /api/v1/cases/{id}/posts.json.

Input parameters:

- `after_id` (integer): Cursor: return the page after this post id.
- `before_id` (integer): Cursor: return the page before this post id.
- `case_id` (integer, required): The case id (integer).
- `filters` (string): Which kinds of post to return.
- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.

### `kayako_list_channels` (~139 tokens)

List reply channels

List the channels (MAIL mailbox, TWITTER, FACEBOOK, NOTE) usable for a reply on an existing case (pass case_id) or for a new case (omit case_id; optionally pass the requester's user_id). A channel's account.id is the channel_id to pass to kayako_reply_to_case / kayako_create_case. Kayako: GET /api/v1/cases/{id}/reply/channels.json or GET /api/v1/cases/channels.json.

Input parameters:

- `case_id` (integer): Existing case to reply on.
- `user_id` (integer): Requester of a NEW case (ignored with case_id).

### `kayako_list_case_options` (~95 tokens)

List case statuses, priorities or types

List the instance's case statuses (id, label, type), priorities (id, label, level) or types (id, label, type) — the ids needed for status_id / priority_id / type_id when creating, updating or replying to a case. Kayako: GET /api/v1/cases/{statuses|priorities|types}.json.

Input parameters:

- `kind` (string, required): Which list to return.

### `kayako_search` (~125 tokens)

Search cases, users and organizations

Unified search across conversations (cases), users and organizations. Returns id, title, snippet, relevance and resource type; pass fields='*' to get each full resource inline. Max 30 results. Kayako: GET /api/v1/search.json.

Input parameters:

- `fields` (string): Resource fields to return, e.g. '*' for full resources.
- `limit` (integer): Max results, 1-30 (default 30).
- `query` (string, required): Search text (Kayako Unified Search Language).
- `resources` (array): Restrict to these resource kinds.

### `kayako_list_users` (~164 tokens)

List users

List users (customers, collaborators, agents, admins), newest first, optionally by role type or specific ids. To find a user by email or name use kayako_search. Kayako: GET /api/v1/users.json.

Input parameters:

- `ids` (array): Fetch these user ids.
- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.
- `role` (string): Only users of this role type.

### `kayako_get_user` (~115 tokens)

Get a user

Fetch one user by id: name, role, organization, teams, identities (emails, phones, social), custom fields. include='identity_email,organization' expands references. Kayako: GET /api/v1/users/{id}.json.

Input parameters:

- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `user_id` (integer, required): The user id (integer).

### `kayako_list_organizations` (~140 tokens)

List organizations

List customer organizations (name, domains, phone, custom fields), oldest first. To find one by name use kayako_search with resources=['ORGANIZATIONS']. Kayako: GET /api/v1/organizations.json.

Input parameters:

- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.

### `kayako_list_organization_cases` (~144 tokens)

List an organization's cases

List the cases (conversations) raised by members of one organization, newest-updated first. Kayako: GET /api/v1/organizations/{id}/cases.json.

Input parameters:

- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.
- `organization_id` (integer, required): The organization id (integer).

### `kayako_list_teams` (~83 tokens)

List teams

List agent teams (id, title, member count) — the ids for assigned_team_id. Kayako: GET /api/v1/teams.json.

Input parameters:

- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.

### `kayako_list_roles` (~98 tokens)

List roles

List user roles (id, title, type OWNER/ADMIN/AGENT/COLLABORATOR/CUSTOMER) — the role_id needed by kayako_create_user. Kayako: GET /api/v1/roles.json.

Input parameters:

- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.

### `kayako_list_articles` (~173 tokens)

List help-center articles

List knowledge-base articles, optionally by section, tags, or PUBLISHED / PINNED. Titles and contents are locale references unless include='locale_field'. Kayako: GET /api/v1/articles.json.

Input parameters:

- `filter` (string): Only pinned or only published articles.
- `include` (string): Comma-separated resource types to expand instead of returning {id, resource_type} references, e.g. 'user,case_status,case_priority,team', or '*' for all.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `offset` (integer): Offset into the collection (0-based). Default 0.
- `section_id` (integer): Only articles in this section.
- `tags` (string): Comma-separated tags.

### `kayako_get_article` (~93 tokens)

Get a help-center article

Fetch one knowledge-base article with its localized titles and contents expanded (include defaults to 'locale_field'), status, section, tags, votes and help-center URL. Kayako: GET /api/v1/articles/{id}.json.

Input parameters:

- `article_id` (integer, required): The article id (integer).
- `include` (string): Resource types to expand. Defaults to 'locale_field' so titles/contents are readable.

### `kayako_search_help_center` (~143 tokens)

Search the help center

Search the help center's articles and/or public conversations. Returns references (e.g. {id, resource_type: 'article'}); read an article with kayako_get_article. Kayako: GET /api/v1/helpcenter/search.json.

Input parameters:

- `in` (string): What to search. Default ALL.
- `limit` (integer): Items per page, 1-100. Kayako's default is 10.
- `locale` (string): Locale, e.g. en-us.
- `offset` (integer): Offset into the collection (0-based). Default 0.
- `query` (string, required): Search text, at least 3 characters.

### `kayako_create_case` (~309 tokens)

Create a case

WRITE: open a new case (conversation) for a requester. channel MAIL sends the first message to the customer by email from the mailbox given as channel_id; channel NOTE creates it with an internal note and emails nobody. Get channel ids from kayako_list_channels and status/priority/type ids from kayako_list_case_options. Kayako: POST /api/v1/cases.json.

Input parameters:

- `assigned_agent_id` (integer)
- `assigned_team_id` (integer)
- `cc` (array): MAIL only: CC addresses.
- `channel` (string, required): MAIL, TWITTER, FACEBOOK or NOTE (internal, not sent).
- `channel_id` (integer): Channel account id (e.g. the mailbox id). Required unless channel is NOTE.
- `contents` (string, required): Body of the first post.
- `field_values` (object): Custom field values keyed by field key, e.g. {"order_number": "1234"}. For multi-select fields pass CSV options — ALL options must be passed; omitted ones are removed.
- `form_id` (integer)
- `html` (boolean): MAIL/NOTE: treat contents as HTML (sanitized by Kayako).
- `priority_id` (integer)
- `requester_id` (integer, required): The requester (customer user) id (integer).
- `status_id` (integer)
- `subject` (string, required): Case subject.
- `tags` (string): Comma-separated tags.
- `type_id` (integer)

### `kayako_update_case` (~236 tokens)

Update a case

WRITE: change a case's subject, requester, assignee (team/agent), status, priority, type, brand, form, tags or custom fields. Sends nothing to the customer. `tags` sets the case's tag list (use kayako_add_case_tags to append). Trashing is deliberately not exposed. Kayako: PUT /api/v1/cases/{id}.json.

Input parameters:

- `assigned_agent_id` (integer)
- `assigned_team_id` (integer)
- `brand_id` (integer)
- `case_id` (integer, required): The case id (integer).
- `field_values` (object): Custom field values keyed by field key, e.g. {"order_number": "1234"}. For multi-select fields pass CSV options — ALL options must be passed; omitted ones are removed.
- `form_id` (integer)
- `priority_id` (integer)
- `requester_id` (integer)
- `status_id` (integer)
- `subject` (string)
- `tags` (string): Comma-separated tags (sets the list).
- `type_id` (integer)

### `kayako_reply_to_case` (~249 tokens)

Reply to a case or add an internal note

WRITE: add a post to a case. channel NOTE adds an INTERNAL note visible only to agents (no channel_id needed). channel MAIL/TWITTER/FACEBOOK sends a PUBLIC reply to the customer — get channel_id from kayako_list_channels with case_id. Can also set status/priority/assignee in the same call. Kayako: POST /api/v1/cases/{id}/reply.json.

Input parameters:

- `assigned_agent_id` (integer)
- `assigned_team_id` (integer)
- `case_id` (integer, required): The case id (integer).
- `cc` (array): MAIL only: CC addresses.
- `channel` (string, required): NOTE for an internal note; MAIL/TWITTER/FACEBOOK for a public reply.
- `channel_id` (integer): Channel account id. Required unless channel is NOTE.
- `contents` (string, required): Reply or note text.
- `html` (boolean): NOTE only: treat contents as HTML (sanitized by Kayako).
- `priority_id` (integer)
- `status_id` (integer): Also set the case status.
- `tags` (string): Comma-separated tags.
- `type_id` (integer)

### `kayako_add_case_tags` (~66 tokens)

Add tags to a case

WRITE: add tags to a case, keeping its existing tags. Kayako: POST /api/v1/cases/{id}/tags.json.

Input parameters:

- `case_id` (integer, required): The case id (integer).
- `tags` (string, required): Comma-separated tags to add.

### `kayako_create_user` (~211 tokens)

Create a user

WRITE: create a user — typically a CUSTOMER to use as requester_id on a new case. role_id comes from kayako_list_roles. Collaborator/agent/admin roles also require email and team_ids. No password is set by this tool. Kayako: POST /api/v1/users.json.

Input parameters:

- `designation` (string): Job title.
- `email` (string): Primary email. Required for collaborator/agent/admin roles.
- `field_values` (object): Custom field values keyed by field key, e.g. {"order_number": "1234"}. For multi-select fields pass CSV options — ALL options must be passed; omitted ones are removed.
- `full_name` (string, required)
- `organization_case_access` (string): CUSTOMER only: see only own cases (default) or the whole organization's.
- `role_id` (integer, required): The role id (integer).
- `team_ids` (array): Team ids (required for collaborator/agent/admin).
- `time_zone` (string)

## Diagnostics

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

## Score history

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

## Common questions

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

io.usefulapi/kayako is an MCP server listed in the public MCP registry as io.usefulapi/kayako. Search Kayako cases, replies, customers and help-center articles, and reply to or create cases. This page covers its hosted endpoint (https://kayako.usefulapi.io/mcp).

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

io.usefulapi/kayako scores 33 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/kayako MCP server expose?

io.usefulapi/kayako exposes 21 tools: kayako_get_me, kayako_list_cases, kayako_get_case, kayako_list_case_posts, kayako_list_channels, and 16 more. Their descriptions and schemas cost roughly 3,332 tokens of context every time the server is loaded.

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

No. We connected to io.usefulapi/kayako without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

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

io.usefulapi/kayako 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://kayako.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-kayako/kayako.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-kayako/kayako.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-kayako/kayako
