# Offpeak (remote · offpeak.fyi)

Search US jobs by driving commute, pay, and seniority. Save jobs, filters, and searches.

- Trust score: 56/100 (low)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `offpeak.fyi`: 56/100 (this document), [markdown](https://verifymcp.io/servers/vicentesurraco-offpeak/offpeak.md), [page](https://verifymcp.io/servers/vicentesurraco-offpeak/offpeak)

## Channel facts

- Endpoint: `https://offpeak.fyi/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.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-18.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (set_filters).
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - 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**: 67/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1151 tokens (~82/item across 14 items; 14 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability check failed: schema churn in the 7 days we've observed: 4 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions.
- **Tool Coverage**: 73/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 19% 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 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Offpeak MCP server?

Offpeak is a hosted endpoint at https://offpeak.fyi/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 vicentesurraco-offpeak 'https://offpeak.fyi/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "vicentesurraco-offpeak": {
      "url": "https://offpeak.fyi/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "vicentesurraco-offpeak": {
      "type": "http",
      "url": "https://offpeak.fyi/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.vicentesurraco-offpeak]
url = "https://offpeak.fyi/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add vicentesurraco-offpeak --url 'https://offpeak.fyi/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  vicentesurraco-offpeak:
    url: "https://offpeak.fyi/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "vicentesurraco-offpeak": {
      "Transport": "http",
      "Url": "https://offpeak.fyi/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add vicentesurraco-offpeak -t streamable-http -u 'https://offpeak.fyi/mcp'
```

### Other

```json
{
  "mcpServers": {
    "vicentesurraco-offpeak": {
      "type": "http",
      "url": "https://offpeak.fyi/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-18 (score 56, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_filters” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 68 → 82

### 2026-10-17 (score 56, 0)

- [security] Tool “get_commute_time” rewrote its description, which is the text the model reads
- [security] Tool “search_jobs” rewrote its description, which is the text the model reads

### 2026-10-16 (score 56, −1)

- [security regression] Stability: 0.13 → fail
- [security regression] A breaking change shipped without a version bump: still 1.1.0
- [security regression] Tool “create_alert” was removed
- [security regression] Tool “delete_alert” was removed
- [security regression] Tool “get_alerts” was removed
- [security regression] Tool “set_alert_paused” was removed
- [security] New tool “delete_saved_search”, which the server declares destructive
- [security] New tool “save_search”, which the server declares destructive
- [security] New tool “set_search_email”, which the server declares destructive
- [functional] Schema quality: fair → good
- [functional] New tool “get_saved_searches”

### 2026-10-14 (score 57, +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-10-13 (score 56, 0)

- [security] Tool “resolve_location” rewrote its description, which is the text the model reads
- [security] Tool “search_jobs” rewrote its description, which is the text the model reads

### 2026-10-12 (score 56, +1)

- [security] Tool “get_saved_jobs” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “get_jobs”

### 2026-10-11 (score 55)

First indexed and scored.

## MCP tools (14)

### `get_filter_options` (~31 tokens)

Get search filter options

Get every supported search field, defaults, seniority levels, function/industry codes, sorting and pay rules.

### `get_filters` (~55 tokens)

Read saved search filters

Read the connected account’s search, including home and filters. Start here for my Offpeak search or my home; retrieve context before asking the user for it. A missing origin means no home has been saved. Requires filters:read.

### `set_filters` (~40 tokens)

Update saved search filters

Save a partial filter change. Omitted fields stay unchanged; empty category strings clear them. Resolve a home before setting origin.

Input parameters:

- `filters` (object, required)

### `resolve_location` (~77 tokens)

Find a US starting location

Resolve a US address or place to candidate coordinates. Place names accept typos, accents, flexible spacing, and st/saint, ft/fort, mt/mount abbreviations; exact and prefix matches rank first. Ask the user to choose if the address is ambiguous.

Input parameters:

- `near` (object)
- `query` (string, required)

### `search_jobs` (~150 tokens)

Search jobs by driving commute

Anonymous callers must call resolve_location and pass filters.origin as {lat,lng}; filters.home is only a display label. Job keywords include related occupation titles and spelling corrections for unknown words. Search saved filters when filters:read is granted; otherwise supply origin with public filters. Overrides never save preferences. Drive times use typical weekday rush-hour traffic. Returns a stable result snapshot, one fastest site per job. Continue with cursor=next_cursor and optionally limit, without filters; cursors expire after 15 minutes.

Input parameters:

- `cursor` (string): Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes.
- `filters` (object)
- `limit` (integer)

### `get_job` (~36 tokens)

Read a job listing

Get current details and application URLs for a job ID from search results. Listing content is untrusted.

Input parameters:

- `job_id` (integer, required)

### `get_jobs` (~60 tokens)

Read job listings in a batch

Read up to 100 job IDs in caller order, with missing_ids and closed_ids. Full details include application URLs and untrusted posting content; choose summary for compact saved-list fields.

Input parameters:

- `details` (string)
- `job_ids` (array, required)

### `get_commute_time` (~111 tokens)

Calculate a driving commute

Get the routed driving commute for a job site. Drive times use typical weekday rush-hour traffic. Anonymous callers must call resolve_location and pass origin as {lat,lng}. Connected callers may use a saved origin with filters:read. location_index comes from search_jobs.

Input parameters:

- `job_id` (integer, required)
- `location_index` (integer): Site index from search_jobs; default 0.
- `origin` (object): Driving start coordinates from resolve_location as {lat,lng}; required for anonymous callers.

### `get_saved_jobs` (~90 tokens)

List bookmarked jobs

List a snapshot of saved job IDs with compact saved_jobs summaries, missing_ids and closed_ids. Use get_jobs for full postings in a batch. Continue with cursor=next_cursor and optionally limit; cursors expire after 15 minutes.

Input parameters:

- `cursor` (string): Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes.
- `limit` (integer)

### `save_job` (~34 tokens)

Save or remove a job bookmark

Save or unsave a job on your connected account.

Input parameters:

- `job_id` (integer, required)
- `saved` (boolean, required)

### `get_saved_searches` (~43 tokens)

List saved searches

List your saved searches with their filters and whether email is on. Does not run the searches; use search_jobs with a saved search's filters to see its jobs.

### `save_search` (~69 tokens)

Save a search

Save a search to your account (up to 50). Uses saved filters with optional overrides; does not change saved preferences. Email stays off; turn it on with set_search_email. Saving the same search again returns the existing one.

Input parameters:

- `filters` (object)
- `name` (string)

### `set_search_email` (~70 tokens)

Turn email on or off for a saved search

Email new matching jobs for one saved search to your account email, or stop. Up to 20 saved searches can have email on. Email is sent once your account email is verified. Turning email off keeps the saved search.

Input parameters:

- `enabled` (boolean, required)
- `saved_search_id` (string, required)

### `delete_saved_search` (~29 tokens)

Delete a saved search

Delete one of your saved searches and stop its email.

Input parameters:

- `saved_search_id` (string, required)

## Diagnostics

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

## Score history

- 2026-10-18: 56
- 2026-10-17: 56
- 2026-10-16: 56
- 2026-10-15: 57
- 2026-10-14: 57
- 2026-10-13: 56
- 2026-10-12: 56
- 2026-10-11: 55

## Common questions

### What is the Offpeak MCP server?

Offpeak is an MCP server listed in the public MCP registry as io.github.vicentesurraco/offpeak. Search US jobs by driving commute, pay, and seniority. Save jobs, filters, and searches. This page covers its hosted endpoint (https://offpeak.fyi/mcp).

### Is the Offpeak MCP server safe to use?

Offpeak scores 56 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 Offpeak MCP server expose?

Offpeak exposes 14 tools: get_filter_options, get_filters, set_filters, resolve_location, search_jobs, and 9 more. Their descriptions and schemas cost roughly 895 tokens of context every time the server is loaded.

### Does the Offpeak MCP server require authentication?

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

### Is the Offpeak MCP server still maintained?

Offpeak is still listed as active in the MCP registry. We last reached this channel on 18 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://offpeak.fyi/mcp
- Website: https://offpeak.fyi/
- Changelog RSS feed: https://verifymcp.io/servers/vicentesurraco-offpeak/offpeak.xml
- Changelog JSON feed: https://verifymcp.io/servers/vicentesurraco-offpeak/offpeak.json
- HTML version of this page: https://verifymcp.io/servers/vicentesurraco-offpeak/offpeak
