# Gorelo MCP by usefulapi (remote · gorelo.usefulapi.io)

Read tickets, devices, alerts and invoices; create tickets, add comments, log time in Gorelo.

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

## Components

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

## Channel facts

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

## 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-11-05.

- **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 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.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **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 Gorelo MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-gorelo": {
      "type": "http",
      "url": "https://gorelo.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-11-02 (score 18, −46)

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

### 2026-11-01 (score 64, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-31 (score 64)

First indexed and scored.

## MCP tools (31)

### `gorelo_list_clients` (~180 tokens)

List clients

List the MSP's clients (customers). Good first call to find a client id. API: GET /v1/clients.

Input parameters:

- `created_since` (string): ISO-8601 timestamp, keep clients created at or after it.
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `group_ids` (string): Comma-separated client group ids, for example "12,15".
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword to match against the client name.
- `status_ids` (string): Comma-separated client status ids, for example "12,15".
- `updated_since` (string): ISO-8601 timestamp, keep clients updated at or after it.

### `gorelo_get_client` (~49 tokens)

Get a client

Get one client by id with its details. API: GET /v1/clients/{clientId}.

Input parameters:

- `client_id` (string, required): Client id (integer, from gorelo_list_clients).

### `gorelo_list_client_locations` (~47 tokens)

List client locations

List the locations (sites) of one client. API: GET /v1/clients/{clientId}/locations.

Input parameters:

- `client_id` (string, required): Client id (integer).

### `gorelo_list_contacts` (~183 tokens)

List contacts

List client contacts (end users). API: GET /v1/contacts.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `location_ids` (string): Comma-separated location ids, for example "12,15".
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against email, first name and last name.
- `status_ids` (string): Comma-separated contact status (1 Active, 3 Temporary, 4 Archived) ids, for example "12,15".
- `updated_since` (string): ISO-8601 timestamp, keep contacts updated at or after it.

### `gorelo_get_contact` (~46 tokens)

Get a contact

Get one contact by id. API: GET /v1/contacts/{contactId}.

Input parameters:

- `contact_id` (string, required): Contact id (integer, from gorelo_list_contacts).

### `gorelo_list_tickets` (~415 tokens)

List tickets

List service tickets, newest activity first, with status, priority, client, assignees and SLA. Use the list_ticket_statuses/types/priorities tools to learn the ids for filters. API: GET /v1/tickets.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `closed_since` (string): ISO-8601 timestamp, keep tickets closed at or after it.
- `contact_ids` (string): Comma-separated contact ids, for example "12,15".
- `created_before` (string): ISO-8601 timestamp, keep tickets created before it.
- `created_since` (string): ISO-8601 timestamp, keep tickets created at or after it.
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `device_ids` (string): Comma-separated agent asset (guid) ids, for example "12,15".
- `group_ids` (string): Comma-separated technician group ids, for example "12,15".
- `lead_assignee_ids` (string): Comma-separated technician (lead assignee) ids, for example "12,15".
- `page_size` (integer): Items per page, 1-200 (default 50).
- `priority_ids` (string): Comma-separated priority ids, for example "12,15".
- `query` (string): Keyword matched against the ticket title, number and display number.
- `sort_by` (string)
- `sort_order` (string)
- `status_ids` (string): Comma-separated ticket status ids, for example "12,15".
- `tag_ids` (string): Comma-separated tag ids, for example "12,15".
- `type_ids` (string): Comma-separated ticket type ids, for example "12,15".
- `updated_since` (string): ISO-8601 timestamp, keep tickets updated at or after it.

### `gorelo_get_ticket` (~49 tokens)

Get a ticket

Get one ticket by id (uuid). API: GET /v1/tickets/{ticketId}.

Input parameters:

- `ticket_id` (string, required): Ticket id (uuid, from gorelo_list_tickets).

### `gorelo_list_ticket_comments` (~166 tokens)

List ticket comments

List the comments (public replies, private notes) on a ticket. API: GET /v1/tickets/{ticketId}/comments.

Input parameters:

- `conversation_id` (string): Filter to one conversation id (from the ticket's conversations).
- `conversation_type` (string): Conversation kinds to include: 1 Public, 2 Private, 3 Side Conversation, 4 Approval. Comma-separated, or a single value together with conversation_id.
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `sort_order` (string)
- `ticket_id` (string, required): Ticket id (uuid).

### `gorelo_list_ticket_statuses` (~39 tokens)

List ticket statuses

List the ticket statuses (id and name) used to filter or update tickets. API: GET /v1/tickets/statuses.

### `gorelo_list_ticket_types` (~26 tokens)

List ticket types

List the ticket types. API: GET /v1/tickets/types.

### `gorelo_list_ticket_priorities` (~29 tokens)

List ticket priorities

List the ticket priorities. API: GET /v1/tickets/priorities.

### `gorelo_list_agent_assets` (~190 tokens)

List managed devices

List agent (RMM managed device) assets with status, OS and client. API: GET /v1/assets/agents.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against device name, display name and description.
- `status_ids` (string): Comma-separated device status (2 Online, 3 Offline, 4 Pending Delete; the API also accepts 1 and 6, see the API docs) ids, for example "12,15".
- `updated_since` (string): ISO-8601 timestamp, keep devices updated at or after it.

### `gorelo_get_agent_asset` (~55 tokens)

Get a managed device

Get one managed device by id (guid). API: GET /v1/assets/agents/{agentAssetId}.

Input parameters:

- `agent_asset_id` (string, required): Agent asset id (guid, from gorelo_list_agent_assets).

### `gorelo_get_agent_hardware` (~53 tokens)

Get device hardware

Get a managed device's processors, memory and disks. API: GET /v1/assets/agents/{agentAssetId}/hardware.

Input parameters:

- `agent_asset_id` (string, required): Agent asset id (guid).

### `gorelo_list_agent_pending_updates` (~70 tokens)

List device pending updates

List the Windows updates pending on a managed device, from its last scan (no new scan starts). API: GET /v1/assets/agents/{agentAssetId}/patches/available.

Input parameters:

- `agent_asset_id` (string, required): Agent asset id (guid) of a Windows agent.

### `gorelo_list_custom_assets` (~135 tokens)

List custom assets

List custom (non-agent) assets such as printers, switches and licences. API: GET /v1/assets/custom.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against the asset name.
- `updated_since` (string): ISO-8601 timestamp, keep assets updated at or after it.

### `gorelo_list_alerts` (~248 tokens)

List alerts

List alerts (uptime, script, external, ...) newest first. API: GET /v1/alerts.

Input parameters:

- `agent_asset_ids` (string): Comma-separated agent asset (guid) ids, for example "12,15".
- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `created_before` (string): ISO-8601 timestamp, keep alerts raised before it.
- `created_since` (string): ISO-8601 timestamp, keep alerts raised at or after it.
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `sort_order` (string)
- `status_ids` (string): Comma-separated alert status (1 New, 2 Dismissed, 3 Ticketed) ids, for example "12,15".
- `type_ids` (string): Comma-separated alert type (1 Uptime, 2 API, 3 Script, 4 External, ...) ids, for example "12,15".

### `gorelo_get_alert` (~49 tokens)

Get an alert

Get one alert by id (guid). API: GET /v1/alerts/{alertId}.

Input parameters:

- `alert_id` (string, required): Alert id (guid, from gorelo_list_alerts).

### `gorelo_list_projects` (~174 tokens)

List projects

List projects with status, client and lead. API: GET /v1/projects.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against the project name.
- `sort_by` (string): Sort field, for example updatedOn or createdOn.
- `sort_order` (string)
- `status_ids` (string): Comma-separated project status ids, for example "12,15".
- `updated_since` (string): ISO-8601 timestamp, keep projects updated at or after it.

### `gorelo_list_project_tasks` (~190 tokens)

List project tasks

List the tasks of one project. API: GET /v1/projects/{projectId}/tasks.

Input parameters:

- `assignee_ids` (string): Comma-separated technician ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `incomplete_only` (boolean): When true, drop tasks in the Done status.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `project_id` (string, required): Project id (guid, from gorelo_list_projects).
- `sort_by` (string)
- `sort_order` (string)
- `status_ids` (string): Comma-separated task status (1 Not started, 2 Working on it, 3 On hold, 4 Done) ids, for example "12,15".

### `gorelo_list_time_entries` (~225 tokens)

List time entries

List logged time across tickets and tasks. API: GET /v1/time-entries.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `invoice_ids` (string): Comma-separated invoice ids, for example "12,15".
- `page_size` (integer): Items per page, 1-200 (default 50).
- `started_before` (string): ISO-8601 timestamp, keep entries whose work started before it.
- `started_since` (string): ISO-8601 timestamp, keep entries whose work started at or after it.
- `task_ids` (string): Comma-separated task (guid) ids, for example "12,15".
- `ticket_ids` (string): Comma-separated ticket (uuid) ids, for example "12,15".
- `user_ids` (string): Comma-separated user ids, for example "12,15".

### `gorelo_list_invoices` (~252 tokens)

List invoices

List invoices with status, totals and client. API: GET /v1/invoices.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `contract_ids` (string): Comma-separated contract ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `due_date_before` (string): Date (yyyy-mm-dd): invoices due before it (find overdue invoices).
- `invoice_date_before` (string): Date (yyyy-mm-dd): invoices dated before it.
- `invoice_date_since` (string): Date (yyyy-mm-dd): invoices dated at or after it.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Free text matched against invoice number, reference and name.
- `sort_by` (string)
- `sort_order` (string)
- `status_ids` (string): Comma-separated invoice status (1 Draft, 2 Submitted, 3 Paid, 4 Void, 5 Approved) ids, for example "12,15".

### `gorelo_get_invoice` (~49 tokens)

Get an invoice

Get one invoice with its line items and attachments. API: GET /v1/invoices/{invoiceId}.

Input parameters:

- `invoice_id` (string, required): Invoice id (from gorelo_list_invoices).

### `gorelo_list_contracts` (~127 tokens)

List contracts

List billing contracts with their service lines. API: GET /v1/contracts.

Input parameters:

- `client_ids` (string): Comma-separated client ids, for example "12,15".
- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against the contract name.
- `status_ids` (string): Comma-separated contract status ids, for example "12,15".

### `gorelo_list_users` (~142 tokens)

List technicians

List users (technicians) with role and status; use their ids as assignee ids. API: GET /v1/organization/users.

Input parameters:

- `cursor` (string): Cursor from DataContext.Pagination.NextCursor of the previous page. Omit for the first page.
- `group_ids` (string): Comma-separated technician group ids, for example "12,15".
- `page_size` (integer): Items per page, 1-200 (default 50).
- `query` (string): Keyword matched against the user name or email.
- `status_ids` (string): Comma-separated user status ids, for example "12,15".

### `gorelo_list_groups` (~32 tokens)

List technician groups

List technician groups (ids are needed to create a ticket). API: GET /v1/organization/groups.

### `gorelo_create_ticket` (~247 tokens)

Create a ticket

WRITE: create a service ticket. Needs status_id, group_id and type_id (use gorelo_list_ticket_statuses, gorelo_list_groups, gorelo_list_ticket_types). Set send_created_email true only if the contact must get a 'ticket created' email. API: POST /v1/tickets.

Input parameters:

- `agent_asset_ids` (array): Managed device ids (guid) to link.
- `client_id` (integer)
- `contact_id` (integer)
- `description` (string): Ticket body as HTML. Plain text is wrapped in a paragraph. Send < and > as &lt; and &gt;.
- `group_id` (integer, required): Technician group id.
- `lead_assignee_id` (integer): Technician id.
- `location_id` (integer): Needs client_id.
- `priority_id` (integer)
- `send_created_email` (boolean): Email the contact that the ticket was created (default false).
- `source_id` (integer)
- `status_id` (integer, required): Initial status id.
- `tag_ids` (array)
- `title` (string, required): Ticket title.
- `type_id` (integer, required): Ticket type id.

### `gorelo_update_ticket` (~166 tokens)

Update a ticket

WRITE: change fields of a ticket (status, priority, assignee, title, tags). Only the fields you send change. Each change notifies and logs as in the app. Changing the client clears the ticket's contact and assets. API: PATCH /v1/tickets/{ticketId}.

Input parameters:

- `client_id` (integer)
- `contact_id` (integer)
- `lead_assignee_id` (integer): Technician id. Send 0 to unassign.
- `priority_id` (integer)
- `status_id` (integer)
- `tag_ids` (array): Replaces the whole tag list; [] clears it.
- `ticket_id` (string, required): Ticket id (uuid).
- `title` (string)
- `type_id` (integer)

### `gorelo_add_ticket_comment` (~134 tokens)

Add a ticket comment

WRITE: add a comment to a ticket's main thread. A 'public' comment is a reply the client sees and may be emailed to them; a 'private' comment is an internal note. Do not retry after an unclear error: that can post twice. API: POST /v1/tickets/{ticketId}/comments.

Input parameters:

- `body` (string, required): Comment body as HTML. Send < and > in text as &lt; and &gt;.
- `ticket_id` (string, required): Ticket id (uuid).
- `visibility` (string, required): public = visible to the client; private = internal note.

### `gorelo_update_alert_status` (~105 tokens)

Update an alert status

WRITE: dismiss an alert, restore it to New, or link it to an open ticket (status 'ticketed' needs ticket_id). The change applies to the alert's whole stack, as in the app. API: PATCH /v1/alerts/{alertId}.

Input parameters:

- `alert_id` (string, required): Alert id (guid).
- `status` (string, required)
- `ticket_id` (string): Open ticket id (uuid). Required when status is ticketed.

### `gorelo_log_time_entry` (~216 tokens)

Log time on a ticket

WRITE: log work time against a ticket (or a project task). Give any two of started_on, ended_on and actual_hours (the API derives the third). Billing role, work type and billable status default from the ticket. Do not retry after an unclear error: that can log twice. API: POST /v1/time-entries.

Input parameters:

- `actual_hours` (number): Hours worked, decimal.
- `billable_status_id` (integer): 1 Billable, 2 No charge, 3 Non-billable.
- `comment` (string): Note that describes the work.
- `ended_on` (string): ISO-8601 UTC end of the work.
- `started_on` (string): ISO-8601 UTC start of the work.
- `task_id` (string): Project task id (guid). Send this or ticket_id.
- `ticket_id` (string): Ticket id (uuid). Send this or task_id.
- `user_id` (integer): Technician id the time belongs to.

## Diagnostics

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

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 64
- 2026-10-31: 64

## Common questions

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

Gorelo MCP by usefulapi is listed in the public MCP registry as io.usefulapi/gorelo. Read tickets, devices, alerts and invoices; create tickets, add comments, log time in Gorelo. This page covers its hosted endpoint (https://gorelo.usefulapi.io/mcp).

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

Gorelo MCP by usefulapi 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 Gorelo MCP by usefulapi server expose?

Gorelo MCP by usefulapi exposes 31 tools: gorelo_list_clients, gorelo_get_client, gorelo_list_client_locations, gorelo_list_contacts, gorelo_get_contact, and 26 more. Their descriptions and schemas cost roughly 4,088 tokens of context every time the server is loaded.

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

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

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

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