Atly
Find places by what you want (work friendly, gluten free, great coffee), scored from real reviews.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"places": {
"url": "https://agentic-api.atly.com/mcp"
}
}
}Remote-Endpunkte
https://agentic-api.atly.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (7)
🟢get_api_key
Show my key, tier and remaining quota Who am I and how much quota is left. Works without a key too (then it describes the anonymous allowance for your IP).
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"key_id": {
"type": [
"string",
"null"
]
},
"label": {
"type": [
"string",
"null"
]
},
"tier": {
"anyOf": [
{
"type": "string",
"enum": [
"anonymous",
"unverified",
"verified"
]
},
{
"type": "null"
}
]
},
"email_verified": {
"type": [
"boolean",
"null"
]
},
"quota": {
"anyOf": [
{
"type": "object",
"properties": {
"limit": {
"anyOf": [
{
"type": "integer",
"description": "Calls allowed per window."
},
{
"type": "null"
}
],
"description": "Calls allowed per window."
},
"remaining": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"window": {
"anyOf": [
{
"type": "string",
"enum": [
"hour",
"day"
]
},
{
"type": "null"
}
]
},
"resets_at": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_places(categories, area_id, lat, lon, radius_km, ...)
Find places for an intent near a location The core call. Give one or more category ids (from `list_categories`; all must match) and a location — either an `area_id` from `list_areas` or coordinates with a radius — and get places ranked by Atly's score for those categories, each with quotable reasons from real reviews, a link to cite, and freshness. Scores are 0–10 and relative to the area; a place with no score is unmeasured, not bad. If no place matches every category, trailing categories are dropped until something does (the first is never dropped), and `dropped_categories` says which. Ranking considers the strongest 100 candidates by Atly's base score. Scores are relative to other places in the same country.
Eingabe-Schema
{
"type": "object",
"properties": {
"categories": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 5,
"description": "Category ids, most important first. Every result matches all of them (after any relaxation)."
},
"area_id": {
"type": "string",
"description": "An id from `list_areas`; the search covers that area's viewport. Give this or lat/lon, not both."
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"radius_km": {
"type": "number",
"description": "Used with lat/lon."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25
}
},
"required": [
"categories"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"places": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"address": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lon": {
"type": [
"number",
"null"
]
},
"distance_km": {
"type": [
"number",
"null"
],
"description": "From the search center."
},
"score": {
"type": [
"number",
"null"
],
"description": "Atly score 0–10 — for the requested categories in search"
},
"category_scores": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"category_id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"reviews": {
"anyOf": [
{
"type": "integer",
"description": "Reviews that mention this category."
},
{
"type": "null"
}
],
"description": "Reviews that mention this category."
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"reasons": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"kind": {
"type": [
"string",
"null"
]
},
"sentiment": {
"anyOf": [
{
"type": "string",
"enum": [
"positive",
"neutral",
"negative"
]
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"description": "Short first-person statements from real reviews, most useful first. Quote them."
},
{
"type": "null"
}
],
"description": "Short first-person statements from real reviews, most useful first. Quote them."
},
"blurb": {
"type": [
"string",
"null"
],
"description": "One-line editorial summary."
},
"place_type": {
"type": [
"string",
"null"
]
},
"review_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"google_rating": {
"type": [
"number",
"null"
]
},
"price": {
"type": [
"string",
"null"
]
},
"gluten_free": {
"anyOf": [
{
"type": "object",
"properties": {
"safety": {
"anyOf": [
{
"type": "string",
"enum": [
"100% dedicated gluten-free",
"celiac friendly (low risk of cross-contamination)",
"accommodating (some risk of cross-contamination)",
"discuss cross-contamination with staff"
]
},
{
"type": "null"
}
]
},
"dedicated_kitchen": {
"type": [
"string",
"null"
]
},
"trained_staff": {
"type": [
"string",
"null"
]
},
"dedicated_fryer": {
"type": [
"string",
"null"
]
},
"menu": {
"type": [
"string",
"null"
]
},
"verified_by_atly": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": false,
"description": "Present only for places with a gluten-free identity."
},
{
"type": "null"
}
],
"description": "Present only for places with a gluten-free identity."
},
"url": {
"type": [
"string",
"null"
],
"description": "Canonical Atly page. Link it when you cite."
},
"last_updated": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"total_matched": {
"anyOf": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "How many places match in this area, capped (\"1000+\"). Absent when counting timed out."
},
{
"type": "null"
}
],
"description": "How many places match in this area, capped (\"1000+\"). Absent when counting timed out."
},
"dropped_categories": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"description": "Category ids dropped to avoid an empty result."
},
{
"type": "null"
}
],
"description": "Category ids dropped to avoid an empty result."
},
"area": {
"anyOf": [
{
"type": "object",
"properties": {},
"additionalProperties": true,
"description": "The resolved search geometry — an area (id, name, level, center, bbox) or a circle (center, radius_km)."
},
{
"type": "null"
}
],
"description": "The resolved search geometry — an area (id, name, level, center, bbox) or a circle (center, radius_km)."
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_place(id)
Everything about one place Full detail for a place id from `search_places`: profile, hours, all category scores, up to eight quotable statements, good-to-know facts, gluten-free identity when known, and the canonical Atly URL to cite.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 3,
"maxLength": 40
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"place": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"address": {
"type": [
"string",
"null"
]
},
"lat": {
"type": [
"number",
"null"
]
},
"lon": {
"type": [
"number",
"null"
]
},
"distance_km": {
"type": [
"number",
"null"
],
"description": "From the search center."
},
"score": {
"type": [
"number",
"null"
],
"description": "Atly score 0–10 — for the requested categories in search"
},
"category_scores": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"category_id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"reviews": {
"anyOf": [
{
"type": "integer",
"description": "Reviews that mention this category."
},
{
"type": "null"
}
],
"description": "Reviews that mention this category."
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"reasons": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"kind": {
"type": [
"string",
"null"
]
},
"sentiment": {
"anyOf": [
{
"type": "string",
"enum": [
"positive",
"neutral",
"negative"
]
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"description": "Short first-person statements from real reviews, most useful first. Quote them."
},
{
"type": "null"
}
],
"description": "Short first-person statements from real reviews, most useful first. Quote them."
},
"blurb": {
"type": [
"string",
"null"
],
"description": "One-line editorial summary."
},
"place_type": {
"type": [
"string",
"null"
]
},
"review_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"google_rating": {
"type": [
"number",
"null"
]
},
"price": {
"type": [
"string",
"null"
]
},
"gluten_free": {
"anyOf": [
{
"type": "object",
"properties": {
"safety": {
"anyOf": [
{
"type": "string",
"enum": [
"100% dedicated gluten-free",
"celiac friendly (low risk of cross-contamination)",
"accommodating (some risk of cross-contamination)",
"discuss cross-contamination with staff"
]
},
{
"type": "null"
}
]
},
"dedicated_kitchen": {
"type": [
"string",
"null"
]
},
"trained_staff": {
"type": [
"string",
"null"
]
},
"dedicated_fryer": {
"type": [
"string",
"null"
]
},
"menu": {
"type": [
"string",
"null"
]
},
"verified_by_atly": {
"type": [
"boolean",
"null"
]
}
},
"additionalProperties": false,
"description": "Present only for places with a gluten-free identity."
},
{
"type": "null"
}
],
"description": "Present only for places with a gluten-free identity."
},
"url": {
"type": [
"string",
"null"
],
"description": "Canonical Atly page. Link it when you cite."
},
"last_updated": {
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"website": {
"type": [
"string",
"null"
]
},
"menu_url": {
"type": [
"string",
"null"
]
},
"reservation_url": {
"type": [
"string",
"null"
]
},
"hours": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true
},
"description": "Weekly opening periods as reported by Google, when known."
},
{
"type": "null"
}
],
"description": "Weekly opening periods as reported by Google, when known."
},
"timezone": {
"type": [
"string",
"null"
]
},
"good_to_know": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"business_status": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡submit_feedback(call_id, outcome, notes)
Tell us how a call went Reference the `call_id` of any earlier response and say whether it helped, and optionally why, in a sentence about the result — what was right, missing or wrong. Do not include the user's words, the conversation, or anything about the person. One row per caller per call; lightly rate-limited.
Eingabe-Schema
{
"type": "object",
"properties": {
"call_id": {
"type": "string",
"minLength": 36,
"maxLength": 36
},
"outcome": {
"type": "string",
"enum": [
"helpful",
"partly_helpful",
"not_helpful",
"wrong"
]
},
"notes": {
"type": "string",
"maxLength": 500,
"description": "About the result only — never the conversation or the user."
}
},
"required": [
"call_id",
"outcome"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"recorded": {
"type": [
"boolean",
"null"
]
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_docs
Read the documentation Returns the API guide as Markdown: what each operation is for, how to turn a user's request into category ids and a location, request and response shapes, how to read scores. Call this once per session.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_categories(q, limit)
List intent categories The intent taxonomy: cuisines, dishes, features ("Wifi", "Outdoor Seating"), vibes ("Cozy", "Lively"), occasions ("First Date", "Group Dinner"), diets ("Gluten Free", "Keto") and more. Map the user's words to category ids before searching. Filter with `q`, one concept per call — exact and prefix matches rank first, then substrings and keywords; plurals, hyphens and small typos are tolerated — or fetch once without `q` and cache the full list.
Eingabe-Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 60,
"description": "Words to match against category names and keywords, e.g. \"coffee\", \"dog friendly\", \"gluten-free\". Ranked; tolerant of plurals and small typos."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 2000,
"description": "Maximum categories to return."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"categories": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"emoji": {
"type": [
"string",
"null"
]
},
"match": {
"type": [
"string",
"null"
],
"description": "How the query matched this category — exact"
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_areas(q, level, limit)
List supported areas Cities, neighborhoods and states Atly covers — densest in the United States, with pockets in Mexico, Israel and Thailand — each with an `id` you can pass to search, a center, a bounding box when known, and how many places it holds. Filter with `q` (substring of the name) and `level` (city, neighborhood, state). Results are ordered by place count.
Eingabe-Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 80,
"description": "Area name or common abbreviation, e.g. \"san diego\", \"midtown\", \"nyc\". Exact and prefix matches rank first."
},
"level": {
"type": "string",
"enum": [
"city",
"neighborhood",
"state"
],
"description": "Restrict to one level."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"areas": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"level": {
"type": [
"string",
"null"
]
},
"region": {
"type": [
"string",
"null"
],
"description": "State for US cities and neighborhoods; the equivalent district or province elsewhere."
},
"parent": {
"type": [
"string",
"null"
],
"description": "City for neighborhoods."
},
"country": {
"type": [
"string",
"null"
],
"description": "Country the area is in. Coverage is densest in the United States"
},
"place_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"bbox": {
"anyOf": [
{
"type": "array",
"items": {
"type": "number"
},
"description": "[west, south, east, north]"
},
{
"type": "null"
}
],
"description": "[west, south, east, north]"
},
"center": {
"anyOf": [
{
"type": "array",
"items": {
"type": "number"
},
"description": "[lon, lat]"
},
{
"type": "null"
}
],
"description": "[lon, lat]"
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"doc_notes": {
"type": [
"string",
"null"
]
},
"call_id": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis