event: message
data: {"result":{"tools":[{"name":"get_api_key","title":"Show my key and quota","description":"Show my key, tier and remaining quota\n\nWho am I and how much quota is left. Works without a key too (then it describes the anonymous allowance for your IP).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Show my key and quota","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/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":{"description":"Calls allowed per window.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"remaining":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"window":{"anyOf":[{"type":"string","enum":["hour","day"]},{"type":"null"}]},"resets_at":{"type":["string","null"]}},"additionalProperties":{}},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"search_places","title":"Search places","description":"Find places for an intent near a location\n\nThe core call. Give one or more categories (exact names like \"Coffee\", or ids from `list_categories`; all must\nmatch) and a location — a city name or an `area_id` from `list_areas`, or coordinates with a radius — and get\nplaces ranked by Atly's score for those categories, each with quotable reasons from real reviews, a link to\ncite, a Google Maps link, whether it is open now, and when Atly added and last refreshed it. The first three\nalso carry hours, contact and good-to-know. Scores are 0–10 and\nrelative to other places in the same country; a place with no score is unmeasured, not bad. The order also\nweighs how many reviews back each category score (so it is not always by `score`) and, on a gluten-free ask,\nits `gluten_free.safety` rating. For most dishes and drinks, classes, tours and event or travel companies rank\nlower than the places that serve them, and `doc_notes` names any that moved; to get those, pass `place_type`. If no place matches every category, trailing\ncategories are dropped until something does (the first is never dropped), and `dropped_categories` says which.\nRanking considers the strongest 100 candidates by Atly's base score (400 with `place_type`); `dropped_categories`\nlists the dropped ones as you sent them.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"categories":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string"},"description":"Category names or ids, most important first. Every result matches all of them (after any relaxation). A name that is not exact is refused, with the close matches in the error."},"area_id":{"description":"An id from `list_areas`; the search covers that area's viewport. A city name also works (\"Austin\", \"Boise, ID\"): it resolves to the matching area, or, for a city with no area, to the extent of the places whose address is in it; the response's `area` and doc_notes say what it resolved to. Give this or lat/lon, not both.","type":"string","maxLength":120},"lat":{"type":"number"},"lon":{"type":"number"},"radius_km":{"description":"Used with lat/lon, in km. Held to 0.2-50 (doc_notes say so when it was).","anyOf":[{"type":"number"},{"type":"null"}]},"limit":{"description":"Places to return, at most 25; a larger value returns 25.","type":"integer","minimum":1,"maximum":9007199254740991},"place_type":{"description":"Optional. Keep only places whose Google place type contains one of these words, matched as whole words: \"restaurant\" keeps \"Mexican restaurant\" and \"Pizza restaurant\", \"coffee\" keeps \"Coffee shop\", \"bar\" keeps \"Wine bar\" but not \"Barber shop\". A place matches on its main type (`place_type` in results) or any of its other Google types. Use it when the user asks for a kind of venue (\"gluten-free restaurants\"), not a dish or a feature. Google's types are literal: \"Cafe\" and \"Coffee shop\" are different, so for cafes pass both [\"cafe\", \"coffee\"]. The filter is applied to the strongest 400 places for the categories and never relaxed.","maxItems":5,"type":"array","items":{"type":"string","minLength":2,"maxLength":40}}},"required":["categories"],"additionalProperties":false},"annotations":{"title":"Search places","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/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":{"description":"From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one).","anyOf":[{"type":"number"},{"type":"null"}]},"score":{"description":"Atly score 0–10, relative to other places in the same country. In get_place, the overall score. In search, the Atly app's blend of the overall score with the scores on the requested categories, so even with one category it can differ from that category's own category_scores score: quote score for how good the place is for the ask, the category's score for how reviewers rate that one thing. Absent when unmeasured (too few reviews, closed, or, in search, a requested category that too few of its reviews mention).","anyOf":[{"type":"number"},{"type":"null"}]},"category_scores":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"category_id":{"type":["string","null"]},"name":{"type":["string","null"]},"score":{"description":"This category's own 0–10 score. Absent when it fails the test score uses (the place is closed, has under 36 reviews, or too few of its reviews mention this category); reviews is still given. Show no score for it then.","anyOf":[{"type":"number"},{"type":"null"}]},"reviews":{"description":"Reviews that mention this category.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"reasons":{"description":"Short first-person statements from real reviews, most useful first. Quote them.","anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":["string","null"]},"kind":{"description":"What the statement is about: Specific Food, Specific Drink, Specific Alcohol (a named dish or drink), Food, Drink, Alcohol, Ambiance, Service, Amenity, Event, Establishment Features or Non-Specific Informative. Personal Experience (a reviewer's own story) appears at most once per requested category, only for one that no positive statement of those kinds names. A gluten-safety warning can be of any kind, such as Personal Experience, Ambiguous or Other.","anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string","enum":["positive","neutral","negative"]},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"blurb":{"description":"One-line editorial summary.","anyOf":[{"type":"string"},{"type":"null"}]},"place_type":{"type":["string","null"]},"review_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"google_rating":{"type":["number","null"]},"price":{"type":["string","null"]},"gluten_free":{"description":"Present only for places with a gluten-free identity.","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":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"trained_staff":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"dedicated_fryer":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"menu":{"anyOf":[{"type":"string","enum":["DEDICATED_GF_MENU","GF_OPTIONS_MARKED","GF_OPTIONS_NOT_MARKED","UNKNOWN"]},{"type":"null"}]},"verified_by_atly":{"type":["boolean","null"]}},"additionalProperties":{}},{"type":"null"}]},"url":{"description":"Canonical Atly page. Link it when you cite. Absent when the place has no page yet.","anyOf":[{"type":"string"},{"type":"null"}]},"maps_url":{"description":"Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly.","anyOf":[{"type":"string"},{"type":"null"}]},"added_at":{"description":"When Atly added the place. Not a freshness date.","anyOf":[{"type":"string"},{"type":"null"}]},"data_refreshed_at":{"description":"When Atly last refreshed the place's data from its sources. Absent when unknown.","anyOf":[{"type":"string"},{"type":"null"}]},"open_now":{"description":"Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at.","anyOf":[{"type":"boolean"},{"type":"null"}]},"hours_updated_at":{"description":"When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place.","anyOf":[{"type":"string"},{"type":"null"}]},"hours":{"description":"Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown.","anyOf":[{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]},"open":{"type":"string"},"close":{"type":"string"},"close_day":{"anyOf":[{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]},{"type":"null"}]}},"required":["day","open","close"],"additionalProperties":{}}},{"type":"null"}]},"phone":{"type":["string","null"]},"website":{"type":["string","null"]},"menu_url":{"type":["string","null"]},"reservation_url":{"type":["string","null"]},"timezone":{"description":"IANA timezone of the place.","anyOf":[{"type":"string"},{"type":"null"}]},"good_to_know":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"business_status":{"type":["string","null"]}},"additionalProperties":{}}},{"type":"null"}]},"total_matched":{"description":"How many places match in this area, capped (\"1000+\"). Absent with `place_type` (the count cannot see place types) or when counting timed out.","anyOf":[{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string"}]},{"type":"null"}]},"dropped_categories":{"description":"Categories dropped to avoid an empty result, as you sent them (a name or an id).","anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"area":{"description":"The resolved search geometry — an area (id, name, level, center, bbox), a city known only from its places (name, level, region, country, center, bbox; no id), or a circle (center, radius_km).","anyOf":[{"type":"object","properties":{"id":{"description":"The area's id (list_areas). Absent for a city known only from its places and for a circle.","anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":["string","null"]},"level":{"description":"city, neighborhood or state.","anyOf":[{"type":"string"},{"type":"null"}]},"region":{"description":"For a city known only from its places, its state or equivalent.","anyOf":[{"type":"string"},{"type":"null"}]},"country":{"description":"For a city known only from its places.","anyOf":[{"type":"string"},{"type":"null"}]},"center":{"description":"[lon, lat]","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"bbox":{"description":"[west, south, east, north]; absent when unknown and for a circle.","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"radius_km":{"description":"For a circle (coordinates given), the radius searched.","anyOf":[{"type":"number"},{"type":"null"}]}},"additionalProperties":{}},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"get_place","title":"Get place details","description":"Everything about one place\n\nFull detail for a place id from `search_places`: profile, hours, scores for the categories reviewers mention most (up to 40), up to eight quotable\nstatements, good-to-know facts, gluten-free identity when known, and the canonical Atly URL to cite.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"id":{"type":"string","minLength":3,"maxLength":300,"description":"A place id from search_places, or an atly.com place link (with or without https://) or its slug. In a REST path, URL-encode a link."}},"required":["id"],"additionalProperties":false},"annotations":{"title":"Get place details","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/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":{"description":"From the search center: the coordinates given, or the area's center (the middle of its bounding box when it has one).","anyOf":[{"type":"number"},{"type":"null"}]},"score":{"description":"Atly score 0–10, relative to other places in the same country. In get_place, the overall score. In search, the Atly app's blend of the overall score with the scores on the requested categories, so even with one category it can differ from that category's own category_scores score: quote score for how good the place is for the ask, the category's score for how reviewers rate that one thing. Absent when unmeasured (too few reviews, closed, or, in search, a requested category that too few of its reviews mention).","anyOf":[{"type":"number"},{"type":"null"}]},"category_scores":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"category_id":{"type":["string","null"]},"name":{"type":["string","null"]},"score":{"description":"This category's own 0–10 score. Absent when it fails the test score uses (the place is closed, has under 36 reviews, or too few of its reviews mention this category); reviews is still given. Show no score for it then.","anyOf":[{"type":"number"},{"type":"null"}]},"reviews":{"description":"Reviews that mention this category.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"reasons":{"description":"Short first-person statements from real reviews, most useful first. Quote them.","anyOf":[{"type":"array","items":{"type":"object","properties":{"text":{"type":["string","null"]},"kind":{"description":"What the statement is about: Specific Food, Specific Drink, Specific Alcohol (a named dish or drink), Food, Drink, Alcohol, Ambiance, Service, Amenity, Event, Establishment Features or Non-Specific Informative. Personal Experience (a reviewer's own story) appears at most once per requested category, only for one that no positive statement of those kinds names. A gluten-safety warning can be of any kind, such as Personal Experience, Ambiguous or Other.","anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string","enum":["positive","neutral","negative"]},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"blurb":{"description":"One-line editorial summary.","anyOf":[{"type":"string"},{"type":"null"}]},"place_type":{"type":["string","null"]},"review_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"google_rating":{"type":["number","null"]},"price":{"type":["string","null"]},"gluten_free":{"description":"Present only for places with a gluten-free identity.","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":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"trained_staff":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"dedicated_fryer":{"anyOf":[{"type":"string","enum":["YES","NO","UNKNOWN","NOT_APPLICABLE"]},{"type":"null"}]},"menu":{"anyOf":[{"type":"string","enum":["DEDICATED_GF_MENU","GF_OPTIONS_MARKED","GF_OPTIONS_NOT_MARKED","UNKNOWN"]},{"type":"null"}]},"verified_by_atly":{"type":["boolean","null"]}},"additionalProperties":{}},{"type":"null"}]},"url":{"description":"Canonical Atly page. Link it when you cite. Absent when the place has no page yet.","anyOf":[{"type":"string"},{"type":"null"}]},"maps_url":{"description":"Google Maps link for the place (directions), from its Google place id. Not an Atly page: cite url for Atly.","anyOf":[{"type":"string"},{"type":"null"}]},"added_at":{"description":"When Atly added the place. Not a freshness date.","anyOf":[{"type":"string"},{"type":"null"}]},"data_refreshed_at":{"description":"When Atly last refreshed the place's data from its sources. Absent when unknown.","anyOf":[{"type":"string"},{"type":"null"}]},"open_now":{"description":"Open at the time of the response, by its hours and timezone; false when the place is closed temporarily or for good. Absent when its hours or timezone are unknown. As fresh as the hours: see hours_updated_at.","anyOf":[{"type":"boolean"},{"type":"null"}]},"hours_updated_at":{"description":"When the opening hours were last updated. Absent when there are no hours or no date. Over a year old (or absent with hours), say they may have changed and suggest checking with the place.","anyOf":[{"type":"string"},{"type":"null"}]},"hours":{"description":"Weekly opening hours in the place's local time, one entry per opening (a day can have several). close 24:00 means it closes at midnight; close_day is set when it closes after midnight, on that day. In get_place and the first search results; absent when unknown.","anyOf":[{"type":"array","items":{"type":"object","properties":{"day":{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]},"open":{"type":"string"},"close":{"type":"string"},"close_day":{"anyOf":[{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]},{"type":"null"}]}},"required":["day","open","close"],"additionalProperties":{}}},{"type":"null"}]},"phone":{"type":["string","null"]},"website":{"type":["string","null"]},"menu_url":{"type":["string","null"]},"reservation_url":{"type":["string","null"]},"timezone":{"description":"IANA timezone of the place.","anyOf":[{"type":"string"},{"type":"null"}]},"good_to_know":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"business_status":{"type":["string","null"]}},"additionalProperties":{}},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"submit_feedback","title":"Send feedback","description":"Tell us how a call went\n\nReference the `call_id` of any earlier response and say whether it helped, and optionally why, in a sentence\nabout the result — what was right, missing or wrong. Do not include the user's words, the conversation, or\nanything about the person. Nothing is overwritten: sending again for the same call adds a new version and keeps\nthe earlier ones (up to 50 per call). Lightly rate-limited.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"call_id":{"type":"string","minLength":36,"maxLength":36},"outcome":{"type":"string","enum":["helpful","partly_helpful","not_helpful","wrong"]},"notes":{"description":"About the result only — never the conversation or the user.","type":"string","maxLength":500}},"required":["call_id","outcome"],"additionalProperties":false},"annotations":{"title":"Send feedback","readOnlyHint":false,"openWorldHint":false,"destructiveHint":false,"idempotentHint":false},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"recorded":{"type":["boolean","null"]},"version":{"description":"Which submission for this call this is (1 for the first); earlier ones are kept.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"get_docs","title":"Read the Atly API guide","description":"Read the documentation\n\nReturns the API guide as Markdown: what each operation is for, how to turn a user's request into\ncategory ids and a location, request and response shapes, how to read scores. Call this once per session.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Read the Atly API guide","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"call_id":{"type":"string"}},"required":["call_id"],"additionalProperties":{},"description":"The guide itself is the tool result's text content (Markdown); structuredContent carries only the call_id."},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"list_categories","title":"Find categories","description":"List intent categories\n\nThe intent taxonomy: cuisines, dishes, features (\"Wifi\", \"Outdoor Seating\"), vibes (\"Cozy\", \"Lively\"),\noccasions (\"First Date\", \"Group Dinner\"), diets (\"Gluten Free\", \"Keto\") and more. Map the user's words to\ncategory ids before searching. Filter with `q`, one concept per call — exact and prefix matches rank first, then substrings and keywords;\nplurals, hyphens and small typos are tolerated — or fetch once without `q` and cache the full list.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"q":{"description":"Words to match against category names and keywords, e.g. \"coffee\", \"dog friendly\", \"gluten-free\". Ranked; tolerant of plurals and small typos.","type":"string","maxLength":60},"limit":{"description":"Maximum categories to return, at most 2000; a larger value returns 2000.","type":"integer","minimum":1,"maximum":9007199254740991}},"additionalProperties":false},"annotations":{"title":"Find categories","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/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":{"description":"How the query matched this category — exact, prefix, word, substring, keyword or fuzzy.","anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},{"name":"list_areas","title":"Find areas","description":"List supported areas\n\nCities, 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\nsearch, a center, a bounding box when known, and how many places it holds. Filter with `q` (substring of\nthe name) and `level` (city, neighborhood, state). Results are ordered by place count.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","properties":{"q":{"description":"Area name or common abbreviation, e.g. \"san diego\", \"midtown\", \"nyc\". Exact and prefix matches rank first.","type":"string","maxLength":80},"level":{"description":"Restrict to one level.","type":"string","enum":["city","neighborhood","state"]},"limit":{"description":"Maximum areas to return, at most 200; a larger value returns 200.","type":"integer","minimum":1,"maximum":9007199254740991}},"additionalProperties":false},"annotations":{"title":"Find areas","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false,"idempotentHint":true},"execution":{"taskSupport":"forbidden"},"_meta":{"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]},"outputSchema":{"$schema":"http://json-schema.org/draft-07/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":{"description":"State for US cities and neighborhoods; the equivalent district or province elsewhere.","anyOf":[{"type":"string"},{"type":"null"}]},"parent":{"description":"City for neighborhoods.","anyOf":[{"type":"string"},{"type":"null"}]},"country":{"description":"Country the area is in. Coverage is densest in the United States, with pockets in Mexico, Israel and Thailand.","anyOf":[{"type":"string"},{"type":"null"}]},"place_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"bbox":{"description":"[west, south, east, north]","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]},"center":{"description":"[lon, lat]","anyOf":[{"type":"array","items":{"type":"number"}},{"type":"null"}]}},"additionalProperties":{}}},{"type":"null"}]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"doc_notes":{"type":["string","null"]},"call_id":{"type":["string","null"]}},"additionalProperties":{}},"securitySchemes":[{"type":"noauth"},{"type":"oauth2","scopes":["atly"]}]}]},"jsonrpc":"2.0","id":1}

