# ai.roc/mcp (remote · mcp.roc.ai)

ROC biometrics & computer vision: face, LPR, OCR, pedestrian, vehicle, gun detection.

- Trust score: 67/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

> **Recent critical change**: TLS certificate (2026-08-03). See the changelog below before you install this server.

## Components

- remote · `mcp.roc.ai`: 67/100 (this document), [markdown](https://verifymcp.io/servers/ai-roc-mcp/mcp.md), [page](https://verifymcp.io/servers/ai-roc-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.roc.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.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-08-03.

- **Endpoint Security**: 11/100
  - TLS check failed: the certificate is expired or not yet valid (as of 2026-08-03).
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS not yet verified: we couldn't read the response headers to check for it.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the TLS certificate failed verification.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema.
- **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.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 4 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

### Claude

```bash
claude mcp add --transport http ai-roc-mcp https://mcp.roc.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-roc-mcp]
url = "https://mcp.roc.ai/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add ai-roc-mcp --url https://mcp.roc.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-roc-mcp:
    url: "https://mcp.roc.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-roc-mcp": {
      "type": "http",
      "url": "https://mcp.roc.ai/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-08-03 (score 67, 0)

- [critical regression] TLS certificate: pass → fail
- [critical regression] Score status: scored → failed
- [security regression] Endpoint reachability: reachable → unreachable
- [security regression] HSTS header: fail → unverified
- [security regression] Stability: 0.23 → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-08-02 (score 67, +1)

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

### 2026-07-31 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, +1)

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

### 2026-07-28 (score 65, +1)

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

### 2026-07-27 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (7)

### `analyze_faces` (~427 tokens)

Analyze faces in an image. Detects each face and returns its location, confidence score, facial landmarks (eyes, nose, mouth), and head orientation. Optionally computes liveness/spoof detection, passport-standard (ICAO) quality checks, cropped face thumbnails, and detailed analytics including age, emotion, geographic origin, gender, glasses, facial hair, head pose, mouth open/closed, face and image quality, artwork detection, and mask detection. Provide the image as base64 (preferred) or a public URL as fallback.

Input parameters:

- `analytics` (boolean): Compute face analytics including: age estimation, emotion classification (anger, disgust, fear, joy, neutral, sadness, surprise), geographic origin (African, East Asian, European, Latin American, Mid…
- `icao_background` (boolean): Compute ICAO uniform background face portrait quality metric. If combined with thumbnail, the thumbnail will be a base64 PNG with the background removed.
- `icao_metrics` (boolean): Check whether the face photo meets passport and ID standards (ICAO), including eye visibility, glare, lighting, occlusion, and overall image quality.
- `image_base64` (string): Base64-encoded image (jpg, png, bmp). Preferred over image_url.
- `image_url` (string): Public URL of the image. Used only if image_base64 is not provided.
- `spoof` (boolean): Detect whether the face is from a live person or a photo of a photo. Returns a liveness score between 0.0 and 1.0 where higher values indicate a greater chance of a spoof.
- `thumbnail` (boolean): Generate an aligned and cropped base64 JPG face image suitable for displaying. If combined with icao_background, the thumbnail will be a base64 PNG with the background removed.

### `compare_faces` (~230 tokens)

Check if the same person appears in two different images. Finds all faces in both images and compares each face from the first image against each face in the second. Returns only the pairs that match, with a similarity score between 0.0 and 1.0. Provide each image as base64 (preferred) or a public URL as fallback.

Input parameters:

- `image_a_base64` (string): Base64-encoded first image (jpg, png, bmp). Preferred over image_a_url.
- `image_a_url` (string): Public URL of the first image. Used only if image_a_base64 is not provided.
- `image_b_base64` (string): Base64-encoded second image (jpg, png, bmp). Preferred over image_b_url.
- `image_b_url` (string): Public URL of the second image. Used only if image_b_base64 is not provided.
- `threshold` (number): Minimum similarity score for a pair to be considered a match. Defaults to 0.5 (approximately one-in-ten-million false match rate). Only pairs at or above this value are returned.

### `analyze_license_plates` (~255 tokens)

Analyze license plates in an image. Detects each license plate and returns its location, confidence score, and recognized text (ALPR/OCR). Optionally classifies the issuing region (e.g. state or country), filters non-compliant text, ignores partial reads, and returns a cropped base64 JPG thumbnail of the plate. Provide the image as base64 (preferred) or a public URL as fallback.

Input parameters:

- `filter_text` (boolean): Filter out non-compliant text results that do not match a known license plate pattern.
- `ignore_partial` (boolean): Ignore partial license plate detections that fall outside the image bounds.
- `image_base64` (string): Base64-encoded image (jpg, png, bmp). Preferred over image_url.
- `image_url` (string): Public URL of the image. Used only if image_base64 is not provided.
- `region` (string): Geographic region for plate classification (issuing state/country). One of: north_american, european, pacific, south_american, asian, middle_eastern, african. Omit to skip classification.
- `thumbnail` (boolean): Generate an aligned and cropped base64 JPG thumbnail of the license plate suitable for displaying.

### `read_text` (~222 tokens)

Read text in an image (OCR). Detects each text region and returns its location, confidence score, and recognized text. Optionally restricts results to a regex pattern, restricts allowed characters via a vocabulary, ignores partial detections, and returns a cropped base64 JPG thumbnail of each text region. Provide the image as base64 (preferred) or a public URL as fallback.

Input parameters:

- `ignore_partial` (boolean): Ignore partial text detections that fall outside the image bounds.
- `image_base64` (string): Base64-encoded image (jpg, png, bmp). Preferred over image_url.
- `image_url` (string): Public URL of the image. Used only if image_base64 is not provided.
- `text_filter` (string): Regular expression that recognized text must match. Non-matching detections are discarded.
- `text_vocabulary` (string): Set of allowed characters for OCR. Only characters in this string will be returned.
- `thumbnail` (boolean): Generate an aligned and cropped base64 JPG thumbnail of each text region suitable for displaying.

### `detect_persons` (~153 tokens)

Find people in a photo. Returns the position and confidence score for each person found, along with body landmarks and clothing color. Can also return a cropped image of each person. Provide the image as base64 (preferred) or a public URL.

Input parameters:

- `ignore_partial` (boolean): Skip people who are only partially visible (cut off by the edge of the image).
- `image_base64` (string): The image encoded as a base64 string (jpg, png, or bmp). Preferred over image_url.
- `image_url` (string): A publicly accessible URL pointing to the image. Used only when image_base64 is not provided.
- `thumbnail` (boolean): Return a small cropped image of each detected person.

### `detect_vehicles` (~156 tokens)

Find vehicles in a photo. Returns the position and confidence score for each vehicle found, along with its predicted make, model, and color. Can also return a cropped image of each vehicle. Provide the image as base64 (preferred) or a public URL.

Input parameters:

- `ignore_partial` (boolean): Skip vehicles that are only partially visible (cut off by the edge of the image).
- `image_base64` (string): The image encoded as a base64 string (jpg, png, or bmp). Preferred over image_url.
- `image_url` (string): A publicly accessible URL pointing to the image. Used only when image_base64 is not provided.
- `thumbnail` (boolean): Return a small cropped image of each detected vehicle.

### `detect_guns` (~145 tokens)

Find guns in a photo. Returns the position and confidence score for each gun found. Can also return a cropped image of each gun. Provide the image as base64 (preferred) or a public URL.

Input parameters:

- `ignore_partial` (boolean): Skip guns that are only partially visible (cut off by the edge of the image).
- `image_base64` (string): The image encoded as a base64 string (jpg, png, or bmp). Preferred over image_url.
- `image_url` (string): A publicly accessible URL pointing to the image. Used only when image_base64 is not provided.
- `thumbnail` (boolean): Return a small cropped image of each detected gun.

## Diagnostics

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

## Score history

- 2026-08-03: 67
- 2026-08-02: 67
- 2026-08-01: 66
- 2026-07-31: 66
- 2026-07-30: 66
- 2026-07-29: 66
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 64

## Links

- Remote endpoint: https://mcp.roc.ai/mcp
- Website: https://roc.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-roc-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-roc-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-roc-mcp/mcp
