# Dine MCP (pypi · dine-mcp)

Restaurant table availability across SevenRooms, TableCheck and ResDiary. Read-only; never books.

- Trust score: 57/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `dine-mcp`: 57/100 (this document), [markdown](https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp.md), [page](https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp)

## Channel facts

- Registry: `pypi`
- Package: `dine-mcp`
- Version: `0.2.10`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-11-05.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 36 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1071 tokens (~267/item across 4 items; 4 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 4 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 5 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 Dine MCP server?

Dine MCP runs locally as a PyPI package, launched with uvx dine-mcp --transport stdio. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add benjamin-di-dine-mcp -- uvx dine-mcp --transport stdio
```

### Cursor

```json
{
  "mcpServers": {
    "benjamin-di-dine-mcp": {
      "command": "uvx",
      "args": [
        "dine-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "benjamin-di-dine-mcp": {
      "command": "uvx",
      "args": [
        "dine-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add benjamin-di-dine-mcp -- uvx dine-mcp --transport stdio
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "benjamin-di-dine-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "dine-mcp",
        "--transport",
        "stdio"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  benjamin-di-dine-mcp:
    command: "uvx"
    args: ["dine-mcp", "--transport", "stdio"]
```

### Netclaw

```json
{
  "McpServers": {
    "benjamin-di-dine-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "dine-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "benjamin-di-dine-mcp": {
      "command": "uvx",
      "args": [
        "dine-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}
```

## 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-11-05 (score 57, −14)

- [security regression] Malware scan: pass → unverified

### 2026-11-03 (score 71, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-11-02 (score 55, −12)

- [security regression] Malware scan: pass → unverified
- [security improvement] GHSA-7xgj-8392-5q4r no longer affects this package
- [security improvement] GHSA-vqqp-x5qm-5qp4 no longer affects this package
- [security improvement] Known CVEs: fail → pass
- [functional] Package version: 0.2.6 → 0.2.10

### 2026-11-01 (score 67, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-10-31 (score 51, 0)

- [security regression] Provenance: fail → unverified
- [functional regression] Schema quality: 242 → 267
- [functional improvement] Stability: unverified → 0.03
- [functional] Schema quality: good → excellent
- [functional] Package version: 0.2.3 → 0.2.6
- [functional] Package version: 0.2.3 → 0.2.4

### 2026-10-30 (score 51)

First indexed and scored.

## MCP tools (4)

### `dine_find_venue` (~261 tokens)

Find venue

Identify one named restaurant and its booking channels (provider and venue on it, phone,
website). Give exactly one of name (with area and country when known), url or
google_place_id. Returns {venues: [{venue_id, name, address, time_zone, channels
[{kind, access_mode, url, text, verified}], match {confidence, evidence}}], candidates
[{name, address, google_place_id, confidence}], note}. Candidates mean "not sure which":
ask which one unless the request uniquely identifies it, then call again with its
google_place_id. Do not infer the venue country from the person's location. Not a cuisine
or area search.

Input parameters:

- `area`: Where it is: district or city ('Central', 'Shibuya')
- `country`: ISO 3166-1 alpha-2 country code ('HK', 'JP')
- `google_place_id`: A Google place id (ChIJ…) from a maps tool
- `limit` (integer): Candidates to return (1-10)
- `name`: The restaurant's name, any script ('Amber', '鮨 しこう')
- `url`: A booking page link (SevenRooms, TableCheck, ResDiary); never fetched

Output parameters:

- `candidates` (array)
- `note`
- `venues` (array)

### `dine_get_venue` (~75 tokens)

Get venue

One venue in full: channels, each provider's booking rules (how many days ahead,
party size limits, card or deposit), experiences or courses, booking links, opening hours
and sources. Costs one provider request per channel when not cached.

Input parameters:

- `venue_id` (string, required): A venue_id from dine_find_venue

Output parameters:

- `channels` (array)
- `name` (string)
- `venue_id` (string)

### `dine_check_availability` (~316 tokens)

Check availability

Table availability for venues over dates, a time window and a party size. Ask for missing
dates and diner count before calling; state the time window used. One result per
venue and channel: {venue_id, venue_name, channel, status, time_zone, slots [{start, kind,
area, experience, price, requires_card, booking_link}], coverage {dates_checked,
dates_not_checked}, observed_at, served_from, booking_link, opens_at, min_party, max_party, contact,
note}. status: ok, none_available, not_yet_open (see opens_at), party_too_small, party_too_large, closed,
contact_only, not_connected, blocked, rate_limited, unavailable, unsupported, unknown_venue,
skipped_deadline. Large requests are refused with too_broad: narrow them.

Input parameters:

- `date_from` (string, required): First date, YYYY-MM-DD, venue local
- `date_to`: Last date inclusive (default date_from); at most 7 days
- `kinds`: Slot kinds to include (default bookable and request)
- `party_size` (integer): Number of diners
- `response_format` (string): concise: up to 6 slots per venue and day
- `time_from` (string): Earliest time, HH:MM venue local
- `time_to` (string): Latest time, HH:MM; earlier than time_from crosses midnight
- `venue_ids` (array, required): 1-5 venue_ids from dine_find_venue

Output parameters:

- `query` (object)
- `results` (array)
- `summary` (object)

### `dine_status` (~99 tokens)

Status

Version, each provider's mode, maturity, whether it is on, today's request budget and
any pause after provider pushback. Default is offline; check=true runs paced, budgeted
public-widget canaries with a 15-minute cooldown. For a restaurant's availability, use
dine_find_venue then dine_check_availability. Health never contacts a provider.

Input parameters:

- `check` (boolean): Run budgeted provider canaries (15-minute cooldown)

Output parameters:

- `providers` (array)
- `version` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp#diagnostics

## Score history

- 2026-11-05: 57
- 2026-11-04: 71
- 2026-11-03: 71
- 2026-11-02: 55
- 2026-11-01: 67
- 2026-10-31: 51
- 2026-10-30: 51

## Common questions

### What is the Dine MCP server?

Dine MCP is listed in the public MCP registry as io.github.benjamin-di/dine-mcp. Restaurant table availability across SevenRooms, TableCheck and ResDiary. Read-only; never books. This page covers its PyPI package (dine-mcp).

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

Dine MCP scores 57 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. 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 Dine MCP server expose?

Dine MCP exposes 4 tools: dine_find_venue, dine_get_venue, dine_check_availability, dine_status. Their descriptions and schemas cost roughly 751 tokens of context every time the server is loaded.

### Is the Dine MCP server still maintained?

Dine MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Dine MCP server under?

Dine MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the Dine MCP server?

VerifyMCP ran 15 checks on Dine MCP, covering Known CVEs, Install scripts, Dependency health, Source repository and 11 more. One item could not be completed, a gap on our side rather than a finding about Dine MCP: Malware scan. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- PyPI project: https://pypi.org/project/dine-mcp/
- Socket report: https://socket.dev/pypi/package/dine-mcp
- Repository: https://github.com/benjamin-di/dine-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp.json
- HTML version of this page: https://verifymcp.io/servers/benjamin-di-dine-mcp/dine-mcp
