Dim Hour
Search 19,000+ verified places to eat and drink across 24 cities, each with a 0-100 quality score.
Should I use this
Quality & Safety
Findings (1)
- LOWin fetch
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"catalog": {
"url": "https://dimhour-mcp.jakeoborn.workers.dev/mcp"
}
}
}Remote endpoints
https://dimhour-mcp.jakeoborn.workers.dev/mcpstreamable-httphttps://dimhour-mcp.jakeoborn.workers.dev/ssessehttps://mcp.dimhour.com/mcpstreamable-httphttps://mcp.dimhour.com/ssesseWhat it can do
Tool inventory
Tools (9)
🟢list_cities
List the 24 cities Dim Hour covers, with the city key to pass to the other tools.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"name": {
"type": "string"
},
"state": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"city",
"state"
]
},
"children": {
"type": "array",
"items": {
"type": "string"
}
},
"parent": {
"type": "string"
}
},
"required": [
"key",
"name",
"state",
"kind"
],
"additionalProperties": false
}
}
},
"required": [
"cities"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_venues(city, query, neighborhood, cuisine, max_price, ...)
Search Dim Hour's restaurant, bar and venue catalog. Pass `city` to search one city, or OMIT `city` to search more than 20,000 venues across every city at once (e.g. 'best ramen anywhere', 'michelin spots'). Returns ranked matches with score (0-100 quality), price tier, neighborhood, happy-hour info, and a dimhour.com link. Free-text `query` matches each content word individually across cuisine, dish, vibe, and name (filler like 'best' or 'tonight' is ignored) - one strong keyword beats a sentence; combine with filters.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name or key, e.g. 'NYC', 'dallas'. OMIT to search ALL cities at once."
},
"query": {
"type": "string",
"description": "Free text; every content word must appear in name, cuisine, neighborhood, tags, dishes, or description (filler like 'best'/'tonight' is ignored). One strong keyword beats a full sentence."
},
"neighborhood": {
"type": "string",
"description": "Filter to a neighborhood (substring match)"
},
"cuisine": {
"type": "string",
"description": "Filter to a cuisine (substring match)"
},
"max_price": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Max price tier 1-4 ($-$$$$)"
},
"min_score": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Minimum quality score 0-100"
},
"happy_hour_only": {
"type": "boolean",
"description": "Only venues with happy hour info"
},
"awards_contains": {
"type": "string",
"description": "Only venues whose awards field matches, e.g. 'michelin', 'james beard', 'bib gourmand'"
},
"iconic_only": {
"type": "boolean",
"description": "Only 'Iconic 50' venues (NYC has these today)"
},
"trending_only": {
"type": "boolean",
"description": "Only trending venues"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max results, default 10"
},
"sort": {
"type": "string",
"enum": [
"score_desc",
"score_asc",
"name_asc"
],
"description": "Result order. Default score_desc (highest quality first)."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Return only these fields on each venue, to keep a result small. `id`, `name` and `url` are always included — `url` is the citation link."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"scope": {
"type": "string"
},
"city": {
"type": "string"
},
"total_matches": {
"type": "number"
},
"total_exact": {
"type": "boolean"
},
"showing": {
"type": "number"
},
"note": {
"type": "string"
},
"venues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"score": {
"type": "number"
},
"price": {
"type": "string"
},
"happy_hour": {
"type": "string"
},
"reservation": {
"type": "string"
},
"awards": {
"type": "string"
},
"opened": {
"type": "string"
},
"iconic": {
"type": "boolean"
},
"trending": {
"type": "boolean"
},
"description": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"name",
"cuisine",
"neighborhood",
"happy_hour",
"reservation",
"description",
"url"
],
"additionalProperties": false
}
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"total_matches",
"total_exact",
"showing",
"venues",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_new_venues(city, days, limit)
Venues recently added to the Dim Hour catalog — across all 24 cities or one city. Use for 'what's new on Dim Hour' / new-opening alerts / weekly digests. Scored places to eat and drink come first; hotels, malls, museums and landmarks carry no `score` and follow them. Recency orders within each group. Dates earlier than 2026-06-06 are estimates reconstructed from history.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Optional city name or key; omit for all cities"
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 90,
"description": "Look-back window in days, default 30 (max 90)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max results, default 25"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"window_days": {
"type": "number"
},
"city": {
"type": "string"
},
"total_new": {
"type": "number"
},
"showing": {
"type": "number"
},
"feed_generated": {
"type": "string"
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
},
"venues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"city_name": {
"type": "string"
},
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"score": {
"type": "number"
},
"price": {
"type": "string"
},
"awards": {
"type": "string"
},
"happy_hour": {
"type": "string"
},
"first_seen": {
"type": "string"
},
"url": {
"type": "string"
},
"estimated": {
"type": "boolean"
}
},
"required": [
"city",
"city_name",
"id",
"name",
"cuisine",
"neighborhood",
"awards",
"happy_hour",
"first_seen",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"window_days",
"city",
"total_new",
"showing",
"receipt",
"venues"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_venue(city, id, name)
Get the full Dim Hour record for one venue: description, signature dishes, address, hours, phone, happy hour, reservation platform, awards, website, Instagram, and (for Iconic 50 venues) the long-form story.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name or key"
},
"id": {
"type": "integer",
"description": "Venue id from search_venues"
},
"name": {
"type": "string",
"description": "Venue name (used if id not given)"
}
},
"required": [
"city"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"score": {
"type": "number"
},
"price": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string"
},
"dishes": {
"type": "array",
"items": {
"type": "string"
}
},
"highlights": {
"type": "array",
"items": {
"type": "string"
}
},
"happy_hour": {
"type": "string"
},
"address": {
"type": "string"
},
"hours": {
"type": "string"
},
"phone": {
"type": "string"
},
"reservation": {
"type": "string"
},
"awards": {
"type": "string"
},
"opened": {
"type": "string"
},
"website": {
"type": "string"
},
"instagram": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"iconic": {
"type": "boolean"
},
"trending": {
"type": "boolean"
},
"story": {
"type": "string"
},
"other_locations": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string"
},
"city_name": {
"type": "string"
},
"price_tier": {
"type": "number"
},
"photoUrl": {
"type": "string"
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"id",
"name",
"cuisine",
"neighborhood",
"tags",
"description",
"dishes",
"happy_hour",
"address",
"hours",
"phone",
"reservation",
"awards",
"website",
"instagram",
"url",
"city_name",
"photoUrl",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search(query)
Search Dim Hour's restaurant, bar and venue catalog across all 24 cities. Returns ranked venues with a dimhour.com link for each. Use for questions about where to eat or drink — by cuisine, dish, neighborhood, city, vibe, or award.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to look for, e.g. 'best ramen in NYC', 'michelin dallas', 'rooftop bar miami'"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"additionalProperties": false
}
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"results",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢fetch(id)
Get the full Dim Hour record for one venue by the id returned from `search`: description, signature dishes, address, hours, phone, happy hour, reservation platform, awards, website and Instagram.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Venue id from `search`, in the form 'city:id' e.g. 'nyc:1367'"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"id",
"title",
"text",
"url",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_curated(city, list_id)
Dim Hour's editorial themed lists for a city (e.g. 'Unmarked Doors' speakeasies). Without list_id: returns all list titles. With list_id: returns that list's venues with editorial notes.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name or key"
},
"list_id": {
"type": "string",
"description": "A list id from the no-arg call"
}
},
"required": [
"city"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"note": {
"type": "string"
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
},
"lists": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"venue_count": {
"type": "number"
}
},
"required": [
"id",
"title",
"subtitle",
"venue_count"
],
"additionalProperties": false
}
},
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"venues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"note": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"price": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"note",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"city",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢find_places(city, looking_for, neighborhood, max_price, limit)
Find places for a specific occasion in one city — the task-shaped entry point. Give the city and what the evening needs (a cuisine, a neighborhood, a budget, a vibe) and it returns ranked, citable venues with a freshness receipt. Prefer this over search_venues when you are planning rather than browsing.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name or key from list_cities"
},
"looking_for": {
"type": "string",
"description": "What the occasion needs, e.g. 'omakase', 'patio', 'birthday dinner'"
},
"neighborhood": {
"type": "string",
"description": "Narrow to a neighborhood"
},
"max_price": {
"type": "integer",
"minimum": 1,
"maximum": 4,
"description": "Max price tier 1-4"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max results, default 6"
}
},
"required": [
"city"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"total_matches": {
"type": "number"
},
"showing": {
"type": "number"
},
"note": {
"type": "string"
},
"venues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"cuisine": {
"type": "string"
},
"neighborhood": {
"type": "string"
},
"score": {
"type": "number"
},
"price": {
"type": "string"
},
"happy_hour": {
"type": "string"
},
"reservation": {
"type": "string"
},
"awards": {
"type": "string"
},
"opened": {
"type": "string"
},
"iconic": {
"type": "boolean"
},
"trending": {
"type": "boolean"
},
"description": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"name",
"cuisine",
"neighborhood",
"happy_hour",
"reservation",
"description",
"url"
],
"additionalProperties": false
}
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"city",
"total_matches",
"showing",
"venues",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_hours(city, id, name)
Opening hours for one venue, from the Dim Hour catalog. ALWAYS returns `as_of` and never claims to be live — hours are catalog data, not a live feed, and the receipt says how old they are. Measured 2026-09-16, 82% of venues carry hours; when a venue has none this ABSTAINS and says so rather than guessing. Confirm with the venue before relying on it.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name or key"
},
"id": {
"type": "integer",
"description": "Venue id from search_venues"
},
"name": {
"type": "string",
"description": "Venue name (used if id not given)"
}
},
"required": [
"city"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"hours": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
},
"receipt": {
"type": "object",
"properties": {
"as_of": {
"type": [
"string",
"null"
]
},
"as_of_scope": {
"type": "string"
},
"source": {
"type": "string"
},
"abstained": {
"type": "boolean"
},
"stale": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"as_of_scope",
"source",
"abstained",
"stale",
"reason"
],
"additionalProperties": false
}
},
"required": [
"city",
"id",
"name",
"hours",
"url",
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence