# Robly MCP by usefulapi (remote · robly.usefulapi.io)

Find Robly contacts and lists; subscribe, update and move contacts between lists.

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

## Components

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

## Channel facts

- Endpoint: `https://robly.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.2.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**: 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 (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1926 tokens (~148/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 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.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 14 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 Robly MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-robly": {
      "type": "http",
      "url": "https://robly.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 63, +1)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.2.0 → 1.2.3

### 2026-10-24 (score 62)

First indexed and scored.

## MCP tools (13)

### `robly_list_contacts` (~253 tokens)

List contacts

List contacts (members) of the Robly account, newest first as Robly orders them: id, email, subscribed/deleted flags, subscription date, sign-up source, timestamps. Filter by status, by list, or by last-updated time; optionally include each contact's lists and data fields. Pages with limit (max 100) and offset: pass next_offset from the previous reply. Robly does not return a total. GET /api/v1/contacts/show.

Input parameters:

- `include_fields` (boolean): Include each contact's data fields (name, custom fields).
- `include_sub_lists` (boolean): Include the lists each contact is on.
- `limit` (integer): Contacts per page, 1-100 (default 25).
- `list_id` (integer): Only contacts on this list (sub list id from robly_list_sub_lists).
- `offset` (integer): Contacts to skip (default 0).
- `status` (string): Only contacts with this status (default all).
- `updated_since` (string): Only contacts changed since this ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z.

### `robly_find_contact` (~129 tokens)

Find contact

Look up one contact by email address or member id: status, subscription date, sign-up source and, on request, the lists and data fields. Returns found: false when Robly has no such contact. GET /api/v1/contacts/search.

Input parameters:

- `email` (string): The contact's email address. Give this OR member_id.
- `include_fields` (boolean): Include the contact's data fields.
- `include_sub_lists` (boolean): Include the lists the contact is on.
- `member_id` (integer): Robly contact (member) id. Give this OR email.

### `robly_check_list_membership` (~96 tokens)

Check list membership

Whether one contact (by email or member id) is on one list. GET /api/v1/contacts/exists_in_sub_list.

Input parameters:

- `email` (string): The contact's email address. Give this OR member_id.
- `member_id` (integer): Robly contact (member) id. Give this OR email.
- `sub_list_id` (integer, required): Sub list id from robly_list_sub_lists.

### `robly_list_sub_lists` (~74 tokens)

List sub lists

List the account's sub lists (the lists contacts belong to): id, name, position, timestamps. Public lists only unless include_all is true. Use the ids for list filters and for adding contacts. GET /api/v1/sub_lists/show.

Input parameters:

- `include_all` (boolean): Also include non-public lists.

### `robly_list_fields` (~80 tokens)

List data fields

List the contact data fields (First Name, Last Name, custom fields): id, label, type, required flag and the user_tag that robly_subscribe_contact and robly_update_contact use as the field key. GET /api/v1/fields/show.

Input parameters:

- `include_all` (boolean): Also include fields hidden from public sign-up forms.

### `robly_get_signup_form` (~61 tokens)

Get sign-up form

The data fields and sub lists a new subscriber can be given through the sign-up API (public ones unless include_all is true). GET /api/v1/sign_up/show.

Input parameters:

- `include_all` (boolean): Also include non-public fields and lists.

### `robly_subscribe_contact` (~262 tokens)

Subscribe contact

WRITE: add a new subscribed contact (or re-submit an existing one through the sign-up form). With double_opt_in Robly EMAILS the contact a confirmation link first; with welcome_email it EMAILS the welcome message right away; with include_autoresponder it triggers matching autoresponders, which email the contact. Only subscribe people who agreed to receive email. Field values go in `fields`, keyed by the user_tag from robly_list_fields (for example fname, lname). POST /api/v1/sign_up/generate.

Input parameters:

- `double_opt_in` (boolean): Send a confirmation email; the contact is subscribed only after clicking it, then gets the welcome email.
- `email` (string, required): The new contact's email address.
- `fields` (object): Data field values keyed by user_tag, e.g. {"fname": "Ada", "lname": "Lovelace"}.
- `include_autoresponder` (boolean): Trigger matching autoresponders (they email the contact).
- `return_contact` (boolean): Return the created contact.
- `sub_list_ids` (array): Lists to put the contact on (ids from robly_list_sub_lists).
- `welcome_email` (boolean): Skip confirmation and send the welcome email now.

### `robly_add_contact_to_list` (~131 tokens)

Add contact to list

WRITE: put an existing contact on a list. With include_autoresponder Robly triggers autoresponders matching the newly listed contact, which EMAIL the contact. POST /api/v1/contacts/add_sub_list.

Input parameters:

- `email` (string): The contact's email address. Give this OR member_id.
- `include_autoresponder` (boolean): Trigger matching autoresponders (they email the contact).
- `member_id` (integer): Robly contact (member) id. Give this OR email.
- `sub_list_id` (integer, required): Sub list id from robly_list_sub_lists.

### `robly_remove_contact_from_list` (~94 tokens)

Remove contact from list

WRITE: take a contact off one list (the contact itself is kept). POST /api/v1/contacts/remove_sub_list.

Input parameters:

- `email` (string): The contact's email address. Give this OR member_id.
- `member_id` (integer): Robly contact (member) id. Give this OR email.
- `sub_list_id` (integer, required): Sub list id from robly_list_sub_lists.

### `robly_update_contact` (~250 tokens)

Update contact

WRITE: change an existing contact's data fields and/or list memberships in one call. Name the contact by member_id (look it up with robly_find_contact). `fields` are keyed by user_tag (robly_list_fields); the email address cannot be changed here. add_to_list_ids puts the contact on those lists, remove_from_list_ids takes it off them. remove_from_all_other_lists also removes the contact from every list NOT named in add_to_list_ids (requires add_to_list_ids). include_autoresponder triggers autoresponders that EMAIL the contact. POST /api/v1/contacts/update_full_contact.

Input parameters:

- `add_to_list_ids` (array): Lists to put the contact on.
- `fields` (object): Data field values keyed by user_tag, e.g. {"fname": "Ada"}.
- `include_autoresponder` (boolean): Trigger matching autoresponders (they email the contact).
- `member_id` (integer, required): Robly contact (member) id.
- `remove_from_all_other_lists` (boolean): Also remove the contact from every list not in add_to_list_ids.
- `remove_from_list_ids` (array): Lists to take the contact off.

### `robly_unsubscribe_contact` (~103 tokens)

Unsubscribe contact

WRITE: unsubscribe a contact so Robly stops emailing it. Robly's API cannot undo this: an unsubscribed contact can only come back through a sign-up form. Use it for a contact that asked to stop. POST /api/v1/contacts/unsubscribe.

Input parameters:

- `email` (string): The contact's email address. Give this OR member_id.
- `member_id` (integer): Robly contact (member) id. Give this OR email.

### `robly_create_sub_list` (~68 tokens)

Create sub list

WRITE: create a new, empty sub list. Robly does not say whether a list with the same name already exists, so check robly_list_sub_lists first. POST /api/v1/sub_lists/add_sub_list.

Input parameters:

- `name` (string, required): Name of the new list.

### `robly_rename_sub_list` (~59 tokens)

Rename sub list

WRITE: rename a sub list. POST /api/v1/sub_lists/rename_sub_list.

Input parameters:

- `name` (string, required): The new name.
- `sub_list_id` (integer, required): Sub list id from robly_list_sub_lists.

## Diagnostics

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

## Score history

- 2026-10-25: 63
- 2026-10-24: 62

## Common questions

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

Robly MCP by usefulapi is listed in the public MCP registry as io.usefulapi/robly. Find Robly contacts and lists; subscribe, update and move contacts between lists. This page covers its hosted endpoint (https://robly.usefulapi.io/mcp).

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

Robly MCP by usefulapi scores 63 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 Robly MCP by usefulapi server expose?

Robly MCP by usefulapi exposes 13 tools: robly_list_contacts, robly_find_contact, robly_check_list_membership, robly_list_sub_lists, robly_list_fields, and 8 more. Their descriptions and schemas cost roughly 1,660 tokens of context every time the server is loaded.

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

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

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