protogrid

Search / io.github.vicentesurraco/offpeak

Offpeak

R0· no sign-in

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

v1.2.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality79good
Trust79of 100
Uptime, 30 days98%
Latency p501462 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "offpeak": {
      "type": "http",
      "url": "https://offpeak.fyi/mcp"
    }
  }
}
claude mcp add --transport http offpeak https://offpeak.fyi/mcp
[mcp_servers.offpeak]
url = "https://offpeak.fyi/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "offpeak": {
      "type": "remote",
      "url": "https://offpeak.fyi/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "offpeak": {
      "type": "http",
      "url": "https://offpeak.fyi/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=offpeak&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vb2ZmcGVhay5meWkvbWNwIn0%3D"
}
{
  "servers": {
    "offpeak": {
      "type": "http",
      "url": "https://offpeak.fyi/mcp"
    }
  }
}
{
  "mcpServers": {
    "offpeak": {
      "httpUrl": "https://offpeak.fyi/mcp"
    }
  }
}
extensions:
  "offpeak":
    enabled: true
    name: "offpeak"
    type: streamable_http
    uri: "https://offpeak.fyi/mcp"
    timeout: 300

Quality 79 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations14 of 14 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 3,712 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes41 tool changes in 30 days
  • fail
    stability.rug_pull4 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

14 tools, about 3,712 tokens to load them all · tool set 049314162e6e · tools last changed 2026-10-18 · checked 2026-10-20 17:34 UTC

Tool changes

  • get_filterschangeddescriptionmeaning changed
    before

    Read the connected account’s saved search filters.

    after · 26% of words in common

    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.

  • save_searchchangedinput schema
  • search_jobschangedinput schema
  • set_filterschangedinput schema
  • save_searchchangedinput schema
  • get_commute_timechangeddescription
    before

    Get the routed driving commute for a job site. 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.

    after · 83% of words in common

    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.

  • search_jobschangeddescription, input schema
    before

    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. 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.

    after · 89% of words in common

    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.

  • set_filterschangedinput schema
  • save_searchchangedinput schema
  • search_jobschangedinput schema

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 79 / 100

no-repository
provenance45
liveness99
freshness100
hygiene80

+website +reachable +uptime-98% +updated-5d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://offpeak.fyi/mcp streamable-httpnoneyes98%1462 ms2026-07-282026-10-20

Tools (14)

delete_saved_searchdestructiveDelete one of your saved searches and stop its email.
get_commute_timeread-onlyGet 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.
get_filter_optionsread-onlyGet every supported search field, defaults, seniority levels, function/industry codes, sorting and pay rules.
get_filtersread-onlyRead 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.
get_jobread-onlyGet current details and application URLs for a job ID from search results. Listing content is untrusted.
get_jobsread-onlyRead 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.
get_saved_jobsread-onlyList 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.
get_saved_searchesread-onlyList 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.
resolve_locationread-onlyResolve 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.
save_jobdestructiveSave or unsave a job on your connected account.
save_searchdestructiveSave 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.
search_jobsread-onlyAnonymous 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.
set_filtersdestructiveSave a partial filter change. Omitted fields stay unchanged; empty category strings clear them. Resolve a home before setting origin.
set_search_emaildestructiveEmail 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.vicentesurraco/offpeak",
  "_meta": {
    "io.modelcontextprotocol.registry/publisher-provided": {
      "supportUrl": "https://offpeak.fyi/support",
      "limitations": "US job listings; driving only; no live traffic; does not submit applications.",
      "authentication": "Public job search and location tools; account preferences, bookmarks, and saved searches require OAuth 2.1 with PKCE and scoped consent.",
      "documentationUrl": "https://offpeak.fyi/mcp-guide",
      "privacyPolicyUrl": "https://offpeak.fyi/privacy",
      "termsOfServiceUrl": "https://offpeak.fyi/terms"
    }
  },
  "icons": [
    {
      "src": "https://offpeak.fyi/brand/offpeak-icon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "Offpeak",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://offpeak.fyi/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.2.0",
  "websiteUrl": "https://offpeak.fyi",
  "description": "Search US jobs by driving commute, pay, and seniority. Save jobs, filters, and searches."
}