# io.github.QueryQuarry/queryquarry (remote · queryquarry.com)

Double-blind talent marketplace: AIs search anonymous opted-in candidates; reveal on consent.

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

## Components

- remote · `queryquarry.com`: 79/100 (this document), [markdown](https://verifymcp.io/servers/queryquarry-queryquarry/api-mcp.md), [page](https://verifymcp.io/servers/queryquarry-queryquarry/api-mcp)

## Channel facts

- Endpoint: `https://queryquarry.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.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**: 94/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 is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - 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**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1623 tokens (~147/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 81/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 44% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http queryquarry-queryquarry https://queryquarry.com/api/mcp
```

### Codex

```toml
[mcp_servers.queryquarry-queryquarry]
url = "https://queryquarry.com/api/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add queryquarry-queryquarry --url https://queryquarry.com/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  queryquarry-queryquarry:
    url: "https://queryquarry.com/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "queryquarry-queryquarry": {
      "type": "http",
      "url": "https://queryquarry.com/api/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-02 (score 79, +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 78, +6)

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

### 2026-07-29 (score 72, +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 71, +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 70, 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 70)

First indexed and scored.

## MCP tools (11)

### `search_candidates` (~578 tokens)

Search the talent graph. Returns ANONYMOUS match cards — headline, skills (with skills_matched showing which of YOUR terms hit), seniority, location, availability, salary range, and a short snippet — but NO name, full resume, or contact. Call get_candidate (a metered reveal) for the deeper anonymous profile. Filter by skills, location, seniority, salary, experience, availability, and more; sort by recency (default) or skill_match. Always paginated (max 25 per page).

Input parameters:

- `availability` (string)
- `employment_types` (array): Engagement types to match (any of): full-time, part-time, contract, freelance, internship. Synonyms/variants are normalized.
- `experience_years_max` (number)
- `experience_years_min` (number)
- `limit` (number): Results per page (max 25).
- `location` (string): City with state ("Schaumburg, IL") or a 5-digit zip ("60133" — most precise). Geocoded locally; combine with radius_miles for distance search. Unresolvable text falls back to substring match.
- `open_to_relocation` (boolean): Only candidates willing to relocate for the right role.
- `page` (number): 1-based page.
- `radius_miles` (number): With location: include candidates within this many miles (e.g. 5, 10, 25, 50; max 100). Omit for exact-place matching.
- `remote_ok` (boolean): Only candidates open to remote/hybrid.
- `salary_max` (number)
- `salary_min` (number)
- `seniority_levels` (array): Seniority levels to match (any of): entry, junior, mid, senior, staff, principal, manager, director, executive.
- `skills` (array): Skills to match (any of). Case-insensitive partial match — use plain terms like "React", "Node", "Postgres"; they also match versioned/variant skills ("React 19", "Node.js", "PostgreSQL").
- `sort` (string): Result order. When `skills` are supplied the default is skill_match: candidates matching MORE of your skills terms first (ties by most recently updated) — pure arithmetic over your own criteria, no f…
- `updated_since` (string): ISO timestamp — only resumes updated since.
- `work_authorization` (string): Filter by work authorization: "authorized" (no sponsorship needed) or "sponsorship-required".
- `work_location_types` (array): Work-location preferences to match (any of): remote, hybrid, onsite.

### `get_candidate` (~95 tokens)

Evaluate one candidate in depth — full skills, summary, seniority, experience (titles + what they did) and education. Stays ANONYMOUS: no name, no contact, and employer names, dates, and graduation years are withheld to protect identity. Counts toward your hourly/daily reveal limit. To actually reach someone, call request_contact.

Input parameters:

- `candidate_id` (string, required)
- `resume_id` (string, required)

### `request_contact` (~193 tokens)

Reach out to one candidate. You identify yourself (your name + company, from your account); the candidate is notified and decides. If they accept, you receive an EMAIL with their contact, their message, and a unique verification code — their identity stays private until they choose to share it. METERED (counts toward your contact limit) and requires a prior get_candidate for this resume. One active offer per candidate; respect declines. get_contact also shows the status any time.

Input parameters:

- `candidate_id` (string, required)
- `message` (string, required): Your pitch to the candidate: the role and why them. Your account email is AUTOMATICALLY attached and shown to them when they express interest, so you don't need to include it. You may optionally add…
- `resume_id` (string, required)

### `get_contact` (~79 tokens)

Check the status of a contact request you sent: sent (awaiting), accepted (the candidate shared their contact — see shared_contact, and expect their intro email quoting the code), or declined. Identify it by contact_id or code. Also shows any hire outcome either side reported.

Input parameters:

- `code` (string)
- `contact_id` (string)

### `report_contact_outcome` (~77 tokens)

One-tap outcome report on an accepted contact: did it lead to a hire? Optional but appreciated — it's how the marketplace measures that consented outreach beats cold outreach. Values: hired | not_hired | in_progress.

Input parameters:

- `code` (string)
- `contact_id` (string)
- `outcome` (string, required)

### `get_new_candidates` (~47 tokens)

Get resumes new or updated since a timestamp (your standing alert). Same filters as search_candidates. Call daily with yesterday's timestamp; no duplicates.

Input parameters:

- `since` (string, required): ISO timestamp.

### `save_candidate` (~43 tokens)

Save a candidate resume to your watchlist with optional notes.

Input parameters:

- `candidate_id` (string, required)
- `notes` (string)
- `resume_id` (string, required)

### `get_watchlist` (~31 tokens)

Get your saved candidates (watchlist).

Input parameters:

- `page` (number)
- `status` (string)

### `get_corpus_stats` (~25 tokens)

Get aggregate stats about the talent corpus (counts, top skills/locations).

### `check_subscription` (~23 tokens)

Check your subscription tier, status, rate limit, and usage this hour.

### `get_docs` (~57 tokens)

Get the full QueryQuarry reference (how it works, all tools and filters, search tips, rate limits, privacy). Call this when you need detail beyond these tool descriptions, when guiding a new user, or before composing a complex search.

## Diagnostics

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

## Score history

- 2026-08-03: 79
- 2026-08-02: 79
- 2026-08-01: 78
- 2026-07-31: 78
- 2026-07-30: 72
- 2026-07-29: 72
- 2026-07-28: 71
- 2026-07-27: 70
- 2026-07-26: 70

## Links

- Remote endpoint: https://queryquarry.com/api/mcp
- Repository: https://github.com/QueryQuarry/QueryQuarry
- Website: https://queryquarry.com/
- Changelog RSS feed: https://verifymcp.io/servers/queryquarry-queryquarry/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/queryquarry-queryquarry/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/queryquarry-queryquarry/api-mcp
